Миграция сервера. Как перенести системный жесткий диск в виртуальную машину?

С ростом популярности облачных технологий все чаще требуется миграция сервера на виртуальную машину. Причем выполняют эту задачу не только сисадмины, но и обычные пользователи интернет-сервисов.

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

Что есть виртуальная машина?

Минимально, это — всего лишь два обычных файла. В одном хранится описание «аппаратной» части машины, её «железной» конфигурации. А второй является диском этой машины, предназначенным, в первую очередь, для размещения операционной системы.

Который из них главнее, сказать трудно.

В инфраструктурном плане, конечно, важнее конфигурационный файл. Но в нём нет ничего уникального. Его легко воспроизвести, если оригинал был утрачен.

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

Виртуальный диск можно вполне рассматривать как побайтную копию обычного, его файл-образом.

Как обычный «железный» диск можно отключить от одного компьютера и подключить к другому, так и виртуальный можно перенести с одного компьютера на другой.

При попытке запустить операционную систему или некоторые коммерческие продукты с перенесённого диска на другом компьютере могут возникнуть трудности, связанные с лицензионной привязкой, но они преодолимы.

Возникает идея: нельзя ли преобразовать «железный» диск в файл-образ, а затем подключить его к виртуальной машине. — Короткий ответ: да, можно. Но возникнут нюансы, о которых будет сказано далее.

Кого-то может заинтересовать обратный перенос: из виртуального состояния в железное, но в своей практике совершивших такой переход мы пока не встречали. — Слишком хорошо в облаке! :-)

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

Преобразование

Оно заключается в том, чтобы всё содержимое диска переместить в соответствующий файл-образ.

При решении задачи получения этого файла можно столкнуться с разными состояниями диска:

  1. отключен от компьютера;
  2. находится в компьютере и не является системным;
  3. находится в компьютере и является системным;
  4. находится в компьютере, который нельзя выключить, и является системным.

Первый случай можно посчитать вторым, потому для получения образа всё равно потребуется подключить дисковое устройство к какому-нибудь компьютеру.

Второй — является наиболее типовым и относительно простым.

В третьем — принципиально важно, можно компьютер выключать и перезагружать, в том числе, с другого системного носителя (компакт-диск или флэш-диск).

В последнем случае нужно подковать коня на скаку.

И во всех случаях потребуются специальные утилиты.

Программы для анализа содержимого дисков возникли и широко распространились достаточно давно, ещё на заре персональных компьютеров, жёстких дисков и дискет. Они без особых сложностей читают диски посекторно или постранично и записывают прочитанное куда нужно. Трудности могут возникнуть при чтении системного диска, так как, во-первых, при его работе некоторые файлы и области могут оказаться заблокированными; а во-вторых, часть данных системных дисков очень часто изменяется, что может привести к нарушению целостности записанного образа. Тем не менее, программы для создания образов системных дисков существуют.

Форматы

Вопрос в том, в каком формате записывать образ.

Как мы уже сказали, образ диска — это его посекторная и даже побайтная копия. В общем случае, она будет информационно избыточной. Хотя бы потому что в неё будут записаны пустые, не занятые файлами, области.

Чтобы оптимизировать работу с виртуальными дисками, в том числе, уменьшить их размер, разные платформы виртуализации применяют разные методы. В результате, файлы-образы виртуальных дисков для разных платформ могут иметь разный формат.

Формат Платформа виртуализации Разработчик Примечание
.vhd Windows Virtual PC Microsoft Virtual Hard Disk
.vhdx Microsoft Hyper-V
.vmdk VMware vSphere / ESX VMware Virtual Machine Disk
.vdi Oracle VM VirtualBox Oracle VirtualBox Disk Image
.qed QEMU Свободный и открытый продукт QEMU (Quick Emulator), QEMU Disk, QEMU copy-on-write
.qcow
.qcow2

Список существующих форматов виртуальных дисков в этой таблице далеко не исчерпывающий. В неё включены наиболее распространённые и популярные форматы.

При обсуждении образов дисков для виртуальных машин иногда упоминают ISO-образы. Следует понимать, что они относятся не к обычным компьютерным дискам, а к компакт-дискам (CD, DVD). Хотя на компакт-диск можно записать любые файлы, чаще всего их используют для распространения дистрибутивов программных продуктов.

Между прочим, посмотреть содержимое образов дисков можно с помощью некоторых программ-архиваторов: WinRAR (ISO), 7-Zip (ISO, VDI, VHD, VMDK), PowerArchiver (ISO, VHD), …

У виртуальных дисков могут быть дополнительные опции, среди которых наиболее существенными являются две: «фиксированный» или «динамический».

Фиксированный виртуальный диск — это файл размером, полностью соответствующим номинальному размеру диска. Никакого механизма сжатия данных в нём не предусмотрено. Зато он самый простой, быстрый и максимально совместимый.

Динамический — устроен так, что в нём хранятся только значимые данные. Например, сведения о секторах или страницах, в которых ничего не записано, в динамическом диске не содержатся. В результате, файл динамического диска получается меньшего размера, чем файл фиксированного виртуального.

Файловая система виртуального диска может быть произвольной, так же как у аппаратного.

В контексте виртуальных дисков упоминают форматы OVF и OVA. Но они были разработаны не для образов дисков, а для хранения данных виртуальной машины в целом. OVF (Open Virtualization Format) — это не файл, а стандарт для комплекта файлов, соответствующих одному или нескольким экземплярам виртуальных машин.

Пример OVF-пакета:

  • package.ovf
  • package.mf
  • resources.xml
  • vmdisk1.vmdk
  • vmdisk2.vmdk
  • resource.iso,

где package.ovf — описание пакета, его метаданные; package.mf — вложенный OVF-пакет; resources.xml — описание ресурсов виртуальной машины, её «аппаратной части»; vmdisk1.vmdk и vmdisk2.vmdk — файлы с виртуальными дисками; resource.iso — образ компакт-диска, который должен быть подключен к виртуальной машине.

Со спецификацией OVF можно ознакомиться здесь.

А вот OVA (Open Virtual Appliance) файлом является. Это — TAR-архив OVF-комплекта.

OVF (Open Virtualization Format) — стандарт, разработанный Distributed Management Task Force, Inc. — организацией, созданной в 1992 году для разработки стандартов в области компьютерных и сетевых технологий, в том числе, виртуализации.

Утилиты

Средства для создания виртуальных дисков появились даже в настольных версиях Windows.

 

Управление компьютером

 

Но таким способом можно создать лишь файл с пустым виртуальным диск, который ещё нужно подключить инициализировать, отформатировать.

Нам же интересно получение виртуальной копии уже наполненного и используемого диска. Для выполнения этой операции имеется ряд инструментов.

Disk2vhd

Бесплатный инструмент, разработанный компанией Microsoft, для создания виртуальных дисков в формате .vhd. Даёт возможность создать образ работающего, в том числе системного, диска изнутри работающей операционной системы. Правда, этой операционной системой может быть только Windows.

Образ диска можно записать даже на сам клонируемый диск. Конечно, если на нём достаточно свободного места.

Дистрибутив Disk2vhd находится здесь.

VMware vCenter Converter

Мощный бесплатный инструмент, разработанный компанией VMware, для клонирования физических и виртуальных серверов. Он также позволяет сделать копию диска работающего компьютера, причём не только с операционной системой Windows, но и с Linux.

Дистрибутив vCenter Converter находится здесь.

Clonezilla

Свободно распространяемая программа для получения образов дисков, их клонирования и восстановления из резервных копий.

Имеется в двух версиях: для отдельной машины и для сервера. В первом случае утилиту можно установить либо непосредственно на диск, образ которого требуется изготовить; либо съёмное на устройство, с которого возможна загрузка операционной системы (CD, DVD, флэш).

Образ может быть зашифрован.

Дистрибутив Clonezilla находится здесь.

qemu-img

В состав большинства Unix/Linux-систем входит утилита dd, которая создаёт побайтный образ диска (.bin). Этот образ не может быть напрямую использован в качестве виртуального диска, но его можно преобразовать в диск.

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

Таким способом можно получить виртуальные диски следующих форматов: qed, qcow, qcow2, vhd, vhdx, vmdk, vdi.

Утилиты для изготовления побайтного образа диска есть и для Windows-машин. Например: Disk Editor, HDD Raw Copy Tool, Acronis True Image.

Заключение

Перемещение серверов в облако не должно сдерживаться опасениями того, что придётся устанавливать заново всё используемое программное обеспечение. Имеются средства и методы миграции «железных» серверов в виртуальную облачную среду.

 

P. S. Ещё немного интересных статей: