Устанавливаем и настраиваем KVM на CentOS 7. Я поставлю на виртуалку Astra Linux. Хочу просто ознакомиться с этим дистрибутивом.
Сначала посмотрим, поддерживает ли наш проц виртуализацию:
grep -E 'svm|vmx' /proc/cpuinfo |
Вывод команды не должен быть пустым.
Установим несколько пакетов, которые не входят в базовую установку RHEL и CentOS 7.
sudo yum -y install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install virt-viewer |
Включим сервис libvirtd и добавим его в загрузку (от рута).
sudo systemctl enable libvirtd && systemctl start libvirtd |
Сеть. Мы создадим мост br0
. Для этого создаем файлик ifcfg-br0
.
sudo nano /etc/sysconfig/network-scripts/ifcfg-br0 |
Примерно следующего содержания:
DEVICE="br0" BOOTPROTO="dhcp" ONBOOT="yes" TYPE="Bridge" DELAY="0" |
А сейчас внимание! После того, как мы создали новый бридж (br0 в нашем случае), для него в файле /etc/qemu-kvm/bridge.conf
(в других дистрибутивах может быть несколько иной путь, типа /etc/qemu/bridge.conf
) необходимо добавить строку:
allow br0 |
, а иначе можно получить что-то вроде: “failed to retrieve file descriptor for interface: transport endpoint is not connected” при попытке создания новой гостевой ОС. И мост не поднимется.
Теперь включим перенаправление (network forwarding), в файле /etc/sysctl.conf
добавим строку:
net.ipv4.ip_forward = 1 |
Перечитаем файл и перезапустим сеть:
sudo sysctl -p /etc/sysctl.conf sudo systemctl restart NetworkManager |
Диски и SELinux.
Я буду хранить диски виртуалок в домашнем каталоге, в директории ~/vm-images
.
mkdir ~/vm-images |
Для управления SELinux установим policycoreutils-python
(содержит утилиту semanage
):
sudo yum -y install policycoreutils-python |
Установим контекст для нашей директории. От рута выполняем:
sudo semanage fcontext --add -t virt_image_t '/home/Lector/vm-images(/.*)?' |
Проверим, что контекст создан (1я строка наша):
sudo semanage fcontext -l | grep virt_image_t /home/Lector/vm-images(/.*)? all files system_u:object_r:virt_image_t:s0 /var/lib/imagefactory/images(/.*)? all files system_u:object_r:virt_image_t:s0 /var/lib/libvirt/images(/.*)? all files system_u:object_r:virt_image_t:s0 |
Далее выполяем:
sudo restorecon -R -v /home/Lector/vm-images |
Проверяем, что контекст был изменен:
sudo ls -aZ /home/Lector/vm-images drwxrwxr-x. Lector Lector unconfined_u:object_r:virt_image_t:s0 . drwx------. Lector Lector unconfined_u:object_r:user_home_dir_t:s0 .. |
Перейдем к созданию виртуальной машины.
Но сначала обязательно проверьте кому принадлежат права на vm-images и при надобности, смените владельца (chown -R user:user some/dir/vm-images
). Я создаю машины от имени своего пользователя. (Проверьте, что интерфейс br0 появился)
virt-install \ > --name=astra \ > --ram=1024 \ > --vcpus=1 \ > --network bridge:br0 \ > --disk path=~Lector/vm-images/vmastra.img,size=20 \ > --cdrom ~Lector/Downloads/orel_live_2015030601.iso \ > --os-variant=Linux |
Здесь, в принципе, все ясно, но все же:
--name - имя новой машины --ram - оператива --vcpus - колическтво виртуальных процессоров --network - сеть --disk - место хранения жесткого диска для нашей машины, size - размер в Гб --cdrom - указываем где лежит файл образа, с которого ставим --os-variant - тип оси |
Также примеры можно посмотреть в мануале, с которого была взята основа. Там же управление, клонирование и прочее. В переводе он не особо нуждается. Еще пример создания машины на сайте Red Hat.