Установка и настройка KVM виртуализации под Centos 6

Навожу заметку в которой пойдет речь об настройке и установке популярной системы виртуализации KVM(Kernel-based Virtual Machine). KVM — это тип аппаратной виртуализации, т.е. независимость гостевой ОС от хостовой. В предыдущей статье шла речь об контейнерной системе виртуализации OpenVZ, которая отлично подходит для виртуализации ОС Linux, но если нужен виртуальный сервер на базе Windows — лучшим вариантом, на данный момент есть KVM виртуализация.
Не все процессоры поддерживают данный тип виртуализации! Для проверки нужно выполнить команду.

[root@centos ~] egrep '(svm|vmx)' /proc/cpuinfo
flags       	: fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 xsave lahf_lm tpr_shadow vnmi flexpriority

Если не получили никакого вывода — проц не поддерживает KVM виртуализации. Если все ок — устанавливаем и стартуем демон.

[root@centos ~] yum install kvm libvirt virt-manager
[root@centos ~] service libvirtd start
Starting libvirtd daemon:                              	[  OK  ]

Если демон не поднялся, нужно проверить загрузились модули или нет.

[root@centos ~] lsmod | grep kvm
kvm_intel          	45674  0
kvm               	291811  1 kvm_intel

Теперь нужно настроить сетевой мост, предварительно удалив дефолтный. Для этого нужно немного модифицировать стандартный интерфейс и добавить бридж.

[root@centos ~] vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"
HWADDR="1C:6F:65:53:77:D5"
BRIDGE=bridge0
ONBOOT="yes"

[root@centos ~] vim /etc/sysconfig/network-scripts/ifcfg-bridge0
DEVICE="bridge0"
TYPE=Bridge
BOOTPROTO="static"
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
ONBOOT="yes"

[root@centos ~] service network restart
Shutting down loopback interface:                      	[  OK  ]
Bringing up loopback interface:                        	[  OK  ]
Bringing up interface eth0:                            	[  OK  ]
Bringing up interface bridge0:                         	[  OK  ]

Теперь удалим дефолтный virbr0

[root@centos ~] virsh net-list
Name             	State  	Autostart
-----------------------------------------
default          	active 	yes
[root@centos ~] virsh net-destroy default
Network default destroyed
[root@centos ~] virsh net-undefine default
Network default has been undefined

Для проверки состояния моста можно использовать утилиту brctl. Это стандартная утилита для работы с ethernet мостами.

[root@centos ~] brctl show
bridge name 	bridge id           	STP enabled 	interfaces
bridge0     	8000.1c6f655377d5   	no          	eth0

Теперь сеть настроена. Можно создавать гостевую ОС. Для этого используют утилита virt-install. У нее очень много опций и ключей, советую посмотреть и поэкспериментировать с ними. Я так и сделал — навожу пример своих ключиков для создания виртуалки Windows 2008 R2.

[root@centos ~] virt-install --connect qemu:///system \
> -n win2k8-webserver \
> -r 1536 \
> --arch=x86_64 \
> --vcpus=2 \
> -c /vz/template/kvm/win2k8r2.iso \
> --os-type windows \
> --os-variant win2k8 \
> --disk path=/dev/main/web-server \
> --network bridge:bridge0 \
> --graphics vnc,password=alex1989,listen=0.0.0.0,port=5901 \
> -v \
> --noautoconsole \
> --autostart \
> -d \
> --disk path=/vz/template/kvm/virtio-win-0.1-49.iso,device=cdrom,perms=ro \
> --boot cdrom,hd

Здесь,
«/vz/template/kvm/win2k8r2.iso» — это оригинальные образ ОС,
«/dev/main/web-server» — путь к созданному LVM разделу
«/vz/template/kvm/virtio-win-0.1-49.iso» — образ с драйверами

Создания LVM раздела:

[root@centos ~] lvcreate -L 100G -n web-server main
# web-server - имя раздела
# main - имя volume group

