How to create and manage kvm virtual machines via command line

Работа с kvm в debian или ubuntu из командной строки

Используйте команду для установки виртуальной машины KVM (вы должны сделать все приготовления для предыдущего сообщения в блоге)

Используйте virt-install для установки виртуальной машины и используйте virt-install для определения конфигурации оборудования виртуальной машины.

Измените конфигурацию виртуальной машины

группа! Все элементы необходимо изменить, так же, как графическая установка centos.

Изменить часовой пояс, выберите 2, чтобы изменить часовой пояс
Раздел жесткого диска

Выберите жесткий диск для установки системы Вот жесткий диск, выберите этот жесткий диск, c — сохранить

Выберите место на жестком диске

Для установки требуется разбить жесткий диск на разделы. Выберите пространство, которое будет использоваться для цели установки. Используйте все пространство здесь

Варианты перегородок

Выберите конфигурацию схемы разделов, по умолчанию все в порядке

Изменить пароль root
начать установку

Нажмите b, чтобы начать установку Нажмите Enter, чтобы продолжить

войти в систему
Измените IP-адрес (настройте KVM для подключения к Интернету)
ssh тестовое соединение
Выключите виртуальную машину
Запустите виртуальную машину
Настроить параметры виртуальной машины
Консольное подключение к виртуальной машине

Установка виртуальной машины Ubuntu 16.04 на KVM

В качестве гостевой системы установим Ubuntu 16.04 с GUI. Также для меня пути по умолчанию не годятся:

  • — ISO-образы для установки гостевых систем;
  • — образы жестких дисков гостевых систем;
  • — тут следует искать все логи;
  • — каталог с файлами конфигурации.

Поэтому создаём директорию , а в ней две директории для ISO образов и образов наших гостевых ОС.

Качаем ISO-образ системы в директорию созданную ранее:

После завершения скачивания создадим нашу виртуальную машину на дистрибутиве Ubuntu Desktop 16.04 с 2 CPU, 2 Гб RAM и 20 Гб места на диске, подключенную к сети br0.:

Теперь давайте разберемся что же мы тут написали: — имя виртуальной машины — количество выделенной памяти. — количество ядер выделенных профессоров — оптимизация под конкретную гостевую ОС. — автоматический запуск гостевой ОС. — расположение iso образа устанавливаемой ОС. — к какой сети будет подключена наша виртуальная машина, — модель сетевого адаптера. — способ подключения к нашей гостевой ОС (в данном случае vnc), — на каких IP интерфейсах принимать соединения и с каким паролем). — расположение образа виртуального hdd (диска), — размер диска 20 Гбайт.

Архитектура Veeam Backup & Replication

Решение Veeam Backup & Replication предназначено для обеспечения резервного копирования, репликации и восстановления из резервной копии отдельных данных и виртуальных машин целиком. Ключевыми компонентами архитектуры решения являются:

  • Сервер резервного копирования. В качестве такового может выступать как физический, так и виртуальный сервер, на который был установлен продукт Veeam Backup & Replication. Основная роль этого сервера — управление всей инфраструктурой резервного копирования.
  • Хосты виртуализации. Это «боевые» (исходные) хосты Microsoft Hyper-V или VMware ESX(i) (в зависимости от среды, в которой решение разворачивается), виртуальные машины и данные которых подлежат резервному копированию, а также подобные им хосты, выступающие в роли целевых для восстановления и репликации.
  • Прокси-сервер. Это компонент, который отвечает за сбор данных с «боевого» хоста или репозитория (при восстановлении данных), их обработку и передачу на целевой хост.
  • Репозиторий. Непосредственно хранилище всех формируемых резервных копий, которые могут потребоваться в процессе восстановления.

Рисунок 1. Архитектура решения Veeam Backup & Replication

Если в организации используется несколько серверов резервного копирования, которые еще и территориально разнесены по разным площадкам, то задачу управления упростит упомянутый нами ранее Veeam Backup Enterprise Manager. Этот компонент предоставляет собой веб-консоль управления распределенной инфраструктурой резервного копирования.

Рисунок 2. Распределенная инфраструктура резервного копирования Veeam Backup & Replication

Создание дополнительного диска

На гипервизоре в графической среде создаём новый диск аналогично пробросу существующего (см. выше), только вместо добавления пула можем выбрать уже имеющийся (но можно и создать новый), где будем хранить файл с виртуальным жёским диском, затем

  • Создаём диск, нажимая на зелёный плюс в «Списке томов»
  • Указываем название диска, его формат и размер и жмём Готово. Большие диски (больше терабайта) могут создаваться довольно долго (десятки секунд, а то и несколько минут).

На виртуальной машине проверяем, что диск появился:

lsblk -o NAME,SIZE,FSTYPE,TYPE,MOUNTPOINT | grep vd

vda 40G disk
├─vda1 512M vfat part /boot/efi
├─vda2 1K part
└─vda5 39,5G ext4 part /
vdb 3T disk

Так как мы создали новый диск (vdb), то его нужно отформатировать. Команда для файловой системы ext4:

sudo mkfs.ext4 /dev/vdb

Узнаём его UUID:

sudo blkid | grep vd

/dev/vda5: UUID=»77d3f8bf-d366-4c36-b992-445c8451536b» TYPE=»ext4″ PARTUUID=»09b1ab8e-05″
/dev/vda1: UUID=»DA46-6D03″ TYPE=»vfat» PARTUUID=»09b1ab8e-01″
/dev/vdb: UUID=»7885f1cf-5ed1-4405-bbf1-1708c14b986e» TYPE=»ext4″

Создаём каталог, куда будем подключать (монтировать) диск:

sudo mkdir /mnt/NextCloudData

sudo chmod 777 /mnt/NextCloudData

В автозагрузку (fstab) подключение диска при запуске ОС с помощью mcedit или любого другого редактора, но с правами администратора:

sudo mcedit /etc/fstab

добавляем следующую строку (заменив UUID и каталог подключения на свои):

UUID=7885f1cf-5ed1-4405-bbf1-1708c14b986e /mnt/NextCloudData ext4 rw,users 0 0

Проверяем список текущих подключений:

mount | grep vd

/dev/vda5 on / type ext4 (rw,relatime,errors=remount-ro)
/dev/vda1 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=utf-8,shortname=mixed,errors=remount-ro)

Подключаем заново устройства из fstab:

sudo mount -a

и смотрим список ещё раз:

mount | grep vd

/dev/vda5 on / type ext4 (rw,relatime,errors=remount-ro)
/dev/vda1 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=utf-8,shortname=mixed,errors=remount-ro)
/dev/vdb on /mnt/NextCloudData type ext4 (rw,nosuid,nodev,noexec,relatime)

или

df -h | grep vd

/dev/vda5 39G 9,6G 28G 27% /
/dev/vda1 511M 4,0K 511M 1% /boot/efi
/dev/vdb 2,9T 89M 2,8T 1% /mnt/NextCloudData

Сноски

  1. Программный RAID в Ubuntu

Постановка задачи

Имеется выделенный сервер на хостинге server4you.net и 2 выделенных IP адреса: xxx.xxx.xxx.xxx, yyy.yyy.yyy.yyy
Требуется предоставить к виртуальной машине под debian (предположим, что образ виртуальной машины с настроенным веб-сервером уже есть) доступ из интернет через ip адрес yyy.yyy.yyy.yyy
Настройку будем проводить в 3 этапа

  1. Установим гипервизор KVM под debian на выделенный сервер.
  2. Cоздадим виртуальную машину и подключим образ.
  3. Предоставим доступ из интернет к этой виртуальной машине используя ip адрес yyy.yyy.yyy.yyy

Все инструкции проверены на работу в Debian Squeeze.

Create the VM

Booting from an existing qcow2 image

virt-install \
  --name MyImportedVM \
  --description "Imported virtual machine" \
  --graphics vnc,listen=.0.0.0 \
  --noautoconsole \  
  --os-type=linux \
  --memory 8192 \
  --vcpus=4 \
  --disk path=/var/lib/libvirt/images/importedVM.qcow2,bus=virtio\
  --boot hd \
  --network bridge:br0,model=virtio

Building a new Windows VM

Windows can be difficult on KVM because it doesn’t ship with Virtio drivers. Using the non-virtio
disk and network emulation is comparatively slow. Things are made harder because
doesn’t let you use —cdrom twice. To mount two iso files at once (so virtio drivers can be installed),
use the —disk argument with device=cdrom. Also be sure to use bus=ide so Windows can read it before
installing the virtio drivers.

The virtio drivers can be downloaded here

virt-install \
  --name Server2019 \
  --description "Windows Server 2019 Template" \
  --os-type=windows \
  --memory 8192 \
  --vcpus=4 \
  --disk path=/var/lib/libvirt/images/windows2019.qcow2,bus=virtio,size=30 \
  --disk /var/lib/libvirt/isos/WindowsServer2019StandardCore_1909.iso,device=cdrom,bus=ide \
  --disk /var/lib/libvirt/isos/virtio-win.iso,device=cdrom,bus=ide \
  --graphics vnc,listen=.0.0.0 \
  --noautoconsole \
  --network bridge=br0,model=virtio
  • When installing the OS through your VNC viewer, no drives will show up.
  • Click the «Load Driver» button, and browse to the virtio iso that was mounted.
  • Expand the folder and choose your OS. Click the subdirectory. Click OK.
  • RedHat VirtIO SCSI Controller should show up, click Next
  • Finish the install

Once the install finishes the server will turn off.

Edit the server using to remove the disk:

virsh edit Server2019

Choose your editor of choice (vim, obviously), and remove the boot disk.
Leave the virtio one, you stil need it. It looks like this:

    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/var/lib/libvirt/isos/WindowsServer2019StandardCore_1909.iso'/>
      <target dev='hda' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>

Turn it back on using :

virsh start Server2019

Fix the other drivers

The storage driver is now installed, but the network driver isn’t there.
Since the VM was launched with , the VirtIO
driver is required. Not using the virtio NIC leads to some pretty terrible performance.

Log into the server and open up the device manager.
Navigate to «other devices». Right click the question marked network driver
and update the driver. Select your virtio disk and allow searching subdirectories,
it should find the driver and install it for you.

Do the same for the unidentified PCI device, that will install the VirtIO Baloon driver.

The server is now ready to use, or be made into a template. If you intend to use this server
with OpenStack later, consider installing cloud-init from cloudbase-init.

Accessing the VM through the console

When defining the VM, was used. This enabled a VNC server underneath the
VM which can be used to connect in. To find the connection details, run , which will show
the port offset of that VM’s VNC console.

virsh vncdisplay Server2019

The output will be something like or . Add 5900 to that, and that’s your listen port.
If you needed to use a different port, supports a argument.

Exporting to Glance

If you want to use this file in OpenStack Glance next, you need to convert it. It’s not intuitive, but the file looks like it’s basically a thick-provisioned qcow2 (somehow). Use qemu-img:

# thin provision the volume
qemu-img convert -f qcow2 -O qcow2 <boot-vol> <new-file.qcow2>
# upload it as an image
openstack image create --container-format bare --disk-format qcow2 --public --file <new-file.qcow2> "<image name>"

Virsh: список команд

Чтобы посмотреть запущенные виртуальные хосты (все доступные можно получить добавив —all):

Sudo virsh list

Перезагрузить хост можно:

Sudo virsh reboot $VM_NAME

Остановить виртуальную машину:

Sudo virsh stop $VM_NAME

Выполнить halt:

Sudo virsh destroy $VM_NAME

Sudo virsh start $VM_NAME

Отключение:

Sudo virsh shutdown $VM_NAME

Добавить в автозапуск:

Sudo virsh autostart $VM_NAME

Очень часто требуется склонировать систему, чтобы в будущем использовать её как каркас для других виртуальных ОС, для этого используют утилиту virt-clone.

Virt-clone —help

Она клонирует существующую виртуалку и изменяет host-sensitive данные, например, mac address. Пароли, файлы и прочая user-specific информация в клоне остаётся прежней. Если на клонируемой виртуалке IP адрес был прописан вручную, то могут возникнуть проблемы с доступом по SSH на клон из-за конфликта (2 хоста с одинаковым IP).

Помимо установки виртуалки через VNC, также возможен вариант с X11Forwarding через утилиту virt-manager. В Windows, например, для этого можно использовать Xming и PuTTY.

