Виртуализация¶
Какую систему управления виртуальными машинами лучше установить?¶
Рекомендуется использовать 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
В случае необходимости создания образа фиксированного размера, добавим параметр -o preallocation=full
:
qemu-img convert -f vdi -O qcow2 /path/to/image.vdi /path/to/image.qcow2 -o preallocation=full
Как преобразовать образ виртуальной машины 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
Теперь в свойствах виртуальной машины подключим новый образ фиксированного размера. Старый при этом можно удалить.
Как конвертировать динамически расширяющийся образ диска QCOW2 в фиксированный?¶
Динамическая конвертация не поддерживается, поэтому воспользуемся утилитой qemu-img для создания нового дискового образа на базе старого.
Остановим виртуальную машину и переименуем старый файл:
mv System.qcow2 System-old.qcow2
Выполним преобразование:
qemu-img convert -f qcow2 -O qcow2 System-old.qcow2 System.qcow2 -o preallocation=full
Проверим работу с новой конфигурацией и, если всё верно, удалим оригинал:
rm -f System-old.qcow2
Можно ли использовать KVM на CPU без поддержки аппаратной виртуализации?¶
Нет. KVM требует наличие активной аппаратной виртуализации и при её осутствии работать не будет.
В то же время, без наличия этой функции со стороны CPU, могут работать VirtualBox до версии 6.1.0 и 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
Через некоторое время новая виртуальная машина появится в списке и будет готова к работе.
Как правильно установить в KVM Windows?¶
См. здесь.
Какой тип QCOW2 образов выбрать?¶
Существует два типа образов:
У каждого есть как достоинства, так и недостатки.
Что нужно знать о динамически расширяющихся образах?¶
Достоинства:
занимают меньше места на диске, постепенно расширяясь до заданного предела.
Недостатки:
очень сильно фрагментируются;
производительность значительно уступает образам фиксированного размера.
Что нужно знать об образах фиксированного размера?¶
Достоинства:
практически не фрагментируются, т.к. все блоки для них заранее зарезервированы на диске;
имеют более высокую производительность по сравнению с динамически расширяющимися образами.
Недостатки:
занимают очень много места на диске, хотя если файловая система поддерживает разреженные (sparse) файлы, эта функция будет использоваться в полном объёме.
Как увеличить размер дискового образа QCOW2?¶
Воспользуемся утилитой qemu-img для увеличения дискового образа:
qemu-img resize --preallocation=full /path/to/image.qcow2 +10G
При использовании образов фиксированного размера, добавим параметр --preallocation=full
:
qemu-img resize --preallocation=full /path/to/image.qcow2 +10G
Здесь вместо +10G укажем насколько следует расширить образ. Все операции должны выполняться при остановленной виртуальной машине, в которой он смонтирован.
По окончании, внутри гостевой ОС расширим используемую файловую систему до новых границ образа при помощи fdisk, GParted или любого другого редактора разделов диска.
Как уменьшить размер дискового образа QCOW2?¶
Уменьшение размера дискового образа QCOW2 при помощи qemu-img -- это достаточно небезопасная операция, которая может привести к его повреждению, поэтому вместо отрицательных значений для resize сначала уменьшим размер дисковых разделов внутри самой гостевой ОС при помощи fdisk, Gparted или любого другого редактора разделов диска так, чтобы справа осталось лишь неразмеченное пространство.
Далее воспользуемся утилитой qemu-img и сделаем копию образа, которая уже не будет включать неразмеченное дисковое пространство:
qemu-img convert -f qcow2 -O qcow2 /path/to/image.qcow2 /path/to/new_image.qcow2
В случае необходимости создания образа фиксированного размера, добавим параметр -o preallocation=full
:
qemu-img convert -f qcow2 -O qcow2 /path/to/image.qcow2 /path/to/new_image.qcow2 -o preallocation=full
Подключим новый образ к виртуальной машине вместо старого и проверим работу. Если всё верно, старый можно удалить.
Как оптимизировать KVM для работы с SSD-накопителей?¶
Каких-то особых оптимизаций производить не требуется. Достаточно лишь использовать дисковые образы гостевых ОС в формате QCOW2, а также при их подключении указать тип контроллера VirtIO и установить следующие опции:
discard mode: unmap;
detect zeroes: unmap.
Конечно же как в хостовой, так и в гостевой ОС, должна быть включена поддержка TRIM.
Как создать ярлык запуска виртуальной машины KVM?¶
Для создания ярлыка в главном меню рабочей среды, создадим файл fedora-rawhide.desktop
в каталоге ~/.local/share/applications
следующего содержания:
[Desktop Entry]
Name=Fedora Rawhide
Name[ru_RU]=Fedora Rawhide
GenericName=Start Fedora Rawhide
GenericName[ru_RU]=Запуск Fedora Rawhide
Comment=Start Fedora Rawhide
Comment[ru_RU]=Запуск Fedora Rawhide
Exec=/usr/bin/virt-manager --connect "qemu:///session" --show-domain-console "Fedora-Rawhide"
Icon=virtualbox
Categories=Development;
StartupNotify=false
Terminal=false
Type=Application
Здесь вместо Fedora-Rawhide укажем реальное имя виртуальной машины KVM, а qemu:///session -- сеанс, в котором она создана (session -- пользовательский; system -- системный).