Работа с QEMU и KVM — различия между версиями

Материал из Rosalab Wiki
Перейти к: навигация, поиск
(Новая страница: «== Введение == Зачем это нужно, если уже есть ряд фронтендов разного уровня (libvirt, Proxmox, RHEV и...»)
 
(Запуск виртуальной ОС в QEMU)
 
(не показаны 2 промежуточные версии этого же участника)
Строка 11: Строка 11:
 
  cat /proc/cpuinfo | grep -E "vmx|svm"
 
  cat /proc/cpuinfo | grep -E "vmx|svm"
  
У вас будет что-то типа этого:
 
 
<pre>
 
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms
 
</pre>
 
 
В этом списке будет отмечено vmx либо svm.
 
  
 
Кроме того необходимо включить поддержку виртуализации в BIOS. На некоторых ноутбуках эта возможность может быть отключена производителем и потребуется перепрошивка BIOSа.
 
Кроме того необходимо включить поддержку виртуализации в BIOS. На некоторых ноутбуках эта возможность может быть отключена производителем и потребуется перепрошивка BIOSа.
Строка 48: Строка 41:
 
Где:
 
Где:
  
-f = укахывает на формат файла, лучше использовать формат '''qcow2''' родной для QEMU, он поддерживает сжатие.
+
create = создать файл
 +
 
 +
-f = укахывает на формат файла, лучше использовать формат '''qcow2''' родной для QEMU, qcow2 формат записи образа виртуальных машины с поддержкой сжатия, снапшотов и шифрования. Кроме того qcow2 образ занимает столько места, сколько данных записано в него виртуальной машиной, вне зависимости от размера создаваемого при создании
 +
 
 
RELS1.qcow2 = имя нашего файла образа
 
RELS1.qcow2 = имя нашего файла образа
 +
 
8G = размер файла для образа, в данном примере 8 Гигабайт.
 
8G = размер файла для образа, в данном примере 8 Гигабайт.
  
После вполнения данной команды у вас будет такое сообщение:
+
После выполнения данной команды у вас будет такое сообщение:
  
 
<pre>
 
<pre>
Строка 61: Строка 58:
  
 
== Установка ISO образа в QEMU ==
 
== Установка 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 ?
 +
 +
Будет список процессоров:
 +
 +
<pre>
 +
[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 ~]$
 +
</pre>
 +
 +
'''-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'''. Здесь, же нам это не требуется, т.к. уже имеется файл с установленной виртуальной системой.
 +
 +
В данном примере, мы включаем звук и сеть. Ну а остальные опции, описанные выше, "по вкусу". :)
 +
 +
[[Категория:Документация]]
 +
[[Категория:HOWTO]]
 +
[[Категория:Тестирование]]

Текущая версия на 12:18, 25 июня 2013

Введение

Зачем это нужно, если уже есть ряд фронтендов разного уровня (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. Здесь, же нам это не требуется, т.к. уже имеется файл с установленной виртуальной системой.

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