KVM или Kernel Virtual Module — это модуль виртуализации для ядра Linux, который позволяет превратить ваш компьютер в гипервизор для управления виртуальными машинами. Этот модуль работает на уровне ядра и поддерживает такие технологии аппаратного ускорения, как Intel VT и AMD SVM.

Само по себе программное обеспечение KVM в пространстве пользователя ничего не виртуализирует. Вместо этого, оно использует файл /dev/kvm для настройки виртуальных адресных пространств для гостевой машины в ядре. Каждая гостевая машина будет иметь свою видеокарту, сетевую и звуковую карту, жесткий диск и другое оборудование.

Также у гостевой системы не будет доступа к компонентам реальной операционной системы. Виртуальная машина выполняется в полностью изолированном пространстве. Вы можете использовать kvm как в системе с графическим интерфейсом, так и на серверах. В этой статье мы рассмотрим как выполняется установка kvm Ubuntu 16.04

Перед тем как переходить к самой установке KVM нужно проверить поддерживает ли ваш процессор аппаратное ускорение виртуализации от Intel-VT или AMD-V. Для этого выполните такую команду:

egrep -c «(vmx|svm)» /proc/cpuinfo

Если в результате будет возвращено 0 — значит ваш процессор не поддерживает аппаратной виртуализации, если 1 или больше — то вы можете использовать KVM на своей машине.

Теперь мы можем перейти к установке KVM, набор программ можно получить прямо из официальных репозиториев:

sudo apt install qemu-kvm libvirt-bin bridge-utils virt-manager cpu-checker

Мы установили не только утилиту kvm, но и библиотеку libvirt, а также менеджер виртуальных машин. После того, как установка будет завершена вам необходимо добавить своего пользователя в группу libvirtd, потому что только root и пользователи этой группы могут использовать виртуальные машины KVM:

sudo gpasswd -a ПОЛЬЗОВАТЕЛЬ libvirtd

После выполнения этой команды выйдите из системы и войдите снова. Далее, давайте проверим все ли правильно было установлено. Для этого используйте команду kvm-ok:

INFO: /dev/kvm exists
KVM acceleration can be used

Если все было сделано правильно, то вы увидите такое же сообщение.

Подключение к виртуальной машине

На компьютер, с которого планируем работать с виртуальными машинами, скачиваем VNC-клиент, например, TightVNC и устанавливаем его.

На сервере вводим:

virsh vncdisplay VM1

команда покажет, на каком порту работает VNC для машины VM1. У меня было:

:1

* :1 значит, что нужно к 5900 прибавить 1 — 5900 + 1 = 5901.

Запускаем TightVNC Viewer, который мы установили и вводим данные для подключения:

Кликаем по Connect. На запрос пароля вводим тот, что указали при создании ВМ, (vnc_password). Мы подключимся к виртуальной машине удаленной консолью.

Если мы не помним пароль, открываем настройку виртуальной машины командой:

virsh edit VM1

И находим строку:

<graphics type=’vnc’ port=’-1′ autoport=’yes’ listen=’0.0.0.0′ passwd=’12345678′>
  <listen type=’address’ address=’0.0.0.0’/>
</graphics>

* в данном примере для доступа к виртуальной машине используется пароль 12345678.

KVM: добавление диска в виртуальную машину

Сна­ча­ла нуж­но создать допол­ни­тель­ный файл дис­ка для вир­ту­аль­ной машины:

Вме­сто qcow2 вы може­те ука­зать нуж­ный фор­мат дис­ка, так же нуж­но ука­зать путь до фай­ла. У меня хра­ни­ли­ще для дис­ков /vz/disk/.

После это­го, мож­но доба­вить устрой­ство вир­ту­аль­но­го дис­ка к самой ВМ:

Оста­но­ви­те и запу­сти­те ВМ, про­верь­те что получилось:

YAML

Domain test-centos is being shutdown

1 Domaintest-centosisbeingshutdown

YAML

Domain test-centos started

1 Domaintest-centosstarted

YAML

