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


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

Настройка KVM под Ubuntu Server 10.04 LTS. Часть 3 – Создание гостевых машин

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

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

Теперь, когда KVM установлен, давайте разберем как создать вашу первую виртуальную машину.

Это можно сделать используя:

  • virt-manager: графическое приложение
  • virt-install,скрипт на pythonразработанный компанией Red Hat
  • ubuntu-vm-builder, разработанный Canonical.

Ubuntu-vm-builder: быстрый и мощный инструмент для создания виртуальных машин Ubuntu JEOS

Ubuntu-vm-builder, возможно, лучший инструмент если вы желаете сделать виртуальный машин в Ubuntu JEOS, так как установка полностью автоматизирована.

Инструмент есть в пакетах в репозитарии:

sudo apt-get install ubuntu-vm-builder

Примечание: вам необходимо, чтобы был установлен grub, чтобы vmbuilder заработал. Если вы используете lilo для запуска вашей хост-машины, вам все равно необходимо установить пакет Grup. Вы можете продолжать использовать lilo как бут-менеджер основной системы, но гостевые машины будут использовать grub. grub используется для создания загрузочных образов гостевых систем.

Примечание: убедитесь, что у вас хватает места на разделе с директорией /tmp (1Гб или больше). Также, некоторые локали глючат с ubuntu-vm-builder; en_US — точно будет рабочей.

Простое использование

Ниже самый простой пример как использовать утилиту:

sudo ubuntu-vm-builder kvm hardy

Это сделает Ubuntu Hardy, со всеми параметрами, установленными по умлочанию.

Или же вы можете использовать эту ссылку для Javascript-ового инструмента, который генерирует кучу параметров, доступных для ubuntu-vm-builder:

http://people.ubuntu.com/~kirkland/ubuntu-vm-builder.html

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

--libvirt qemu:///system

Скрипт, к сожалению, не может добавить этой опции.

Примечание: когда используется параметр —libvirt, xml-файл отправляется в libvirt и не сохраняется локально. Используйте virsh -c qemu:///system или virt-manager -c qemu:///system для запуска вашей машины или изменения ее конфигурации.

Более продвинутый пример

Теперь разберем более продвинутый пример:

ubuntu-vm-builder kvm hardy \
                  --domain newvm \
                  --dest newvm \
                  --arch i386 \
                  --hostname hostnameformyvm \
                  --mem 256 \
                  --user john \
                  --pass doe \
                  --ip 192.168.0.12 \
                  --mask 255.255.255.0 \
                  --net 192.168.0.0 \
                  --bcast 192.168.0.255 \
                  --gw 192.168.0.1 \
                  --dns 192.168.0.1 \
                  --mirror http://archive.localubuntumirror.net/ubuntu \
                  --components main,universe \
                  --addpkg acpid \ 
                  --addpkg vim \
                  --addpkg openssh-server \
                  --addpkg avahi-daemon \
                  --libvirt qemu:///system ;

Этак команда создаст новую виртуальную машину Ubuntu Hardy с именем «newvm», сетевое имя машины будет «hostnameformyvm», сеть будет сконфигурирована со статическим IP-адресом и адрес шлюза будет 192.168.0.1. Ключ —mirror указывает скрипту на то, чтобы скачивать пакеты с локального зеркала Ubuntu вместо сервера по умолчанию (это может сэкономить много времени при создании виртуальной машины). Параметр components включает репозитарии main и universe по умолчанию в виртуальной машине, —addpkg vim устанавливает vim, и, наконец, последний аргумент добавляет только что созданную виртуальную машину в KVM.

Добавлением ‘openssh-server’ с помощью —addpkg, мы делаем возможным подключение по ssh к нашей новой машине после ее запуска (если сеть будет работать правильно).

Добавлением ‘avahi-daemon’ виртуальная машина добавляет запись MDNS (‘ubuntu.local’ в этом примере), так что вы можете подключиться по ssh right без выяснения какой адрес DHCP присвоил машине.

Примечание: Это руководство не рассматривает опцию —exec, используемую для запуска скрипта во время процесса сборки виртуальной машины. Если вы используете ключ —exec, то вы должны указать полный путь к скрипту, который желаете выполнить. Если этого не сделать, можно насечься на сообщение установщика, что он не может найти скрипт.

Предупреждение о багах: похоже, что пакет ‘linux-package’ не будет находиться во время сборки машины, пока ‘restricted’ так же указано в опции component ubuntu-vm-builder а. Если не указано, то вы получите нефункионирующую систему, которая может только загружаться в grub. Эта строчка работает:

--components 'main,universe,restricted'

Скорее всего это глюк ubuntu-vm-builder.

Предупреждение о необходимых пакетах: Когда вы управляется гостевыми машинами, команды выключения и перезагрузки (shutdown/reboot), отправляемые virsh — это события ACPI. Таким образом чтобы машина нормально перезагружалась/выключалась необходимо включить поддержку ACPI. Если гостевая операционная система Ubuntu — выполните «sudo apt-get install acpid».

Запуск машины, созданной в «продвинутом примере»

Единожды создав гостевую машину, вы можете увидеть ее набрав следующее:

virsh 'list --all'
You'll see :

 Id Name                 State
----------------------------------
 - YourGuestName         shut off

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

virsh start YourGuestName

Доступ к новому серверу удаленно, используя SSH туннель / VNC

Если ваш сервер удаленный, то вы можете использовать две следующие команды с вашей локальной машины.

Первая гостевая машина доступна по умолчанию по адресуvnc:127.0.0.1:5900. Если вы удаленно подключетесь к серверу, вы можете настроить ssh туннель и удаленно подключиться по vnc к виртуальному серверу.

Из терминала на локальной машине:

ssh YOURUSER@YOURSERVER -L5900:127.0.0.1:5900

Теперь идите в Приложения -> Интернет-> Подключение к удаленному рабочему столу. Протокол : VNC Хост : 127.0.0.1 Все остальное по умолчанию.

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

Установка на не форматированные блочные устройства (raw devices)

Ubuntu-vm-builder не поддерживает создание виртуальных машина на raw блочных устройствах (таких как отдельный раздел или iSCSI шара). Вы можете использовать ubuntu-vm-builder для создания образа qcow2 и затем переместить виртуальную машину на блочное устройство с помощью qemu-img, например, если /dev/sdb это блочное устройство, на которое вы желаете перенести виртуальную машину:

sudo qemu-img convert root.qcow2 -O raw /dev/sdb

Отредактируйте XML файл виртуальной машины в /etc/libvirt/qemu/, и установит параметр source file:

<source file='/dev/sdb'/>

Переопределите виртуальную машину и запустите ее; теперь он работает с /dev/sdb.

Ubuntu-vm-builder это очень мощный инструмент — для получения более подробного описания ее возможностей наберите ubuntu-vm-builder —help.

Создание виртуальных машин с другими операционными системам: virt-install

Virt-install кардинально отличается в способе работы. Вместо автоматического создания новой виртуальной машины, он позволяет вам загрузить iso — образ, и, поэтому, установить практически любую операционную систему. Для списка поддерживаемых операционных систем, просмотрите официальную страницу KVM.

Так как нам необходим virt-install для установки гостевых систем Windows, здесь мы опишем как установить гостевой системой windows XP. В проессе установки возникает много мелких нюансов, потому опишем так же обходные пути.

Пример установки Windows

установка windows на kvm

Скопируйте ISO-образ системы, которую вы желаете установить в вашу рабочую директорию:

yhamon@paris:~$ ls *.iso
ubuntu-8.04-server-i386.iso  windowsxpsp2.iso

или создайте ISO из cd/dvd:

dd if=/dev/dvd of=dvd.iso

Установка virt-install:

sudo apt-get install python-virtinst

Затем, вам необходимо запустить virt-install.

sudo virt-install --connect qemu:///system -n xpsp2 -r 512 -f windows.qcow2 -s 12 -c windowsxpsp2.iso --vnc --noautoconsole --os-type windows --os-variant winxp

Эта команда загрузит новую виртуальную машину с ISO-образа. Присоединитесь к новой виртуальной машине с помощью virt-viewer:

virt-viewer -c qemu:///system xpsp2

Или, если KVM запущен на другом сервере:

virt-viewer -c qemu+ssh://ip/system xpsp2

Теперь вы можете приступить к установке. Другая проблема возникает после первой перезагрузки в процессе установки, когда установщик виндовс будет ругаться на то, что он не видит больше диска. В XML файле вируталной машине добьте следующее к списку устройств:

<domain type='kvm'>
  [...]
  <devices>
    [...]
    <disk type='file' device='cdrom'>
      <source file='//home/yhamon/windowsxpsp2.iso'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
    </disk>
  </devices>
</domain>

Переопределите VM в virsh (sudo virsh define /etc/libvirt/qemu/xpsp2.xml) и перезапустите гостевую машину — все должно заработать.

Другая проблема с virt-install в сочетании с Windows в том, что созданный образ диска поврежден. При первой установке все вроде бы работает, но после перезагрузки она останавливается с сообщением ‘A read error occured’ (произошла ошибка чтения). Это может быть легко исправлено созданием нового образа диска (перед установкой):

qemu-img create -f qcow2 disk0.qcow2 12G

Перезапишите файл qcow2, созданный virt-install новым файлом, перезагрузите гостевую машину и можно продолжать.

Пример установки Ubuntu

Вы можете использовать нижеследующее для установки Ubuntu Hardy:

sudo virt-install --connect qemu:///system -n hardy -r 512 -f hardy.qcow2 -s 12 -c hardy-server-amd64.iso --vnc --noautoconsole --os-type linux --os-variant ubuntuHardy --accelerate --network=network:default

Опция ‘—network’ настраивает машину на использование дефолтной сети libvirt. Вы можете просмотреть доступные сети libvirt networks с помощью:

virsh net-list --all

Другие операционные системы

Другие операционные системы могут быть установлены при помощи методов, описанных выше. Изучайте ‘man virt-install’ для более подробной информации о друиг параметрах для ваших виртуальных машинах и поддерживаемых типах операционных систем и видов.

Внимание: этот метод не работает с установкой Fedora LiveCD, и, вобзможно другими; см ошибку здесь: https://bugs.launchpad.net/ubuntu/+source/kvm/+bug/220463

Клонирование виртуальной машины

Вы можете клонировать существующую виртуальную машину используя утилиту virt-clone. Она копирует образ диска и устанавливает конфигурацию виртуального домена машины.

Если вы желаете склонировать виртуальную машину с именем srchost в новую машину newhost, убедитесь, что машина srchost не запущена и выполните следующую команду.

$ virt-clone --connect=qemu:///system -o srchost -n newhost -f /path/to/newhost.qcow2

Создание виртуальной машины на существующем образе

Если предположить что:

  • Virt-manager используется для управления виртуальными машинами.
  • Вы жалете добавить уже существующий образ в virt-manager.

Вариант решения:

Используя qcow2 с наложением, вы можете по жесткой экспериментировать с вашими виртуальными машинами без заморочек с полной переустановкой вашей машины при ее повреждении. Побочный эффект этого метода по сравнению с клонированием, это более экономное использование дискового пространства.

Процедура по шагам:

1. Создайте образ жесткого диска формата qcow2:

$ qemu-img create -f qcow2 <image name>.qcow2

2. Установите виртуальную машину, используя virt-manager:

Вместо разрешения virt-manager у создать новый образ диска, просто перенаправьте его на использование образа, который мы сделали в предыдущем шаге.

3. создание наложения:

$ qemu-img create -f qcow2 -b <image name>.qcow2 <image name>.ovl

4. Создайте XML-файл описания виртуального образа:

Прочтите сначала:

$ man virt-image
$ man 5 virt-image

Скопируйте XML-файл, созданный ранее в шаге 2:

$ cp ~/.libvirt/qemu/<vm name>.xml overlay.xml

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

$ <editor> overlay.xml

Создайте XML описание виртуального образа, опираясь на страницу мана virt-image(5). Я просто закомментировал оригинальный текст, и использовал его как руководство по созданию нового описания.

5. Создайте новую виртуальную машину из описания образа:

$ virt-image --vnc overlay.xml

6. Запустите и проверьте новую виртуальную машину, основанную на технологии наложения.
Откройте новую виртуальную машину в virt-manager и проверьте, что все что дорого вашему сердцу на месте. Если вы поломали виртуальную машину, просто удалите ее. Затем, пересоздайте образ-наложение (overlay image) и пересоздайтевиртулаьную машину как описано выше. Вы можете если желаете зафиксировать изменения в базовый образ (см man qemu для подробностей).

Смотри так же

Специфичные для систем рекомендации см в FAQ.

apt-cacher-ng для зеркалирования. Вы можете уменьшить время установки на 3-4 минуты при использовании ubuntu-vm-builder для соответствующих машин.

Автор Sash(k)a

Август 25th, 2011 at 3:34 пп

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

Тэги , , ,

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

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