Управление виртуальными машинами KVM

Команды, приведенные ниже могут требовать от вас рутовых прав. Это зависит от того, под каким пользователем у вас работают ВМ. У меня они работают подо мной, поэтому и рутовых прав не нужно. Мануал на русском по первоначальной установке и настройке KVM на CentOS 7 (Red Hat Enterprise Linux 7).. А здесь пример установки Red Hat Enterprise Linux 8.0 Beta под KVM.

  1. Основные команды для управления виртуальными машинами под KVM
  2. Клонирование виртуальной машины
  3. Подключение носителей (флэшек) к виртуальной машине
  4. Изменение параметров виртуальной машины
  5. Удаление виртуальной машины

Основные команды для управления виртуальными машинами под KVM

Просмотр списка виртуальных машин
virsh list --all

Запуск виртуальной машины, где vm_name – имя машины.
virsh start vm_name

Запуск окна для подключения к виртуальной машине (окно для просмотра/управления самой ОС). Если virt-viewer не запускается…
virt-viewer

Показывает использование cpu/памяти для всех запущенных VM
virt-top

Выключение VM (выключение ОС)
virsh shutdown vm_name

Помечает VM для автостарта (например, после перезагрузки хоста)
virsh autostart vm_name

Убирает метку автостарта (теперь VM не запустится сама после ребута хоста)
virsh autostart --disable vm_name

Информация о VM
virsh dominfo vm_name

Информация о разделах диска VM (займет несколько минут)
virt-df vm_name

Клонирование виртуальной машины

  1. Приостановите VM для клонирования.
    virsh suspend vm
  2. Запустите команду virt-clone:
    virt-clone \
     --connect qemu:///system \
     --original vm \
     --name vm-clone \
     --file /vm-images/vm-clone.img

    Эта операция займет несколько минут в зависимости от размера машины.

  3. По завершению, возобновите работу исходной VM:
    virsh resume vm1
  4. Клонированная машина выключена. При необходимости запустите ее:
    virsh start vm1-clone

Подключение носителей (флэшек) к виртуальной машине

Сначала определите имя вашего устройства после его подключения к хосту. В нашем случае это /dev/sdb. Затем выполните:
virsh attach-disk vm_name /dev/sdb vdb --driver qemu --mode shareable
здесь vdb – имя устройства в VM. Т.е. путь к устройству внутри VM – /dev/vdb.
Устройство можно примонтировать более чем к одной виртуальной машине. Но тут нет контроля доступа на запись, так что последствия могут быть неожиданными.
Для отключения устройства от VM выполните:
virsh detach-disk vm_name vdb

Изменение параметров виртуальной машины

Управление оперативной памятью (добавление/удаление)

Вы можете нагорячую изменять память в VM, не превышая размер, заданный при установке (параметр ram). Например, если вы создали VM с 1 ГБ памяти, вы можете динамически уменьшить этот объем не выключая VM.
Если вы хотите получить объем памяти больший, чем указывали при установке VM, то VM придется сначала отключить.

Начнем с первого варианта. Уменьшим объем памяти нагорячую с 1Гб до 512 Мб.

  1. Посмотрим какой максимум памяти на машине, выполнив
    virsh dominfo vm_name | grep memory или
    virsh dominfo vm_name | grep память
    У меня так:
  2. Устанавливаем необходимое значение памяти в KB ( 512 х 1024 = 524288 ):
    virsh setmem vm_name 524288
  3. Заглядываем в virsh dominfo vm_name и видим, что максимальный объем памяти остался прежним, а используемый изменился на 524288.