&lt;domain type=’kvm’ id=’14’&gt;
&lt;name&gt;test-centos&lt;/name&gt;
&lt;uuid&gt;5c7eabea-a180-4f74-af9f-c4c2d3b7f70f&lt;/uuid&gt;
&lt;memory unit=’KiB’&gt;2097152&lt;/memory&gt;
&lt;currentMemory unit=’KiB’&gt;2097152&lt;/currentMemory&gt;
&lt;vcpu placement=’static’&gt;6&lt;/vcpu&gt;
&lt;resource&gt;
&lt;partition&gt;/machine&lt;/partition&gt;
&lt;/resource&gt;
&lt;os&gt;
&lt;type arch=’x86_64′ machine=’pc-i440fx-rhel7.0.0’&gt;hvm&lt;/type&gt;
&lt;boot dev=’cdrom’/&gt;
&lt;boot dev=’hd’/&gt;
&lt;bootmenu enable=’yes’/&gt;
&lt;/os&gt;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
&lt;disk type=’file’ device=’disk’&gt;
&lt;driver name=’qemu’ type=’qcow2’/&gt;
&lt;source file=’/vz/disk/test.img’/&gt;
&lt;backingStore/&gt;
&lt;target dev=’vdb’ bus=’virtio’/&gt;
&lt;alias name=’virtio-disk1’/&gt;
&lt;address type=’pci’ domain=’0x0000′ bus=’0x00′ slot=’0x09′ function=’0x0’/&gt;
&lt;/disk&gt;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

&lt;domaintype=’kvm’id=’14’&gt;

&lt;name&gt;test-centos&lt;/name&gt;

&lt;uuid&gt;5c7eabea-a180-4f74-af9f-c4c2d3b7f70f&lt;/uuid&gt;

&lt;memoryunit=’KiB’&gt;2097152&lt;/memory&gt;

&lt;currentMemoryunit=’KiB’&gt;2097152&lt;/currentMemory&gt;

&lt;vcpuplacement=’static’&gt;6&lt;/vcpu&gt;

&lt;resource&gt;

&lt;partition&gt;/machine&lt;/partition&gt;

&lt;/resource&gt;

&lt;os&gt;

&lt;typearch=’x86_64’machine=’pc-i440fx-rhel7.0.0’&gt;hvm&lt;/type&gt;

&lt;bootdev=’cdrom’/&gt;

&lt;bootdev=’hd’/&gt;

&lt;bootmenuenable=’yes’/&gt;

&lt;/os&gt;

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

&lt;disktype=’file’device=’disk’&gt;

&lt;drivername=’qemu’type=’qcow2’/&gt;

&lt;sourcefile=’/vz/disk/test.img’/&gt;

&lt;backingStore/&gt;

&lt;targetdev=’vdb’bus=’virtio’/&gt;

&lt;aliasname=’virtio-disk1’/&gt;

&lt;addresstype=’pci’domain=’0x0000’bus=’0x00’slot=’0x09’function=’0x0’/&gt;

&lt;/disk&gt;

Как видим, диск добав­лен. После дан­ных мани­пу­ля­ций, на вир­ту­аль­ной машине нуж­но раз­ме­тить этот диск под ваши нужды.

Управление виртуальной машиной из командной строки

Примеры команд, которые могут пригодиться при работе с виртуальными машинами.

1. Получить список созданных машин:

virsh list —all

2. Включение/выключение:

Включить:

virsh start VMname

* где VMname — имя созданной машины.

Выключить:

virsh shutdown VMname

3. Включить автозапуск виртуальной машины:

virsh autostart VMname

4. Редактирование конфигурации виртуальной машины:

virsh edit VMname

5. Работа с сетевыми интерфейсами.

Добавить обычный сетевой интерфейс (default или NAT) виртуальной машине:

virsh attach-interface —domain VMname —type network —source default —model virtio —config —live

Добавить интерфейс типа bridge:

virsh attach-interface —domain VMname —type bridge —source br0 —model rtl8139 —config —live

Удалить сетевой интерфейс:

virsh detach-interface VMname —type bridge —mac 52:54:00:2e:a9:4d

* где bridge — тип сетевого интерфейса (также может быть network); 52:54:00:2e:a9:4d — MAC-адрес сетевого адаптера (узнать данный адрес можно в конфигурации виртуальной машины или в самой гостевой операционной системы).

6. Посмотреть IP-адреса, выданные виртуальным машинам автоматически:

virsh net-dhcp-leases default

