Работа с QEMU и KVM

Материал из Rosalab Wiki
Перейти к: навигация, поиск

Введение

Зачем это нужно, если уже есть ряд фронтендов разного уровня (libvirt, Proxmox, RHEV итд)? В любом случае фронтенды вынуждены вызывать qemu с множеством опций, поэтому в некоторых случаях (тестирование новых возможностей, отладка, развлечение) намного приятней и понятней работать непосредственно с qemu. Кроме того знания полезны для общего развития и понимания работы систем.

Как связаны qemu и технология KVM? Qemu - эмулятор, который может работать и без KVM, но использование аппаратной виртуализации значительно ускоряет работу гостевых систем, поэтому KVM является предпочтительным вариантом.

Создание файла образа

Для начала стоит проверить, поддерживается ли аппаратная виртуализация вашим процессором. Для этого стоит убедиться что в параметрах камня имеется флаг vmx или svm (В зависимости от производителя Intel/AMD.)

cat /proc/cpuinfo | grep -E "vmx|svm"


Кроме того необходимо включить поддержку виртуализации в BIOS. На некоторых ноутбуках эта возможность может быть отключена производителем и потребуется перепрошивка BIOSа.

Устанавливаем QEMU:

urpmi qemu

После установки следует перезагрузить компьютер, чтобы система подключила модули ядра kvm и kvm_intel (kvm_amd). После перезагрузки проверим, подключены ли модули ядра:

[root@localhost pastordi]# lsmod | grep kvm
kvm_intel             137021  0 
kvm                   448299  1 kvm_intel
[root@localhost pastordi]#

Если нет желания перегружаться, можно в самим подключить эти модули:

modprobe kvm
modprobe kvm_intel #Для процессоров AMD подключаем kvm_amd

Далее, если все хорошо, то создаем файл для образа нашей системы.

qemu-img create -f qcow2 RELS1.qcow2 8G

Где:

create = создать файл

-f = укахывает на формат файла, лучше использовать формат qcow2 родной для QEMU, qcow2 формат записи образа виртуальных машины с поддержкой сжатия, снапшотов и шифрования. Кроме того qcow2 образ занимает столько места, сколько данных записано в него виртуальной машиной, вне зависимости от размера создаваемого при создании

RELS1.qcow2 = имя нашего файла образа

8G = размер файла для образа, в данном примере 8 Гигабайт.

После выполнения данной команды у вас будет такое сообщение:

[pastordi@localhost ~]$ qemu-img create -f qcow2 RELS1.qcow2 8G
Formatting 'RELS1.qcow2', fmt=qcow2 size=8589934592 encryption=off cluster_size=65536 lazy_refcounts=off 
[pastordi@localhost ~]$

Установка ISO образа в QEMU

Сначала нам надо запустить ISO образ в QEMU, затем проинсталлировать, и потом уже использовать полученную виртуальную систему.

qemu-kvm -cpu SandyBridge -enable-kvm -net nic,vlan=0 -net user,vlan=0 -hda RELS1.qcow2 -cdrom ./ROSA-Server-6.4-x86_64-DVD.iso -boot d -m 2048

Разберем по порядку, что тут и как:

-cpu SandyBrige = опция отвечающая за эмуляцию командных инструкций процессоров под кодовым названием SandyBrige. В принципе вы можете узнать какие еще процессора поддерживает qemu и выбрать свой.

qemu-kvm -cpu ?

Будет список процессоров:

[pastordi@localhost ~]$ qemu-kvm -cpu ?
x86       Opteron_G4
x86       Opteron_G3
x86       Opteron_G2
x86       Opteron_G1
x86      SandyBridge
x86         Westmere
x86          Nehalem
x86           Penryn
x86           Conroe
x86           [n270]
x86         [athlon]
x86       [pentium3]
x86       [pentium2]
x86        [pentium]
x86            [486]
x86        [coreduo]
x86          [kvm32]
x86         [qemu32]
x86          [kvm64]
x86       [core2duo]
x86         [phenom]
x86         [qemu64]
[pastordi@localhost ~]$

-enable-kvm = включаем поддержку kvm ядра. Если мы не включим эту опцию, то qemu будет запущен без использования kvm.

-net nic,vlan=0 -net user,vlan=0 = включение эмуляции сетевого адаптера.

-hda RELS1.qcow2 = указываем какой файл образ будем использовать. Выше было описано, как его создавать.

-cdrom ./ROSA-Server-6.4-x86_64-DVD.iso = опция указывает, что мы будем использовать ISO образ который находится виртуально на устройстве cdrom.

-boot d = указывает, что грузиться qemu будет с cdrom (т.е. с нашего ISO образа) но буква d говорит о том, что ISO образ находится не в приводе cdrom, а на жестком диске.

-m 2048 = указывает, сколько памяти будет выделено под работу qemu. В данном примере 2 Гигабайта.

Итак, мы разобрали наши ошпции, и можно запускать на инсталляцию. Однако есть некоторые ньюансы. Например некоторые образы дистрибутивов не работают из-за настроек vga карты. По- этому, если такое случается, не расстраивайтесь, добавьте в команду запуска опцию: -vga std.

Так же, некоторым захочется иметь еще и звуковую карту рабочую. Тогда в строку запуска следует добавить опцию: -soundhw ac97.

Ну и для гурманов, конечно же можно поиграться с указанием количества процессоров и потоков. Например, можно указать: -smp 4,core=4.

Запуск виртуальной ОС в QEMU

После того, как установили систему. Можно пробовать ее запускать.

 qemu-kvm -cpu SandyBridge -enable-kvm -soundhw ac97 -net nic,vlan=0 -net user,vlan=0 -hda RELS1.qcow2 -m 2048

Отличие данной строки запуска, от строки запуска с ISO образом в том, что в первом случае мы указываем параметр: -cdrom ./ROSA-Server-6.4-x86_64-DVD.iso и -boot d. Здесь, же нам это не требуется, т.к. уже имеется файл с установленной виртуальной системой.

В данном примере, мы включаем звук и сеть. Ну а остальные опции, описанные выше, "по вкусу". :)