Настройка 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, так как установка полностью автоматизирована.

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

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

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

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

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

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

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

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

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

Примечание: когда используется параметр —libvirt, xml-файл отправляется в libvirt и не сохраняется локально. Используйте virsh -c qemu:///system или virt-manager -c 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. Эта строчка работает:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Смотри так же

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

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