Qemu-KVM

KVM (или Kernel-based Virtual Machine) — это программное решение, обеспечивающее виртуализацию в среде Linux на платформе x86, которая поддерживает аппаратную виртуализацию на базе Intel VT (Virtualization Technology) либо AMD SVM (Secure Virtual Machine).

Устанока и настройка (qemu-kvm libvirt-bin)

Установка

Проверяем, поддерживает ли CPU аппаратную виртуализацию:

# egrep '(vmx|svm)' /proc/cpuinfo

Если вывод не пустой, значит — процессор поддерживает аппаратную виртуализацию. Кому интересно, все действия выполнялись на конфигурации Intel Xeon Quad Core E3-1230 3.20 GHz / 8GB / 2x 1TB.

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

# apt-get install kvm libvirt

Запускаем сервис KVM

# service libvirtd start

Смотрим, загружен ли модуль KVM

# lsmod | grep kvm

Должны получить вывод:

kvm_intel 52890 16
kvm 314739 1 kvm_intel

В данном случае видим, что загружен модуль kvm_intel, так как произволитель CPU — Intel.

Проверка подключения к KVM

# virsh sysinfo

Должны получить вывод:

<sysinfo type='smbios'>
<bios>
<entry name='vendor'>HP</entry>
<entry name='version'>J01</entry>
.....

Настройка

Просмотрим список физических дисков на хост-сервере:

# fdisk -l

Получился вывод:

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
......

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
......

На жестком диске sda установлена ОС, его не трогаем, а вот на sdb создаем раздел на все свободное место диска с файловой системой ext4: (более подробно про следующие операции можно почитать здесь)

Выбираем диск для редактирования

# fdisk /dev/sdb

Создаем новый раздел

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1

Сохраняем изменения

Command (m for help): w
The partition table has been altered!

Создаем файловую систему ext4 на всем свободном месте диска /dev/sdb

# mkfs.ext4 /dev/sdb1

Создаем точку монтирования нашего жесткого диска для файлов виртуальных машин:

# mkdir /guest_images
# chmod 700 /guest_images
# ls -la /guest_images
total 8
drwx------. 2 root root 4096 May 28 13:57 .
dr-xr-xr-x. 26 root root 4096 May 28 13:57 ..

Многие советуют отключить вообще Selinux, однако мы выберем иной путь. Мы настроим его правильно.

# semanage fcontext -a -t virt_image_t /guest_images

Если выполнение этой команды не будет успешным, надо установить дополнительный пакет. Сначала узнаем, какой пакет предоставляет данную команду

# apt-get install apt-file
# apt-file search /usr/sbin/semanage

Получим вывод:

Устанавливаем policycoreutils-python

# apt-get -y install policycoreutils-python

После этого снова:

# semanage fcontext -a -t virt_image_t /guest_images

Смонтируем раздел /dev/sdb1 в /guest_images

# mount -t ext4 /dev/sdb1 /guest_images

Отредактируем файл /etc/fstab для того, чтобы при перезагрузке хост-сервера раздел с ВМ монтировался автоматически

# vi /etc/fstab

Добавляем строку по примеру тех, что уже имеются в файле

/dev/sdb1 /guest_images ext4 defaults 1 1

Сохраняем файл и продолжаем создание хранилища:

# virsh pool-define-as guest_images_dir dir - - - - "/guest_images"
Pool guest_images_dir defined

Проверяем, создалось ли оно:

# virsh pool-list --all
Name State Autostart
-----------------------------------------
default active yes
guest_images_dir inactive no

Далее:

# virsh pool-build guest_images_dir
Pool guest_images_dir built

Запускаем хранилище:

# virsh pool-start guest_images_dir
Pool guest_images_dir started
# virsh pool-list --all
Name State Autostart
-----------------------------------------
default active yes
guest_images_dir active no

Добавляем в автозагрузку:

# virsh pool-autostart guest_images_dir
Pool guest_images_dir marked as autostarted
# virsh pool-list --all
Name State Autostart
-----------------------------------------
default active yes
guest_images_dir active yes

Проверяем:

# virsh pool-info guest_images_dir

Администрирование

virsh

http://blog.erema.name/virsh-man-po-russki/18/

Подключение/Отключение внешнего диска

$ virsh attach-disk comp1 /dev/sdb vdd --type disk
$ virsh deatach-disk comp1 vdv

$ virsh -c qemu:///system attach-disk comp1 /dev/mapper/vgjb-lvsun--ch sda

xml

$ virsh -c qemu:///system attach-device comp1 /root/sunch_disk.xml

https://github.com/retspen/webvirtmgr

Восстановление после падения

Монтирование дисков

RAW Image

# losetup /dev/loop0 foo.img # kpartx -av /dev/loop0 # mount /dev/mapper/loop0p1 /mnt # unmount /mnt # kpartx -dv /dev/loop0 # losetup -d /dev/loop0

QCOW2 Image

# modprobe nbd max_part=8 # qemu-nbd --connect=/dev/nbd0 disk.img # mount /dev/nbd0p1 /mnt

Документация / Ссыслки

http://habrahabr.ru/post/170259/

https://wiki.debian.org/ru/KVM

Управление виртуализацией на основе libvirt

http://andreykl.blogspot.ru/2011/12/kvm-centos-62-lvm.html

http://www.opennet.ru/openforum/vsluhforumID1/91772.html

http://www.cyberciti.biz/faq/kvm-virtualization-in-redhat-centos-scientific-linux-6/

https://www.howtoforge.com/how-to-install-kvm-and-libvirt-on-centos-6.2-with-bridged-networking

http://wiki.centos.org/HowTos/KVM

http://www.cyberciti.biz/faq/centos-rhel-linux-kvm-virtulization-tutorial/

http://isborken.blogspot.ru/2012/02/headless-kvm-setup-on-centos-62.html

http://habrahabr.ru/post/168791/

http://blog.erema.name/virsh-man-po-russki/18/

http://mldav.blogspot.ru/2012/02/debian-kvm.html

http://habrahabr.ru/post/120432/

http://www.cyberciti.biz/faq/kvm-virtualization-in-redhat-centos-scientific-linux-6/

http://itman.in/kvm-manage-virsh/

http://habrahabr.ru/post/168791/