Виртуализация. KVM на CentOS 7 (RHEL 7), простой мануал.

Устанавливаем и настраиваем 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.

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

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