* где default — виртуальная сеть, создаваемая по умолчанию при установке KVM.

7. Работа со снапшотами

Теневые копии или снапшоты позволяют нам быстро вернуть определенное состояние системы виртуальной машины. Рассмотрим процесс создания снапшота и управления им.

а) Создать снимок виртуальной машины можно командой:

virsh snapshot-create-as —domain VMname —name VMname_snapshot_2020-03-21

* где VMname — название виртуальной машины; VMname_snapshot_2021-05-03 — название для снапшота.

б) Список снапшотов можно посмотреть командой:

virsh snapshot-list VMname

* данной командой мы просмотрим список всех снапшотов для виртуальной машины VMname.

в) Для применения снапшота, сначала мы должны остановить виртуальную машину. Для этого можно либо выполнить выключение в операционной системе или ввести команду:

virsh shutdown VMname

После вводим:

virsh snapshot-revert VMname —snapshotname VMname_snapshot_2020-03-21 —running

* где VMname — имя виртуальной машины; VMname_snapshot_2021-05-03 — имя созданного снапшота.

г) Удалить снапшот можно так:

virsh snapshot-delete —domain VMname —snapshotname VMname_snapshot_2020-03-21

8. Удалить виртуальную машину:

virsh undefine VMname

Step Five: Start VM from the Command Line

Before starting a VM, you need to create its initial disk image. For that, you can use command, which comes with package you installed. The following command creates 10GB size empty disk image of type:

$ qemu-img create -f qcow2 /home/dev/images/alice.img 10G

The advantage of using (as opposed to ) as a disk image format is that a -type disk image is not created as a full size (10GB) initially, but grows as the disk gets populated. So it is more space-efficient.

Now you are ready to start a VM using the domain XML file you created earlier. The following command will create a VM, and automatically start it.

$ virsh create alice.xml
Domain alice created from alice.xml

NOTE: If you run the above command with an already created VM, it will wipe out the VM without warning. If you already created a VM, you can instead use the following command to just start the VM.

$ virsh start alice.xml

Verify that a new domain has been created and started successfully with:

$ virsh list
 Id    Name                           State
----------------------------------------------------
 3     alice                          running

Also, verify that the virtual interface for the VM (e.g., ) is successfully added to the Linux bridge that you created earlier.

$ sudo brctl show

Установка KVM в Ubuntu 20.04

Выполните следующую команду, чтобы установить KVM и дополнительные пакеты управления виртуализацией:

  • — программа, обеспечивающая аппаратную эмуляцию гипервизора KVM.
  • — файлы конфигурации для запуска демона libvirt как системной службы.
  • — программа для управления платформами виртуализации.
  • — набор инструментов командной строки для настройки мостов Ethernet.
  • — набор инструментов командной строки для создания виртуальных машин.
  • — простой в использовании графический интерфейс и вспомогательные утилиты командной строки для управления виртуальными машинами через libvirt.

После установки пакетов демон libvirt запустится автоматически. Вы можете проверить это, набрав:

Чтобы иметь возможность создавать виртуальные машины и управлять ими, вам необходимо добавить своего пользователя в группы «libvirt» и «kvm». Для этого введите:

— это переменная среды, которая содержит имя текущего вошедшего в систему пользователя.

Выйдите из системы и войдите снова, чтобы членство в группе обновилось.

Подключение к консоли.

Рис. 2. KVM Spice Display settings.

Spice.

Для подключения через virt-manager достаточно, чтобы в качестве сервера был выбран Spice (см. настройки на рис. 2), а в качестве дисплей адаптеров виртуальной машины — QXL, или VGA. Подключение через virt-manager необходимо осуществлять по SSH-ключу (не по паролю). В большинстве случаев дефолтные конфиги libvirt уже пригодны для подключения к Spice, в противном случае стоит сверить следующие настройки:

# cat /etc/libvirt/qemu.conf...remote_display_port_min = 5900remote_display_port_max = 6000# Для Centos:security_driver = "selinux"...

Все остальные параметры Spice должны быть дефолтными (обычно закомментированы).

Рис. 3. KVM VNC Display Settings.

VNC.

Для подключения по VNC аналогично достаточно в virt-manager выбрать “VNC Server” (рис. 3), а в качестве display-адаптеров в гостевых системах использовать QXL, или VGA.

Можно так же отредактировать настройки видео через CLI:

# virsh edit <vm-name>...<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0' passwd='yourpassword'> <listen type='address' address='0.0.0.0'/> </graphics>...

Приведенный пример будет слушать подключения на всех IP-адресах KVM сервера и при подключении запрашивать пароль “yourpassword”. Если убрать параметр passwd, то можно будет подключиться без пароля. Для того, чтобы определить IP-адрес и порт для подкючения к виртуальной машины по VNC выполните команду:

# virsh vncdisplay <vm-name>127.0.0.1:1

К полученному значению порта нужно прибавить 5900. Таким образом, в приведенном примере, подключение возможно с любого IP-адреса по порту 5901.

tty.

Подключение к текстовой консоли так же возможно напрямую через CLI. Но для этого предварительно нужно указать некоторые параметры загрузки. Для Centos/RHEL:

# /etc/grub.confconsole=tty0 console=ttyS0,115200

Альтернативно можно дописать в /etc/grub следующие параметры:

serial --unit=0 --speed=115200terminal --timeout=5 serial console

Подключаемся к консоли:

# virsh console <vm-name>

Роль снимков KVM

1. Горячий резерв 2. Аварийное восстановление 3. Вернуться к определенному состоянию в истории

Место использования снимка

Есть два типа снимков kvm: Метод 1. Используйте моментальный снимок lvm, если раздел — lvm, вы можете использовать lvm для выполнения резервного копирования моментального снимка kvm Метод 2. Используйте изображение в формате qcow2 для создания снимка.

Создать снимок KVM

Примечание. В рамках centos6 виртуальная машина kvm по умолчанию использует формат изображений в необработанном формате, который имеет лучшую производительность и максимальную скорость. Недостатком является то, что она не поддерживает некоторые новые функции, такие как поддержка зеркалирования, сжатие zlib диска, шифрование AES и т.Для использования функции моментального снимка формат диска должен быть qcow2.

Просмотр формата диска
Создать снимок
Синтаксис для создания снимка: virsh snapshot — создать имя виртуальной машины
Синтаксис имени при создании снимка: virsh snapshot-create-as имя виртуальной машины KVM имя снимка (имя снимка также поддерживает китайский язык)
Просмотр списка снимков образа виртуальной машины
Просмотр последнего использованного снимка
Место хранения файла конфигурации моментального снимка
Посмотреть размер снимка
Восстановить снимок
Удалить снимок
часто используемые команды virsh
Экспорт файла конфигурации виртуальной машины centos7.0
Повторно добавьте виртуальную машину в список каталогов virt-manager

Просмотр информации

Начну с команды ls. Как не сложно догадаться, она показывает список
виртуальных машин, но не только это.

Выполнив команду virtup help ls вы увидите все возможные аргументы
команды ls с описанием.

Показать информацию о гипервизоре.

Memory used — это не вся используемая память на хостовой машине, а
только та, что занята под работающие виртуалки.

Вывести информацию о сконфигурированных хранилищах гипервизора, которые
доступны для виртуальных машин.

Показать созданные тома и кем они используются

Use — это процесс использования томом места от общего доступного в
хранилище.

ls -net выведет активные сетевые интерфейсы. Активные, всмысле
сконфигурированные и используемые виртуальными машинами.

Ну и уникальный функционал — вывести ip адреса работающих виртуальных
машин. Я не использую какие-либо агенты на самих виртуалках, а просто
сканирую локальный arp кэш на предмет искомых MAC адресов. Эта опция не
работает для удаленных подключений.

Да, забыл сказать, можно удаленно управлять виртуалками, с помощью
опции -c

Если в в кэше нет данных, бывает, что он протухает, то скрипт сканирует
локальные подсети, которые соответствуют активным интерфейсам (см. выше)
и добавляет полученные таблицы ip → mac в кэш. Это происходит довольно
быстро, посмотрите, как это реализовано в исходном коде.

Сетевой Bridge для kvm

Настройка сети для виртуальных машин kvm может быть настроена различными способами. Я как минимум 3 наиболее популярных знаю:

  1. Виртуальные машины выходят во внешний мир через сам хост kvm, на котором настроен NAT. Этот вариант вам будет доступен сразу после установки kvm. Ничего дополнительно настраивать не надо, так как сетевой бридж для этого virbr0 уже будет добавлен в систему. А в правилах iptables будет добавлен MASQUERADE для NAT.
  2. Одна из виртуальных машин превращается в шлюз и через нее осуществляется доступ во внешний мир для всех виртуальных машин. Наиболее гибкий способ управления сетью для vm, но в то же время требует больше времени на настройку и набор знаний по работе с сетями.
  3. Для виртуальных машин kvm создается отдельный сетевой бридж во внешнюю сеть. Они напрямую получают в нее сетевой доступ.

Последний вариант наиболее простой и удобный, поэтому настроим сеть для виртуальных машин таким образом. Для этого нам нужно установить дополнительный пакет на host.

sudo apt install bridge-utils

Теперь на хосте приводим сетевые настройки в /etc/netplan к следующему виду.

network:
  ethernets:
    ens18:
      dhcp4: false
      dhcp6: false
  version: 2

  bridges:
    br0:
      macaddress: 16:76:1a:3b:be:03
      interfaces:
        - ens18
      dhcp4: true
      dhcp6: false
      parameters:
        stp: true
        forward-delay: 4

Здесь будьте очень внимательны. Не выполняйте изменения сетевых настроек, не имея прямого доступа к консоли сервера. Очень высок шанс того, что что-то пойдет не так и вы потеряете удаленный доступ к серверу.

В предложенном наборе правил netplan у меня один сетевой интерфейс на хосте гипервизора — ens18. Он изначально получал настройки по dhcp. Мы добавили новый сетевой бридж br0, в него добавили интерфейс ens18. Так же мы указали, что br0 будет получать сетевые настройки по dhcp. Я указал mac адрес для того, чтобы он не менялся после перезагрузки. Такое может происходить. Адрес можно указать любой, не принципиально. Я сделал похожий на адрес физического сетевого интерфейса.

Теперь надо применить новые настройки.

sudo netplan apply

Сразу после этого вы потеряете доступ к серверу по старому адресу. Интерфейс ens18 перейдет в состав bridge br0 и потеряет свои настройки. А в это время бридж br0 получит новые сетевые настройки по dhcp. IP адрес будет отличаться от того, что был перед этим на интерфейсе ens18. Чтобы снова подключиться удаленно к гипервизору kvm, вам надо будет пойти на dhcp сервер и посмотреть, какой новый ip адрес ему назначен.

Если у вас нет dhcp сервера или вы просто желаете вручную указать сетевые настройки, то сделать это можно следующим образом.

network:
  ethernets:
    ens18:
      dhcp4: false
      dhcp6: false
  version: 2

  bridges:
    br0:
      macaddress: 16:76:1a:3b:be:03
      interfaces:
        - ens18
      addresses:
        - 192.168.25.2/24
      gateway4: 192.168.25.1
      nameservers:
        addresses:
          - 192.168.25.1
          - 77.88.8.1
      dhcp4: false
      dhcp6: false
      parameters:
        stp: true
        forward-delay: 4

В этом случае после применения новых настроек, гипервизор kvm будет доступен по адресу 192.168.25.2.

Обращайте внимание на все отступы в конфигурационном файле netplan. Они важны

В случае ошибок, настройки сети применены не будут. Иногда эта тема очень напрягает, так как не получается сразу понять, где именно в отступах ошибка. В этом плане yaml файл для настроек сети гипервизора как-то не очень удобен.

Далее еще один важный момент. Чтобы наш kvm хост мог осуществлять транзит пакетов через себя, надо это явно разрешить в sysctl. Добавляем в /etc/sysctl.d/99-sysctl.conf новый параметр. Он там уже есть, надо только снять пометку комментария.

net.ipv4.ip_forward=1

Применяем новую настройку ядра.

sudo sysctl -p /etc/sysctl.d/99-sysctl.conf
net.ipv4.ip_forward = 1

С настройкой сети гипервизора мы закончили. На данном этапе я рекомендую перезагрузить сервер и убедиться, что все настройки корректно восстанавливаются после перезагрузки.

Понравилась статья? Поделиться с друзьями:
Быть в курсе нового
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: