Александр Горбач


программирование, админство

Настройка KVM под Ubuntu Server 10.04 LTS. Часть 4 – Управление гостевыми системами

без комментариев

Управление виртуальными машинами

Из командной строки

Вы можете управлять вашими виртуальными машинами из командной строки используя virsh. Вы можете получить список доступных команд если наберете «help». Наберите «help command» чтобы получить дополнительную информацию о конкретной команде.

Создание новых виртуальных машин

Перед тем как вы сможете управлять вашей новой виртуальной машиной, вы должны создать ее:

$ virsh --connect qemu:///system
Connecting to uri: qemu:///system
Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
       'quit' to quit

virsh # define /etc/libvirt/qemu/newvm.xml
Domain newvm defined from /etc/libvirt/qemu/newvm.xml

Обратите внимание, что для того чтобы увидеть в списке машину newvm, вы должные использовать ‘list —inactive’ или ‘list —all’, так как команда list без параметров показывает список только запущенных в настоящее время машин.

Список виртуальных машин

Virsh позволяет вам получить список доступных виртуальных машин:

yhamon@paris:/etc/libvirt/qemu$ virsh --connect qemu:///system
Connecting to uri: qemu:///system
Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
       'quit' to quit

virsh # help list
  NAME
    list - list domains

  SYNOPSIS
    list [--inactive | --all]

  DESCRIPTION
    Returns list of domains.

  OPTIONS
    --inactive       list inactive domains
    --all            list inactive & active domains

virsh # list
 Id Name                 State
----------------------------------
 15 mirror               running
 16 vm2                  running

virsh # list --all
 Id Name                 State
----------------------------------
 15 mirror               running
 16 vm2                  running
  - test5                shut off

Определение, удаление определения, запуск, выключение и уничтожение виртуальных машин

Виртуальные машины, которые можно увидеть с помощью команды list —all — это машины которые «определены» из XML-файла. Каждая виртуальные машина конфигурируется с помощью XML файла в директории /etc/libvirt/qemu. Если вы желаете удалить виртуальную машину из списка виртуальных машин, вам необходимо удалить ее определение:

virsh # undefine test5   # WARNING: undefine will delete your XML file!
Domain test5 has been undefined

virsh # list --all
 Id Name                 State
----------------------------------
 15 mirror               running
 16 vm2                  running

Для того чтобы можно было удалить определение виртуально машины, вам для начала нужно ее выключить:

virsh # shutdown mirror
Domain mirror is being shutdown

Это команда запрашивает мягкое выключение (аналогично выполнению shutdown в командной строке).

Примечание: Ubuntu 10.04 server не имеет установленного по умолчанию acpid. Этот пакет необходимо установить в гостевую операционную систему перед тем как она будет принимать любые запросы от хостовой системы.

Вы так же можете использовать «destroy», команда более нагло выключает виртуальную машину, аналогично выдергиванию шнура питания:

virsh # destroy mirror
Domain mirror destroyed

Если вы сделали изменения в конфигурационном XML-файле, вам необходимо попросить KVM перезагрузить его и перезапустить виртуальную машину:

virsh # define /etc/libvirt/qemu/mirror.xml
Domain mirror defined from /etc/libvirt/qemu/mirror.xml

Затем перезапустить виртуальную машину:

virsh # start mirror
Domain mirror started

Пауза и восстановление виртуальной машины

Virsh позволяет вам легко ставить на паузу и восстанавливать виртуальные машины.

virsh # suspend mirror
Domain mirror suspended

virsh # resume mirror
Domain mirror resumed

Редактирование свойств виртуальных машин

libvirt хранит их конфигурационные файлы как xml в ‘/etc/libvirt/qemu’. xml легок для понимания, и аналогичен файлам VMware *.vmx. Если желаете, то можете редактировать эти файлы и перезапускать libvirt-bin для того, чтобы изменения вступили в силу, но рекомендованный метод изменения свойств виртуальной машины с помощью virsh (или virt-manager, если он поддерживает свойства аппаратной части, которые нужно править). Концепция проста::

  1. экспортируйте (aka ‘dump’) xml-описание виртуальной машины, которую вы желаете поправить
  2. отредактируйте xml
  3. импортируйте (aka ‘define’) xml

К примеру, для того что бы отредактировать машину с именем ‘foo’ (вы можете получить список виртуальных машин с помощью команды ‘virsh list —all’), сделайте следующее:

$ virsh dumpxml foo > /tmp/foo.xml
(edit /tmp/foo.xml as needed)
$ virsh define /tmp/foo.xml

Добавление процессоров

KVM позволяет вам создатвать многопроцессорные гостевые машины. Для выделения двух CPUs виртуальной машине, экспортируйте xml как описано выше, затем отредактируйте его чтобы получилось:

<domain type='kvm'>
  ...
  <vcpu>2</vcpu>
  ...
</domain>

Теперь импортируйте виртуальную машину как описано выше.

Adding Memory

Для изменения памяти выделенной виртуальной машине, экспортируйте xml, затем отредактируйте его следующим образом:

<domain type='kvm'>
  ...
  <memory>262144</memory>
  <currentMemory>262144</currentMemory>
  ...
</domain>

Теперь импортируйте xml. Помните, что память выделяется в килобайтах, таким образом для выделения 512Мб памяти укажите 512 * 1024, или 524288.

Изменение модели сетевой карты

kvm и qemu сейчас по умолчанию использует rtl8139 NIC. Поддерживаемые модели в i82551, i82557b, i82559er, ne2k_pci, pcnet, rtl8139, e1000, и virtio. Для использования другой NIC, экспортируйте xml как описано выше, затем отредактируйте файл чтобы получилось:

<domain type='kvm'>
  ...
    <interface type='network'>
      ...
      <model type='e1000'/>
    </interface>
  ...
</domain>

Теперь импортируйте описание виртуальной машины.

Добавление проброса USB устройств (USB Pass-through)

Ограничения

  • USB protocol 1.1 only
  • Device must be plugged in before KVM starts
  • Apparmor modifications needed

Модификация Apparmor

Для того, чтобы программы получали доступ к usb устройствам apparmor должен быть изменения. Отредактируйте /etc/apparmor.d/abstractions/libvirt-qemu и отредактируйте:

# WARNING: uncommenting these gives the guest direct access to host hardware.
# This is required for USB pass through but is a security risk. You have been
# warned.
/sys/bus/usb/devices/ r,
/sys/devices/*/*/usb[0-9]*/** r,
/dev/bus/usb/*/[0-9]* rw,

После изменений нужно перезапустить apparmor:

$ sudo /etc/init.d/apparmor restart

Добавление USB устройств

Для начала найдите Vendor ID и Product ID usb устройства:

$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 005 Device 012: ID 0a5c:2110 Broadcom Corp. Bluetooth Controller
Bus 005 Device 003: ID 0483:2016 SGS Thomson Microelectronics Fingerprint Reader
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

В примере Broadcom Corp. Bluetooth Controller имеет вендора и идентификатор продукта соответственно 0a5c и 2110. Это должно быть указано в xml профиле. Это можно сделать с помощью virsh командой edit command.:

<domain type='kvm'>
  <name>windowsxp</name>
  …
  <devices>
    …
    <hostdev mode='subsystem' type='usb'>
      <source>
        <vendor id='0x0a5c'/>
        <product id='0x2110'/>
      </source>
    </hostdev>
  </devices>
</domain>

Получение новых идентификаторов

Для того, чтобы получить новый mac адрес для вставки в xml файл, используйте команду:

MACADDR="52:54:$(dd if=/dev/urandom count=1 2>/dev/null | md5sum | sed 's/^\(..\)\(..\)\(..\)\(..\).*$/\1:\2:\3:\4/')"; echo $MACADDR

Для получения уникального идентификатор (uuid) для вашего xml-файла, используйте: uuidgen

Автор Sash(k)a

Август 31st, 2011 at 6:20 пп

Опубликовано в Без рубрики

Тэги , , ,

Оставьте комментарий

Яндекс.Метрика