Образ с драйверами можно скачать здесь.

[root@centos ~] wget http://alt.fedoraproject.org/pub/alt/virtio-win/latest/images/bin/virtio-win-0.1-49.iso

После предыдущей команды будет запущена установка Windows. Установка производиться в интерактивном режиме, по этому нужно подключиться к графической консоли. Подключаться можно по ІР-адресу на нужный порт. Порт можно узнать такой командой

[root@centos ~] virsh vncdisplay win2k8-webserver
:0

Это означает, что для подключения к нашей виртуальной ОС, нужно использовать порт 5900. Для подключения к интерактивной установки можно использовать утилиту vncviewer. В нашем случаи:

[root@remote ~] vncviewer 192.168.1.10:5900

Теперь, чтобы установить базовые драйвера для Windows доходим до выбора Жесткого диска (drive selection screen), далее нажимаем на “load drivers” (заrрузить драйвера) и кликаем “Browse”. Далее переходим в «E:\viostor\wlh\{amd64|x86}» и выбираем нужные драйвера. По завершению установки у нас будет полноценный виртуальный windows сервер, к которому можно подключаться как по RDP так и по VNC.

Расположение основных конфигов.

/etc/libvirt/qemu.conf # основной конфиг qemu. Тут задаём параметры vnc сервера.
/etc/libvirt/qemu/win2k8-webserver.xml # папка для хранения конфигов виртуальных машин.

Далее наш конфиг-файл win2k8-webserver.xml можно использовать для разворачивания Windows VDS-серверов по шаблону.

[root@centos ~] lvcreate -L 50G -n win_templ main
[root@centos ~] dd if=/var/lib/vz/template/kvm_templates/win2008StdSP1R2x64-template.img of=/dev/main/win_templ
[root@centos ~] cp /etc/libvirt/qemu/win2k8-webserver.xml /etc/libvirt/qemu/win_templ.xml
[root@centos ~] vim /etc/libvirt/qemu/win_templ.xml # поменять логин, пароль, МАС-адрес
[root@centos ~] virsh -c qemu:///system define /etc/libvirt/qemu/win_templ.xml
[root@centos ~] virsh -c qemu:///system start win_templ
[root@centos ~] virsh -c qemu:///system autostart win_templ
[root@centos ~] virsh vncdisplay win_templ
:5

Если в виртуальной машине не поднялась сеть, нужно посмотреть настройки моста — есть ли виртуальный интерфейс созданной гостевой машины.

[root@centos ~] cat /etc/libvirt/qemu/win_templ.xml | grep mac
[root@centos ~] ip a | grep -B1 '28\:93'
vnet2 Link encap:Ethernet HWaddr 00:0c:29:28:93:a5
[root@centos ~] brctl show # увидим в каком из мостов наш vnet2, если нету - добавляем
[root@centos ~] brctl addif breth0 vnet2

Если на сервере настроен iptables — нужно добавить правила для подключения к виртуалкам.

IPTABLES -A INPUT -m state --state NEW -m tcp -p tcp -m multiport --dports 5900:5903,6001:6003 -j ACCEPT

Часто употребляемые команды.

virsh list --all   # листинг всех виртуальных машин
virsh start win_templ  # запуск виртуалки
virsh shutdown win_templ # выключение гладкое
virsh destroy win_templ # выключить по питанию (если не отвечает)
virsh undefine win_templ # удалить (конифг тоже удаляется)
virsh autostart win_templ # добавить в автозагрузку
virsh autostart --disable win_templ # удалить из автозагрузки
virsh qemu-monitor-command win_templ help --hmp # запустить команду в qemu мониторе
virsh define /etc/libvirt/qemu/win_templ.xml #обновление информации о машине
virsh vncdisplay win_templ # порт
virsh dumpxml win_templ | grep vnc # порт
Автор: admin, 1 июля 2013
Рубрики: Системы виртуализации
Метки: , , ,

Написать комментарий

Последние статьи

Яндекс.Метрика
?>