Второй вариант. Увеличение объема памяти сверх установленного при создании VM.

  1. Для этого необходимо будет изменить файл конфигурации, а сначала надо погасить машину:
    virsh shutdown vm_name
  2. Правим файл конфигурации. Выполняем:
    virsh edit vm_name
    и изменяем значение (в KB)
    У кого-то это будет:

    <memory>2097152</memory>

    У меня это:

    <memory unit='KiB'>2097152</memory>
    <currentMemory unit='KiB'>2097152</currentMemory>

    Если у вас так же, то 4й шаг не понадобится.
    Для тех, кто не работал с vi: Чтобы начать править файл нажмите кнопку Insert, когда внесете необходимые изменения нажимайте Esc, а затем ZZ (две большие Z). Язык должен стоять английский, иначе редактор команду не поймет.

  3. Перезапускаем виртуальную машину из обновленного файла конфигурации:
    virsh create ~/.config/libvirt/qemu/vm_name.xml, либо
    virsh create /etc/libvirt/qemu/vm_name.xml
  4. Проверяем память. Max.memory должна измениться, а Used Memory могла остаться прежней:
    virsh dominfo vm_name | grep memory
    Если все изменилось – прекрасно. Если нет, то теперь выполняем:
    virsh setmem vm_name 2097152 и у вас тоже все прекрасно.

Изменение количества cpu

  1. Чтобы изменить количество виртуальных процессоров необходимо отредактировать файл конфигурации VM. Для этого сначала гасим нашу машину, потом открываем файл на редактирование:
    virsh shutdown vm_name
    virsh edit vm_name
  2. Далее изменяем количество в тэгах vcpu:
    <vcpu placement='static'>1</vcpu>
  3. Перезапускаем виртуальную машину из обновленного файла конфигурации:
    virsh create ~/.config/libvirt/qemu/vm_name.xml или
    virsh create /etc/libvirt/qemu/vm_name.xml

Управление объемом диска VM (добавление диска к VM)

Мы всегда можем добавить дополнительные “диски” к своей виртуальной машине на KVM. Давайте добавим еще 10 Гб дискового пространства.

  1. Создадим пустой файл на 10 Гб (естественно, путь выбираем свой):
    dd if=/dev/zero of=/vm-images/vm_name-add.img bs=1M count=10240
  2. Выключаем VM
    virsh shutdown vm_name
  3. Добавим дополнительную запись для «диска» в XML-файл виртуальной машины. Удобно скопировать блок с описанием уже существующего диска и отредактировать значения в тегах target и address:
    virsh edit vm_name
    Например у нас было такое описание диска:

     <disk type='file' device='disk'>
     <driver name='qemu' type='raw' cache='none' io='threads'/>
     <source file='/vm-images/vm1.img'/>
     <target dev='vda' bus='virtio'/>
     <address type='pci' domain='0x0000' bus='0x00' slot='0x04'
    function='0x0'/>
     </disk>

    Мы добавляем после него еще вот такой блок для подключения нашего нового диска:

     <disk type='file' device='disk'>
     <driver name='qemu' type='raw' cache='none' io='threads'/>
     <source file='/vm-images/vm1-add.img'/>
     <target dev='vdb' bus='virtio'/>
     <address type='pci' domain='0x0000' bus='0x00' slot='0x06'
    function='0x0'/>
     </disk>

    В тэге target мы изменили имя устройства. Оно должно следовать за первым в алфавитном порядке (первый наш диск vda, второй будет vdb).
    В тэге address необходимо использовать уникальный адрес слота (здесь это slot=’0x06′). Проверяйте адрес слота ВСЕХ устройств, а не только дисков.

  4. Перезапустим нашу виртуальную машину с обновленным конфигом XML:
    virsh create /etc/libvirt/qemu/vm1.xml, а может
    virsh create ~/.config/libvirt/qemu/vm_name.xml

Удаление виртуальной машины

  1. Удаляем VM с названием vm-clone. Сначала выключите VM:
    virsh shutdown vm-clone
    Если VM не отвечает, либо не может выключиться, выключите ее принудительно:
    virsh destroy vm-clone
  2. Undefine the VMs configuration:
    virsh undefine vm-clone
  3. Наконец, удалите img-файлы машины.
    rm /vm-images/vm-clone.img


Если virt-viewer не запускается, возможно он не установлен. Установите его, и , заодно, virt-manager можно:

yum install virt-manager virt-viewer

Если virt-viewer ругается, что не может найти виртуальные машины, проверьте с помощью команды virsh list --all, что виртуалки есть и запущены.
virt-viewer при запуске отобразит список запущенных виртуалок:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *