Виртуализация

Какую систему управления виртуальными машинами лучше установить?

Рекомендуется использовать KVM, т.к. её гипервизор и необходимые модули уже находятся в ядре Linux и не вызывают проблем.

Как определить имеет ли процессор аппаратную поддержку виртуализации?

Проверим наличие флагов vmx (Intel), либо svm (AMD) в выводе /proc/cpuinfo:

grep -Eq '(vmx|svm)' /proc/cpuinfo && echo Yes || echo No

Как правильно установить систему виртуализации KVM?

Установим KVM и графическую утилиту управления виртуальными машинами virt-manager:

sudo dnf group install Virtualization

Перезагрузим машину для вступления изменений в силу:

sudo systemctl reboot

Как отключить запрос пароля во время запуска или остановки виртуальных машин при использовании KVM?

Возможностью управления виртуальными машинами обладают члены группы libvirt, поэтому нужно добавить в неё свой аккаунт:

sudo usermod -a -G libvirt $(whoami)

Как правильно установить VirtualBox в Fedora?

Сначала нужно подключить репозиторий RPM Fusion, затем выполнить:

sudo dnf upgrade --refresh
sudo dnf install gcc kernel-devel kernel-headers akmod-VirtualBox VirtualBox

Для нормальной работы с USB устройствами и общими папками потребуется также добавить свой аккаунт в группу vboxusers и vboxsf:

sudo usermod -a -G vboxusers $(whoami)
sudo usermod -a -G vboxsf $(whoami)

Как преобразовать образ виртуальной машины VirtualBox в формат, совместимый с KVM?

Для конвертирования образов воспользуемся штатной утилитой qemu-img:

qemu-img convert -f vdi -O qcow2 /path/to/image.vdi /path/to/image.qcow2

Как преобразовать образ виртуальной машины VMWare в формат, совместимый с KVM?

Вариант 1. Воспользуемся утилитой virt-v2v:

virt-v2v -i vmx /path/to/image.vmx -o local -os /path/to/kvm -of qcow2

Вариант 2. Воспользуемся утилитой qemu-img:

qemu-img convert -f vmdk -O qcow2 /path/to/image.vmdk /path/to/image.qcow2

Как преобразовать образ виртуальной машины Hyper-V в формат, совместимый с KVM?

Для преобразования образа воспользуемся штатной утилитой qemu-img:

qemu-img convert -f vpc -O qcow2 /path/to/image.vpc /path/to/image.qcow2

Можно ли отключить защиту от уязвимостей CPU в гостевых Windows внутри виртуальных машин?

Да, согласно MSDN, при помощи следующего REG файла:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
"FeatureSettingsOverride"=dword:00000003
"FeatureSettingsOverrideMask"=dword:00000003

Какие дисковые образы лучше: динамически расширяющиеся или фиксированного размера?

Фиксированного размера, т.к. они меньше фрагментируются.

Как конвертировать динамически расширяющийся образ диска VirtualBox в фиксированный?

Динамическая конвертация не поддерживается, поэтому воспользуемся утилитой VBoxManage, входящей в базовую поставку VirtualBox, для создания нового дискового образа на базе старого:

VBoxManage clonehd /path/to/System.vdi /path/to/System_fixed.vdi --variant Fixed

Теперь в свойствах виртуальной машины подключим новый образ фиксированного размера. Старый при этом можно удалить.

Можно ли использовать KVM на CPU без поддержки аппаратной виртуализации?

Нет. KVM требует наличие активной аппаратной виртуализации и при её осутствии работать не будет.

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

Можно ли перенести каталог с образами виртуальных машин KVM?

По умолчанию образы создаваемых виртуальных машин создаются в каталоге /var/lib/libvirt/images, что многих не устраивает.

Переместим образы виртуальных машин на отдельный накопитель, смонтированный как /media/foo-bar. ISO будем размещать в каталоге iso, а дисковые образы виртуальных машин - images.

Создаём собственные политики SELinux для указанных каталогов:

sudo semanage fcontext -a -t virt_image_t "/media/foo-bar/iso(/.*)?"
sudo semanage fcontext -a -t virt_image_t "/media/foo-bar/images(/.*)?"

Сбросим контекст безопасности SELinux для них:

sudo restorecon -Rv /media/foo-bar/iso
sudo restorecon -Rv /media/foo-bar/images

В настройках Virt Manager добавим новую библиотеку /media/foo-bar/images и зададим её использование для всех виртуальных машин по умолчанию.

Как переместить виртуальную машину KVM на другой ПК?

Переместим образы дисков из каталога /var/lib/libvirt/images старого хоста на новый любым удобным способом.

Экспортируем конфигурацию виртуальной машины:

virsh dumpxml vmname > vmname.xml

Здесь vmname - название машины KVM, а vmname.xml - имя файла, в котором будут сохранены настройки.

Импортируем ранее сохранённую конфигурацию:

virsh define /path/to/vmname.xml

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

Как переместить виртуальную машину VirtualBox на другой ПК?

Получим список доступных виртуальных машин VirtualBox:

vboxmanage list vms

Экспортируем настройки и данные в открытый формат виртуализации версии 2.0:

vboxmanage export vmname -o vmname.ova --ovf20

Здесь vmname - название виртуальной машины VirtualBox, а vmname.ova - имя файла экспорта.

Переместим полученный файл на новый хост любым удобным способом, затем осуществим его импорт:

vboxmanage import /path/to/vmname.ova --options importtovdi

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