Linux32 - Блог



LINUX32

Свобода выбирать


ArchLinux
Блог >> 2015 >> Февраль


06.02.2015

Qemu виртуализация




Добрый день.

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

Вообще подробно рассматривал я только две программы: VirtualBox и Qemu. С первым все относительно просто: удобное и понятное графическое окно программы, большая распространенность и кроссплатформенность, простота в настройке делают свое дело - Virtualbox становится оптимальным вариантом для запуска виртуальной машины при наличии достаточно мощного компьютера-хоста. Но необходимость неслабого компьютера в свою очередь становится сильным минусом этой программы.

В Qemu же сильной стороной является как раз значительно меньшее потребление ресурсов. На моем компьютере разница в потреблении ресурсов при запуске одной и той же виртуальной операционной системы в virtualbox и qemu оказалась порядка 20 раз!

Правда тут есть один нюанс, чтобы qemu предоставила такой выигрыш в производительности, необходимо чтобы процессор компьютера-хоста поддерживал технологию виртуализации, называемую VT-x для процессоров производства Intel и AMD-V для AMD-процессоров. Без поддержки этой технологии qemu использует программную эмуляцию компьютерного железа и, к сожалению, проигрывает в производительности virtualbox'у, поэтому такой вариант рассматривать я не буду. Также ядро вашей linux-системы должно поддерживать технологию KVM (т. е. встроенная в ядро виртуальная машина). Как вы могли заметить речь идет только о linux-системах. Для windows технология kvm недоступна (но нам ведь и не нужно!). С недавних пор поддержка kvm в ядре идет по умолчанию без необходимости его пересборки. Проверить поддержку процессором можно следующей командой из арчевской вики:

egrep --color=auto 'vmx|svm|0xc0f' /proc/cpuinfo


Если после выполнения данной команды в терминале пусто, значит, увы, но эта технология пока что не для вас.

Кстати, не забудьте предварительно активировать ее еще и в BIOS вашего компьютера.

Итак, все проверки пройдены, kvm нам доступна, можно запускать qemu.

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

qemu-system-i386 \
-name <имя_виртуальной_системы> \
-vga std \
-enable-kvm \
-localtime \
-cpu host \
-balloon virtio \
-m 256 \
-net nic,vlan=0,model=virtio \
-net user,vlan=0 \
-drive file=<путь_образа_жесткого_диска>.qcow2,if=virtio


Обратите внимание, что i386 в имени команды означается что эмулироваться будет архитектура i386. Qemu позволяет эмулировать также и другие архитектуры. Самый легкий способ просмотреть которые, это: открыть терминал, написать в нем qemu-system- и два раза нажать кнопку Tab, вы увидите все возможные варианты.

Теперь об используемых ключах команды:

• -name <имя_виртуальной_системы> - тут все просто, это имя вашей виртуальной машины;

• -vga std - указывает qemu использовать стандартный графический драйвер, который позволяет получить разрешение экрана виртуальной системы вплоть до 2560 x 1600 точек;

• -enable-kvm - ключ, указывающий qemu использовать технологию kvm о которой было написано выше;

• -localtime - указывает что qemu будет использовать локальное время вместо UTC;

• опции -cpu host и -balloon virtio я нашел на странице в арчвики, посвященной qemu. Они необходимы для ускорения работы виртуальной машины;

• -m 256 - задает количество оперативной памяти, доступной в виртуальной машине. В данном случае 256 Мб. По умолчанию, qemu выделяет 128 Мб;

• -net nic,vlan=0,model=virtio - означает что в виртуальной системе будет создано одно сетевое устройство модели virtio. Модели могут быть такие: e1000, i82551, i82557b, i82559er, ne2k_pci, pcnet, rtl8139 и virtio. Для многих из них нужно устанавливать в гостевую ОС драйвера (если не для всех). Могу сказать что как минимум для rtl8139 и virtio драйвера легко находятся в интернете;

• -net user,vlan=0 - ключ, с помощью которого мы говорим qemu создать виртуальную подсеть NAT и с помощью встроенного в qemu DHCP-сервера выдать виртуальной сетевой карте IP-адрес. С помощью этой опции виртуальная машина будет иметь доступ в интернет, при условии, конечно что компьютер-хост имеет к нему доступ;

• -drive file=<путь_образа_жесткого_диска>.qcow2,if=virtio - указывает путь к файлу-образу жесткого диска виртуальной системы. В данном случае в формате qcow2, особенностью которого является увеличение размера файла-образа по мере увеличения размера виртуальной системы до установленного первоначально максимального значения. Также существует возможность создания образа в формате raw, размер которого сразу равен максимальному заданному размеру. if=virtio опять же, означает эмулируемую модель диска.

Образ жесткого диска создается следующей командой:

qemu-img create -f qcow2 <имя_образа> 4G


Тут все понятно: указывается формат образа, его имя и размер.

Хочу обратить внимание что моделями виртуальных сетевой карты и жесткого диска выбраны virtio, так как на арчвики указывается что с драйверами для этих моделей виртуальная системы показывает наибольшую производительность и наименьшую нагрузку на хост-систему.

Помимо консольного метода запуска порекомендую еще и графическую программу для управления qemu - aqemu. В ней множество настроек, все интуитивно понятно и легко разобраться. Но больше всего мне понравилась функция вывода строки для терминала с помощью которой можно запустить qemu со всеми настройками, сделанными в этой программе.

В заключение хочу добавить, что qemu способна даже осуществлять так называемый "проброс" видеокарты в гостевую систему, при этом гостевая система будет работать на 95% мощности от реальной. В таком случае отпадет необходимость в дуалбуте из нескольких операционок. Правда, стоит оговориться, что для этого необходимо проделать дополнительные операции и требования к железу компьютера существенно увеличиваются. Проще говоря, не всякий компьютер так сможет.

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

Статья


Ваш комментарий:

Имя:
E-mail:
Код с картинки:
Комментарий: