- Подписка на печатную версию:
- Подписка на электронную версию:
- Подшивки старых номеров журнала (печатные версии)
LXF138:Virtualization
Материал из Linuxformat.
- Hardcore Linux Проверьте себя на крутом проекте для продвинутых пользователей
Содержание |
Виртуализация: Миграция
- Когда дело доходит до виртуализации, VMware – не единственный выбор. Джон Ламби покажет, как перенести виртуальные ОС на Qemu или VirtualBox.
Вам когда-нибудь снился сон, где вы снова сражались бы с VMware Server, пытаясь заставить его работать на новом ядре Linux, а от него вдруг оставалась только комки жевательной резинки, соединенные обрывками бечевки и липкой лентой? Это и правда гениальное изобретение, но в итоге может выйти залатанным, как египетская мумия.
К счастью, есть и другие приложения для Linux, способные принять гостевую операционную систему. Мы называем их менеджерами виртуальных машин (VMM), и поставляются они в нескольких вариантах, в диапазоне между менеджерами виртуальных машин с полной виртуализацией, типа VMware, выполняемыми как процессы в Linux, и «паравиртуализато- рами», которые выполняются ниже уровня стандартной ОС, загружая специально модифицированные ядра Linux; в их число входят Xen и ESXi от VMware.
Мы выбрали два менеджера с полной виртуализацией – Qemu и VirtualBox; оба свободны (или хотя бы бесплатны), находятся в активной разработке, хорошо поддерживаются и широко используются. И оба предлагают содействие в миграции с VMware.
Миграция шаг за шагом
Наш урок поможет вам пройти процесс миграции, справиться с проблемами, которые могут возникнуть, и прогнать дурные сны. Урок рассчитан в основном на тех, кто будет работать с 32‑битной гостевой операционной системой. Для 64‑битных ОС все тоже справедливо, но со своей спецификой, о которой можно узнать в документации по VMM. В общем случае, чтобы мигрировать на новый менеджер виртуальных машин, нужны следующие пять шагов:
1 Установите пакеты нового VMM. Двоичные пакеты можно найти в вашем дистрибутиве или на сайте VMM. Если их там нет, скомпилируйте их из исходников.
Ситуация с VirtualBox чуть сложнее. Oracle предоставляет две версии: стандартную установку и Open Source Edition (VirtualBox OSE). Это не одно и то же! Двоичная версия поддерживает виртуальный USB, но в ней нет встроенного сервера VNC. С OSE все наоборот.
Чтобы получить VNC-сервер, OSE нужно собрать с определенными опциями. Даже если в вашем дистрибутиве есть двоичный пакет VirtualBox OSE, в нем может быть или не быть поддержки VNC. И одна из этих опций не работает с графической консолью – для управления гостевой ОС надо обходиться командной строкой. VNC-сервер от OSE показался мне слегка нестабильным, и я советовал бы вам взять версию с закрытыми исходниками от Oracle.
2 Импортируйте или скопируйте описание гостевых ОС. И virt-etc, и VirtualBox поддерживают импорт из Open Virtualisation Format (OVF): это промышленный стандарт для экспорта и импорта описаний виртуальных машин. VMware Server версии 1 не поддерживает экспорт в OVF, но VMware Server версии 2 и более новые менеджеры виртуальных машин от VMware поддерживают. В virt-etc есть утилита virtconvert, которая выполняет преобразование прямо из форматов VMware .vmx и .vmdk в формат virt-image, используемый virt-manager. Она также поддерживает связанные с ним определения дисков .vmdk. Однако для преобразования от VMware Server версии 1 к VirtualBox нужно либо мигрировать на версию 2 и затем воспользоваться OVF, либо начать с нуля.
3 Импортируйте, скопируйте или переустановите содержимое дисков гостевой виртуальной машины (ГВМ). Если вы пользуетесь OVF или (для миграции на virt-etc) virt-convert и virt-image, они позаботятся о содержимом дисков – как виртуальных, так и физических разделов. В последнем случае либо создайте их копии на другом диске и воспользуйтесь ими для новой ГВМ, либо сделайте их резервные копии, прежде чем новая ГВМ начнет работать с ними.
Это позволяет мигрировать на VirtualBox без использования OVF. К счастью, в VirtualBox можно использовать для дисков те же файлы .vmdk, что и в VMware.
4 Проведите все необходимые изменения в ГВМ – задайте драйверы устройств и настройки монитора. Для VirtualBox и ГВМ Windows установите гостевые дополнения [Guest Additions]. Можно сделать это и для ГВМ Linux, но тут придется еще и собирать гостевые модули ядра. Другой подход при запуске ГВМ Linux на компьютере с Linux в качестве главной ОС – отключить X Window в ГВМ и экспортировать DISPLAY гостевой виртуальной машины в основную ОС, и там появятся гостевые окна; далее для ГВМ понадобится только обычная VGA-консоль.
В случае с Qemu убедитесь, что в ГВМ есть драйверы для выбранных виртуальных устройств. Вы можете обнаружить ограничения на их работу. Например, консоль Cirrus Logic ГВМ Windows 2000 ограничена размерами 1024 × 768, но в Windows XP этот параметр больше.
Специальные дисковые и сетевые драйверы для ГВМ Qemu доступны для Linux и Windows в составе пакета kvmvirtio. Для ГВМ Linux они поставляются с ядром. Для ГВМ Windows их можно загрузить с сайта KVM Red Hat, они неудобны в установке и не вносят особых улучшений, но если больше никакие виртуальные устройства не работают, попробуйте эти. Для графических консолей нет драйвера virtio. VirtualBox также поддерживает сетевое устройство virtio, но не диск virtio.
5 Если вы хотите (больше) пользоваться снимками [snapshots], потребуется запастись дисковым пространством.
Раскрути мне Live CD с диском
Теперь перенесем в Qemu ГВМ Live CD Linux с виртуальными дисками. Эта ГВМ загружается с Live CD и также содержит один виртуальный диск, который нужно перенести. Настройте такую ГВМ в VMware или воспользуйтесь Live CD из LXF138 и считайте виртуальный диск необязательным. Мы посмотрим на размер памяти и сеть и преобразуем содержимое диска.
Qemu поставляется в двух вариантах. Первый, qemu-kvm, поддерживает аппаратное ускорение (необходим соответствующий процессор), а второй, qemu-kqemu (более старая версия) предоставляет программное ускорение. Вам понадобится установить один из них, а также пакеты virt-etc.
В данном случае можно воспользоваться утилитами virt-convert и virt-image для преобразования описаний и диска VMware в формат Qemu и создания новой ГВМ.
virt-convert получает описание ГВМ из файла .vmx VMware и преобразует содержимое диска с помощью утилиты qemu-img. Qemu поддерживает несколько альтернативных форматов; .qcow2 – лучший из них, но если вам нужен доступ к файловой системе из хост-компьютера, выберите «сырой» образ диска. virt-image создает новую ГВМ на основе образа, созданного virt-convert с параметрами командной строки, включая:
- Объем памяти Может повлиять на производительность. Пока оставьте значение по умолчанию. После создания ГВМ стоит попробовать разные значения и сравнить результаты.
- Сеть Выберите мостовую схему вместо обычной NAT-сети (LXF137:libvirt|LXF137]]). Она меньше нагружает систему, и ею проще управлять из командной строки Qemu. В VMware мостовое устройство создается при установке пакета, и оно одно и то же для всех ГВМ. В virt-etc оно задается отдельно для каждой ГВМ. В Qemu оно должно быть одной из логических сетевых карт – tap[0‑n] или virbr[0‑n]. В virt-etc по умолчанию используется virbr0.
Если все задано правильно, ГВМ запустится! Поэтому сделайте снимок системы после virt-convert, но перед virt-image. В virt-etc еще нет функционала для создания снимков – воспользуйтесь командой qemu-img.
Вот несколько примеров:
virt-convert -i vmx -o virt-image -D qcow2 –hvm --os-type=linux --os-variant=fedora13 \ /home/vmware/Virtual_Machines/Livepdk /root/qemu_virt_images/Livepdk ls -l /root/qemu_virt_images/Livepdk/Livepdk-000002.qcow2 -rw-r--r-- 1 root root 3473408 Jul 28 21:49 /root/qemu_virt_images/Livepdk/Livepdk-000002.qcow2 qemu-img snapshot -c snapshot /root/qemu_virt_images/Livepdk/Livepdk-000002.qcow2 ls -l /root/qemu_virt_images/Livepdk/Livepdk-000002.qcow2 -rw-r--r-- 1 root root 3539456 Jul 29 10:18 /root/qemu_virt_images/Livepdk/Livepdk-000002.qcow2 virt-image --connect qemu:///system –name=Livepdk_cnvtd --ram=512 --os-type=linux \ --os-variant=fedora13 --noacpi –network=bridge=virbr0 --vnc --vncport=5907 \ /root/qemu_virt_images/Livepdk/Livepdk.virt-image.xml
Как видите, снимок сохраняется в файле образа:
qemu-img snapshot -l /root/qemu_virt_images/Livepdk/ Livepdk-000002.qcow2; Snapshot list: ID TAG VM SIZE DATE VM CLOCK 1 snapshot 0 2010-07-29 10:18:58 00:00:00.000
Если у ГВМ нет виртуального диска (то есть это чистый Live CD), воспользуйтесь командой virt-install, а не virtimage. Эти команды похожи, но virt-install принимает все описательные параметры из командной строки, а virt-image берет их из файла образа. Для создания новой ГВМ также можно было воспользоваться графической оболочкой virt-manager. Это достаточно просто, но не забудьте снять галочку с Enable storage [Активировать устройства хранения данных], если не хотите устанавливать новые образы себе на диски!
Опция -snapshot команды Qemu – другой тип снимка. Она недоступна из virt-manager – команду Qemu нужно запустить самому. С этой опцией Qemu не будет записывать обновления дисков на виртуальные диски, но сохранит их в скрытом файле в /tmp. Его можно посмотреть командой lsof:
lsof | fgrep -iedeleted qemu 2464 root 9u REG 8,19 262144 155755 /tmp/vl.qv3fRY (deleted)
У меня его размер – 262 144 байт. Сравните с вашим. По умолчанию эти изменения будут утеряны после отключения машины. Но вы можете приказать Qemu применять их, когда ГВМ работает, с помощью монитора Qemu. Для этого запустите Qemu без опции -vnc и переключитесь на монитор консоли ГВМ, нажав Ctl+Alt+2, а затем обратно, нажав Ctl+Alt+1.
Переносим Windows на VirtualBox
Расширим наш кругозор за пределы Unix. С любой ГВМ Windows нужно выполнить ряд действий, запустив ее в VMware или непосредственно на компьютере:
- Создайте образ загрузочной дискеты и проверьте, работает ли он. С двойной загрузкой и VMware ваша Windows может загружаться через Grub. Но в VirtualBox нужно загружать ее с отдельной загрузочной дискеты, созданной для данной ОС Windows.
- Создайте отдельный аппаратный профиль для каждого менеджера виртуальных машин, который вы планируете запускать, и увеличьте время задержки для подсказки выбора профиля, чтобы при загрузке с консоли VNC вы успели подключиться к ней клиентом VNC, прежде чем истечет тайм-аут.
- Избежать конфликтов в драйверах устройств может помочь удаление VMware Tools. Единственный способ это сделать – в диалоге установки VMware Tools во время работы в VMware; из меню «Установка/удаление программ» этого сделать нельзя.
- Сделайте резервную копию!
Теперь рассмотрим графический интерфейс VirtualBox. Он похож на VMware с добавлением Virtual Media Manager, который содержит перечень всех виртуальных дисков, приводов CD-ROM и дисководов. Чтобы добавить устройство хранения данных в ГВМ, сначала нужно добавить его в Media Manager, затемвернуться в настройки ГВМ и подключить его. Когда вы нажмете на кнопку «Подключить» [Attach], VirtualBox выберет устройство по умолчанию, а потом вы заменяете его на нужное вам, из пе- речня. Вы привыкнете к этому!
Перенесите свою Windows
Первое решение, которое нужно принять – как перенести описания ГВМ и дисков. Если ваша VMware поддерживает экспорт ГВМ в OVF, воспользуйтесь этим. Если у вас VMware Server V1, можно сперва мигрировать на V2, а затем выполнить экспорт в OVF. V1 и V2 используют одинаковые описания ГВМ и форматы дисков. Но V2 может не работать с текущей версией ядра Linux! Если вы не пользуетесь OVF, просто создайте новую ГВМ в VirtualBox. Нажмите на кнопку Создать [New], и откроется мастер создания новой гостевой виртуальной машины. В процессе его работы проверьте настройки сети и размер памяти.
В зависимости от того, на физических или виртуальных дисках работает ГВМ, есть два способа их переноса. Если диски физические, то ни преобразовывать, ни копировать их не нужно, но резервную копию все-таки стоит сделать. Чтобы представить их Media Manager, воспользуйтесь командой
VBoxManage internalcommands createrawvmdk -filename /root/VirtualBox_vmdks/winmachine.vmdk -rawdisk /dev/sdc -partitions 1 -register
Загляните в главу «Using a raw host hard disk» раздела «Advanced Topics» руководства пользователя. Если ГВМ не загружается, обратитесь к разделу с описанием общих проблем с дисками.
Для файлов образов виртуальных дисков соответствующие файлы .vmdk можно просто скопировать в выбранный каталог и затем импортировать в VirtualBox Media Manager через графический интерфейс. Не пользуйтесь оригиналами файлов VMware, так как должна остаться возможность доступа к ним из VMware на случай проблем. Откройте .vmdk в текcтовом редакторе, чтобы увидеть, ссылается ли он на другие файлы .vmdk, и если да, скопируйте их тоже и измените пути к файлам родительского .vmdk, чтобы он ссылался на скопированные файлы, а не на исходные файлы VMware (другими словами, воссоздайте дерево «активных» файлов .vmdk).
Теперь подключайте к ГВМ диски. Выберите тип контроллера виртуального диска, IDE или SCSI, и его модель. Команда createrawvmdk обычно создает виртуальный диск IDE, который соответственно нужно подключить к виртуальному контроллеру IDE. Если вы скопировали файл .vmdk, можете открыть его в редакторе и посмотреть тип диска – IDE или SCSI – и выбрать нужный тип контроллера.
Выберите виртуальный CD-ROM, связанный с образом Guest Additions. VirtualBox, возможно, уже сделал это за вас, но если нет, выберите ISO-образ и импортируйте его в Media Manager. Загрузить его можно с сайта http://download.virtualbox.org/virtualbox.
Если ваш процессор поддерживает аппаратную виртуализацию, VirtualBox по умолчанию включит ее. Но ГВМ с 32‑битной Windows без нее может работать быстрее, чем с ней.
Если аппаратное ускорение включено, также нужно активировать вложенные таблицы страниц. Затем, при запущенной ГВМ, задержите курсор мыши над иконкой с чипом внизу окна, чтобы понять, активны ли эти технологии виртуализации. Если нет, зайдите в BIOS хост-системы. После запуска Windows установите гостевые дополнения VirtualBox [Virtual Box Guest Additions] – из меню или запустив соответствующий исполняемый файл на виртуальном CD-ROM.
Поиск неисправностей
Обе эти виртуальные машины работают в общем неплохо, но вот несколько советов по проблемам, с которыми столкнулся я.
- ОШИБКА: MP-BIOS: 8254 timer not connected to IO_APIC
Такое бывает во время загрузки ГВМ Linux в Qemu. Это несоответствие между виртуальным APIC Qemu и довольно придирчивой проверкой ошибок таймера в Linux. По возможности постарайтесь предотвратить это, добавив параметр noapic к командной строке загрузки ядра, сняв опцию ACPI в virt-manager или добавив опцию -no-acpi в командную строку Qemu. Это не опечатки – в самом Qemu отключить APIC нельзя, но деактивация ACPI дает нужный эффект. virt-manager позволяет отключить APIC, но это отключение не повлияет на Qemu – только на Xen.
- ОШИБКА: Сеть ГВМ отваливается при запуске под Qemu
Не повезло! Выключите и перезагрузитесь.
- ОШИБКА: Различные ошибки virt-etc
virt-etc иногда ошибается при генерации команды Qemu, что приводит к ухудшению производительности или сбою. Примеры – некорректная поддержка программного окружения KQemu или образов загрузочных дискет. Попробуйте исправить команду Qemu вручную.
- ОШИБКА: ГВМ Linux не выключается полностью при выключении системы
Вы указали опцию -no-acpi (для решения проблемы с таймером APIC) – и без виртуального ACPI гостевая система Linux не сможет выключить себя. Подождите, пока она сообщит о размонтировании файловых систем, затем выключите ее из консоли.
- ОШИБКА: ГВМ под virt-manager с KQemu работает очень медленно
Проверьте, что в команде Qemu есть две опции:
-enable-kqemu -kernel-kqemu
Если их нет, запустите команду вручную и добавьте их.
- ОШИБКА: В окне virt-manager пропали мои изменения в настройках
Вы забыли нажать кнопку Применить [Apply].
- ОШИБКА: Проблема запуска ГВМ с Windows — ошибки сетевого драйвера
Если вы переключаетесь с VMware на другой менеджер виртуальных машин, где определен точно такой же или похожий сетевой контроллер, не исключен конфликт с соответствующим драйвером Windows. Эту проблему можно обойти, удалив VMTools. Или во время работы Windows можно найти устройство и велеть Windows поискать другой драйвер устройства либо удалить виртуальный адаптер из Windows. Затем перезагрузитесь и позвольте Windows установить новое устройство. Сохраняйте отдельные аппаратные профили Windows для всех менеджеров виртуальных машин.
- ОШИБКА: «Голубой экран смерти» Windows во время загрузки с сообщением о недоступном устройстве загрузки (INACCESSIBLE BOOT DEVICE) или невозможности найти загрузочный диск
Процесс загрузки Windows зависит от аппаратных характеристик загрузочного диска и контроллера. Если они изменятся, Windows может перестать загружаться. Драйверы диска VMware вас от этого защищают, но Qemu и VirtualBox уязвимы. Физически загрузочный диск остается на своем месте, но Windows может подумать, что вы его изменили.
Некоторые статьи советуют изменить кое-что в реестре Windows, чтобы решить эту проблему. Не делайте этого (во всяком случае, не сейчас)! Лучше проверьте, что загрузочное устройство ГВМ – это загрузочная дискета, созданная в том же экземпляре Windows и что тип виртуального контроллера виртуального загрузочного диска соответствует описанию виртуального загрузочного диска – т.е. они должны быть оба IDE, оба SCSI или оба SATA.
Проверив это, попробуйте сменить тип виртуального контроллера и диск. В Qemu для этого может потребоваться запустить команду Qemu вручную. В VirtualBox задайте виртуальный контроллер и для каждого из основных типов (IDE и SCSI) выберите модель из списка. Есть еще две опции устройств хранения, которые можно попробовать: IO APIC (на вкладке Система [System]) и кэширование ввода-вывода хост-системы (на вкладке Устройства хранения [Storage], пункт Контроллер [Controller]).
- ОШИБКА: Общее некорректное поведение ГВМ Windows
Золотое правило для перезагрузки ГВМ Windows – всегда выключайте систему и снова стартуйте; перезагрузкой Windows не пользуйтесь. Это гарантирует, что менеджер виртуальных машин приведет ГВМ в корректное исходное состояние.