Установка и настройка KVM в OpenSUSE

В качестве следующего примера рассмотрим настройку OpenSUSE в качестве хостовой ОС для запуска и управления виртуальными машинами.

Имеем установленную в минимальной конфигурации операционную систему. Установка гипервизора стандартна:

Проверим, загрузились ли необходимые для работы модули ядра, если нет, – можно перезагрузить хост или запустить их вручную:

Доустановим следующие пакеты:

zypper in virt-manager libvirt libvirt-python virt-viewer

В случае возникновения сообщения о возникших конфликтах, следует их разрешить, в указанном примере я выбрал решение с номером “3”

Далее необходимо дать необходимые разрешения непривелегированному пользователю, для возможности управления виртуальными машинами. Для этого можно выполнить от root-а:

usermod -A libvirt username

Либо воспользоваться yast, инструментом, входящим в состав операционной системы, для этого запустим его от пользователя root и выполним несколько простых шагов:

Выберем в разделе “Security and Users”  пункт “User and Group Management”

Найдем нужного пользователя и выберем “Редактировать”

В следующем окне выберем из списка и отметим для него членство в нужной группе, далее “OK”:

Следующем шагом будет создание сетевого устройства типа мост, оно потребуется для доступа извне к запущенным на данном хосте виртуальным машинам. Для этого так же пригодится инструмент администрирования yast, выберем “Network Devices -> Network Settings”:

Добавить

Тип устройства – из выпадающего списка “Мост” и “Далее”

Для создаваемого устройства нужно указать сетевые параметры, точно такие же как и у существующей сетевой картой, с которой в последующем будет связно устройство “Мост”:

И выбрать устройство моста – сетевую карту, о которой говорилось выше:

Для управления запускаемыми во время загрузки системы демонами, установим инструмент yast2-runlevel:

zypper in yast2-runlevel

Теперь в приложении yast2 выберем в разделе “System”  пункт “System Services (Runlevel)”:

И активируем демон libvirtd:

Следующим шагом будет обеспечение возможности X-Forwarding для запуска графического инструмента virt-manager удаленным клиентам, подключенным через ssh. Для этого нужно выполнить следующие действия:

Установить xauth

zypper in xauth

Отредактировать файл конфигурации /etc/sysconfig/ssh, таким образом добавив значение параметра -4 для опции SSHD_OPTS:

После внесения изменений и сохранения файла, перезапустим демон sshd:

# /etc/init.d/sshd restart

Дальше, если работа проводится через ssh-сессию, следует разлогиниться из системы, зайти снова и проверить результат
вызова переменной DISPLAY:

Использование

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

Virt-install – инструмент для создания новых машин:

virt-install \
--connect qemu:///system \
--name WinVista64 \
--ram 2048 \
--vcpus 2 \
--cpuset auto \
--cdrom ~/Загрузки/Vista_Business_64BIT_Russian_64_Bit.ISO \
--os-variant vista \
--network network=default,model=virtio \

--disk path='/var/lib/libvirt/images/WinVista64.qcow2',device='disk',size=40,sparse=false,cache='writeback',bus='ide',format='qcow2' \ --vnc \ --virt-type kvm<

где:

  • connect Гипервизор, к которому подключаемся
  • name Имя создаваемой машины
  • ram Сколько памяти отдать "гостю"
  • vcpus Количество предоставляемых процессоров
  • cpuset Привязка к конкретным процессорам (ядрам?) auto - на выбор системы
  • cdrom Источник установки, в данном случае образ загрузочного диска
  • os-variant Тип операционной системы
  • network Тип сети, здесь используется NAT, устройство - virtio
  • disk Путь к образу "гостя", size - размер в Гб, sparse=false - резервировать все пространство, cache - параметры кеширования
  • vnc Подключаться к гостю через VNC

Для создания дисковых образов виртуальных машин так же можно использовать утилиту qemu-img, которая позволяет легко создавать,
конвертировать из одного формата в другой, делать снимки и пр.

В следующем примере будет создан новый образ:

qemu-img create -f qcow2 -o preallocation='metadata' WinVista64.qcow2 40G

где:

  • -f формат образа (raw | qcow2 | qcow | vdi | vmdk)
  • -o параметры, для qcow2 можно указать "backing_file", "backing_fmt", "encryption", "cluster_size", "preallocation"

параметр preallocation='metadata' резервирует для образа все необходимое пространство, что положительно сказывается на производительности дисковой подсистемы.

А здесь мы сконвертируем образ из "сырого" формата "raw" в "qcow2"

qemu-img convert -f raw -O qcow2 -o preallocation=metadata WinVista64.img WinVista64.qcow2

Резюме

Относительно производительности гостевых операционных систем, запущенных в KVM, пока что у меня не было возможности сравнивать с другими продуктами виртуализации, такими как Xen, VMWare, Virtual-PC. Этому вопросу на различных ресурсах посвящено достаточно много обзоров и тестов. Субьективно, установка Windows 2003 Server 64 bit с ISO образа на сервере HP Proliant DL 120 G7 на RAID-5 массиве из 5 sas дисков, с предоставлением "гостю" RAW образа 160Гб, 2-ух ядер и 2-ух Гб ОЗУ проходит за 9,5 мин. И, хоть это не показатель быстродействия, старт полученной гостевой ОС занимает порядка 15сек.

Производительность дисковой подсистемы виртуальных машин очень сильно зависит от выбранного формата дискового образа, а так же метода кеширования (none | writethrough | writeback), соответственно - без кеширования, кеширование чтения, кеширование операций чтения и записи. Последний является наиболее быстрым, но сопровождается риском потери данных в случае краха хостовой системы.

Ещё один параметр, оказывающий немалое влияние на скорость работы виртуальной машины, - это sparse (true | false), по умолчанию, если не указан 'true' - не выделять все пространство для виртуального диска (медленно). Вышеуказанные опции для гостевой системы и ее дискового образа, доступны с помощью инструмента создания виртуальных машин virt-install, и, к сожалению отсутствуют в графическом приложении virt-manager.

Если дисковые образы создаются с помощью qemu-img, то для формата qcow2 так же можно задать опцию preallocation (off | metadata), которая как и вышеуказанная 'sparse' определяет, будет занимаемое образом дисковое пространство выделено немедленно или же оно будет расти по мере использования гостевой системой.

Конфигурационные файлы создаваемых виртуальных машин храняться в каталоге /etc/libvirt/qemu. В предыдущем примере был изменен формат образа диска машины WinVista64. Для того, что бы изменения были приняты, нужно отредактировать конфигурационный файл данной машины, для этого можно воспользоваться инструментом virsh:

virsh edit WinVista64

Который откроет соответствующий конфиг в текстовом редакторе (vi по умолчанию). Все внесенные изменения после сохранения файла, применяются автоматически.

Как уже говорилось, для нормального функционирования оконных операционных систем, на хосте совершенно не требуется наличие оконных менеджеров. Хотя потребуется включенная опция X11Forwarding в файле /etc/sshd_config. Далее можно подключаться к хостовой операционной системе через протокол ssh с опцией X-forward с компьютера с графическим оконным менеджером. В Unix-like для этого в строке подключения нужно указать опцию -X:

ssh -X -i .ssh/id_dsa max@10.110.140.24

В Windows системах X-сервер отсутствует, поэтому для начала необходимо скачать и установить свободный для использования Xming X Server. Затем, к примеру в таком известном ssh-клиенте как Putty в разделе X11 отметить опцию "Enable X11 forwarding". После выполнения этих условий можно запускать любые приложения c GUI на удаленном сервере, и конечно гостевые операционные системы.