Команды, приведенные ниже могут требовать от вас рутовых прав. Это зависит от того, под каким пользователем у вас работают ВМ. У меня они работают подо мной, поэтому и рутовых прав не нужно. Мануал на русском по первоначальной установке и настройке KVM на CentOS 7 (Red Hat Enterprise Linux 7).. А здесь пример установки Red Hat Enterprise Linux 8.0 Beta под KVM.
- Основные команды для управления виртуальными машинами под KVM
- Клонирование виртуальной машины
- Подключение носителей (флэшек) к виртуальной машине
- Изменение параметров виртуальной машины
- Удаление виртуальной машины
Основные команды для управления виртуальными машинами под 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
Клонирование виртуальной машины
- Приостановите VM для клонирования.
virsh suspend vm
- Запустите команду virt-clone:
virt-clone \ --connect qemu:///system \ --original vm \ --name vm-clone \ --file /vm-images/vm-clone.img
Эта операция займет несколько минут в зависимости от размера машины.
- По завершению, возобновите работу исходной VM:
virsh resume vm1
- Клонированная машина выключена. При необходимости запустите ее:
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 Мб.
- Посмотрим какой максимум памяти на машине, выполнив
virsh dominfo vm_name | grep memory
или
virsh dominfo vm_name | grep память
У меня так:
- Устанавливаем необходимое значение памяти в KB ( 512 х 1024 = 524288 ):
virsh setmem vm_name 524288
- Заглядываем в
virsh dominfo vm_name
и видим, что максимальный объем памяти остался прежним, а используемый изменился на 524288.
Второй вариант. Увеличение объема памяти сверх установленного при создании VM.
- Для этого необходимо будет изменить файл конфигурации, а сначала надо погасить машину:
virsh shutdown vm_name
- Правим файл конфигурации. Выполняем:
virsh edit vm_name
и изменяем значение (в KB)
У кого-то это будет:<memory>2097152</memory>
У меня это:
<memory unit='KiB'>2097152</memory> <currentMemory unit='KiB'>2097152</currentMemory>
Если у вас так же, то 4й шаг не понадобится.
Для тех, кто не работал с vi: Чтобы начать править файл нажмите кнопку Insert, когда внесете необходимые изменения нажимайте Esc, а затем ZZ (две большие Z). Язык должен стоять английский, иначе редактор команду не поймет. - Перезапускаем виртуальную машину из обновленного файла конфигурации:
virsh create ~/.config/libvirt/qemu/vm_name.xml
, либо
virsh create /etc/libvirt/qemu/vm_name.xml
- Проверяем память. Max.memory должна измениться, а Used Memory могла остаться прежней:
virsh dominfo vm_name | grep memory
Если все изменилось – прекрасно. Если нет, то теперь выполняем:
virsh setmem vm_name 2097152
и у вас тоже все прекрасно.
Изменение количества cpu
- Чтобы изменить количество виртуальных процессоров необходимо отредактировать файл конфигурации VM. Для этого сначала гасим нашу машину, потом открываем файл на редактирование:
virsh shutdown vm_name
virsh edit vm_name
- Далее изменяем количество в тэгах vcpu:
<vcpu placement='static'>1</vcpu>
- Перезапускаем виртуальную машину из обновленного файла конфигурации:
virsh create ~/.config/libvirt/qemu/vm_name.xml
или
virsh create /etc/libvirt/qemu/vm_name.xml
Управление объемом диска VM (добавление диска к VM)
Мы всегда можем добавить дополнительные “диски” к своей виртуальной машине на KVM. Давайте добавим еще 10 Гб дискового пространства.
- Создадим пустой файл на 10 Гб (естественно, путь выбираем свой):
dd if=/dev/zero of=/vm-images/vm_name-add.img bs=1M count=10240
- Выключаем VM
virsh shutdown vm_name
- Добавим дополнительную запись для «диска» в 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′). Проверяйте адрес слота ВСЕХ устройств, а не только дисков. - Перезапустим нашу виртуальную машину с обновленным конфигом XML:
virsh create /etc/libvirt/qemu/vm1.xml
, а может
virsh create ~/.config/libvirt/qemu/vm_name.xml
Удаление виртуальной машины
- Удаляем VM с названием vm-clone. Сначала выключите VM:
virsh shutdown vm-clone
Если VM не отвечает, либо не может выключиться, выключите ее принудительно:
virsh destroy vm-clone
- Undefine the VMs configuration:
virsh undefine vm-clone
- Наконец, удалите img-файлы машины.
rm /vm-images/vm-clone.img
Если virt-viewer
не запускается, возможно он не установлен. Установите его, и , заодно, virt-manager
можно:
yum install virt-manager virt-viewer |
Если virt-viewer
ругается, что не может найти виртуальные машины, проверьте с помощью команды virsh list --all
, что виртуалки есть и запущены.
virt-viewer
при запуске отобразит список запущенных виртуалок: