{{tag>system kernel virtual}}

====== Qemu-KVM ======

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

{{:system:libvirt_support.svg.png|}}

===== Устанока и настройка (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 ====

<code bash>
# losetup /dev/loop0 foo.img
# kpartx -av /dev/loop0
# mount /dev/mapper/loop0p1 /mnt

# unmount /mnt
# kpartx -dv /dev/loop0
# losetup -d /dev/loop0
</code>

==== QCOW2 Image ====

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

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

  * http://habrahabr.ru/post/170259/ :!:
  * https://wiki.debian.org/ru/KVM :!:
  * [[https://ru.wikibooks.org/wiki/%D0%A3%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B5%D0%B9_%D0%BD%D0%B0_%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5_libvirt|Управление виртуализацией на основе 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/

====== Другие системы виртуализации ======

{{topic>[virtual]}}
