Установка системы виртуализации KVM на CentOS

04 Mar 2016 | Автор: dd |

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

Ну и решил посмотреть. Надо сказать, что в моем понимании, VIrtualBox ставится чуть муторней чем KVM, но управляется проще и нет геморроев с настройкой сетки, хотя функциональностью он возможно и уступает. Чего не скажешь про ESXi. Но обо всем по порядку.

Ставил стандартно на CentOS 6.7, т.ч телодвижения начинаем с обновления системы:
# yum -y update

Смотрим поддерживается ли процессором аппаратная виртуализация, т.к KVM для своей работы требует поддержки Intel VT или AMD-V
# egrep -i 'vmx|svm' --color=always /proc/cpuinfo
в выводе должен присутствовать либо vmx либо svm

Смотрим статус контроля доступа SELinux
# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted

теоретически он может помешать при доступе к дискам, поэтому его надо либо корректно настроить на работу с папкой имиджей, либо отрубить, что мне естественно проще – в файле /etc/selinux/config меняем значение параметра SELINUX на disabled и перегружаем машину
SELINUX=disabled

Импортируем GPG ключи для пакетов
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
Ставим весь фарш: сам kvm, API управления виртуалками libvirt, приблуду для создания виртуалок virtinst и гипервизор qemu-kvm
# yum -y install kvm libvirt python-virtinst qemu-kvm

Запускаем libvirt и прописываем модуль автозагрузку
# /etc/init.d/libvirtd start
# chkconfig libvirtd on

Проверяем как KVM установился и стартанул (в выводе должно быть 0 ошибок)
# virsh -c qemu:///system list
Id    Name                           State
—————————————————-

Устанавливаем сетевой мост, для подключения гостевых машин к внешней сетке и  ужасному, страшному энторнету
# yum install bridge-utils

Создаем конфиг сетевого моста, аналогичный настройкам сетевого интерфейса, но с небольшой разницей:
# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-br0

###### /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=bridge
ONBOOT=yes
BOOTPROTO=none
NM_CONTROLLED=yes
IPADDR=SERVER_IP
PREFIX=24
GATEWAY=GW_IP
DNS1=8.8.8.8
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=”System br0″
##################
затем редактируем настройки основного интерфейса, комментируя парметры BOOTPROTO, IPADDR, PREFIX, GATEWAY, DNS1 и прописывая сетевой мост
###### /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
#BOOTPROTO=none
HWADDR=01:2e:32:ab:9f:1e
#IPADDR=SERVER_IP
#PREFIX=24
#GATEWAY=GW_IP
#DNS1=8.8.8.8
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=”System eth0″
BRIDGE=br0
##################

Теперь рестартим сетку и смотрим что получилось -  у нас должны показываться 4 интерфейса:
br0  с основным IP
eth0 без IP
lo      127.0.0.1
virbr0   с внутренним IP виртуального рутера

проверяем состояние нашего сетевого моста:
# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.002215ab999d       no              eth0
virbr0          8000.52540052c0e1       yes             virbr0-nic

теоретически можно ускорить работу сетевого моста, добавлением в файл /etc/sysctl.conf следующих параметров:
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

Теперь переходим к созданию директории для хранения имиджей виртуалок и образов дистов iso
# mkdir /usr/vm/iso
# mkdir /usr/vm/vm-images

по дефолту все имиджи машин, образы дисков и прочее хранится в /var/lib/libvirt/ но я решил выпендриться и порезал диск в лучших олдскульных традициях разбиения, поэтому учитывайте этот момент при установке сервера, либо же придется удалять оригинальные хранилища и линковать, как мне, на /usr

# rm -Rf /var/lib/libvirt/images
# ln -s usr/vm/iso /var/lib/libvirt/images

После всей этой подготовки, пытаемся создать виртуальную машину под Windows 7 с 2 виртуальными процами, 4Gb оперативки, 30Gb HDD, хранения имиджа в папке /usr/vm/vm-images и имиджем windows7.iso который мы скачали ранее в папку /usr/vm/iso

# virt-install --connect=qemu:///system -n win7 -r 4096 --vcpus=2 --disk path=/usr/vm/vm-images/win7.img,size=30 -c /usr/vm/iso/windows7.iso  --vnc --noautoconsole --os-type windows --os-variant win7 --accelerate --network=bridge:br0 --hvm

Если все нормально, то увидим процесс создания диска. На этой торжественной ноте можно переходить к настройке машины, и тут кроется самая настоящая засада, т.к если вы работаете из под винды, то из вариантов есть либо управление через ming сквозь putty-ssh, но для этого требуются X Windows на стороне сервера, либо же совершенно не понятная тулза virtual viewer, которуя я так и не смог заставить работать. Поэтому все что я смог найти- это либо этот внешний сервис, позволяющий подцепить свою KVM к их админке; либо же ставить свою веб-админку на базе Webmin Cloudmin GPL.

Тут надо заметить, что строка инициализиции сетки –network=bridge:br0 позволит использовать на виртуальной машине паблик IP, тогда как если вы хотите сидеть в виртуальной локалке и выходить из неё в инет, то надо ставить другой оператор –network=bridge:virbr0 что я упустил при установке, т.ч потом пришлось менять руками в файле настройки виртуальной машины /etc/libvirt/qemu/win7.xml.

Управление машиной в CLI осуществляется через virsh (virtual shell) в который мы попадаем из командной строки shell:
# virsh --connect qemu:///system
Welcome to virsh, the virtualization interactive terminal.
Type:  ‘help’ for help with commands
‘quit’ to quit
virsh # list –all
Id    Name                           State
—————————————————-
2     win7                           running
virsh # shutdown win7
Domain win7 is being shutdown
virsh # start win7
Domain win7 started

Настройки нашей виртуальной машины хранятся в папке /etc/libvirt/qemu/ в виде xml файла, где расписаны все устройства.

Собственно на этой оптимистической ноте, можно начинать работать с сервером KVM

З.Ы Диск нашей виртуалки является жестко заданным, поэтому при заполнении мы с ним не сможем ничего сделать. Чтобы он стал динамическим, нам его надо конвертнуть в логический том LVM, который хорош тем, что слабее грузит диск системы на ввод-вывод. Но для этого изначально необходимо иметь не распределенное место на диске, не назначенное ни к одному из томов. Поэтому в данном случае- это уже совсем другая история.

VN:F [1.9.21_1169]
Rating: 3.2/10 (18 votes cast)
VN:F [1.9.21_1169]
Rating: 0 (from 8 votes)
Установка системы виртуализации KVM на CentOS, 3.2 out of 10 based on 18 ratings

Теги: , ,

Ваш отзыв