Как открыть vhd в vmware workstation

Обновлено: 04.07.2024

Пользователи, работающие с гипервизорами, иногда могут сталкиваться с необходимостью получения доступа к диску виртуальной машины (ВМ) из среды хост-системы – основной операционной системы (ОС) , установленной на физическом диске. Например, когда нужно скопировать данные в гостевую ОС, не поддерживающую установку дополнений. Или когда в работе гипервизора возникают ошибки, делающие невозможным запуск ВМ, а внутри неё сокрыты нужные файлы.

Как подключить диск ВМ для отображения в хост-системе? Ниже рассмотрим, как в среде хостовой Windows подключаются файлы виртуальных жёстких дисков, используемые гипервизорами VirtualBox , Hyper-V и VMware .

В статье будут предложены варианты доступа к дискам ВМ:

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

Для возможности записи данных в файл виртуального диска (т.е. чтобы в гостевой ОС появились перемещённые из хост-системы файлы) ВМ в среде своего гипервизора должна быть выключена. Именно выключена, а не приостановлена. Не каждая программа-гипервизор напоминает об этой тонкости.

1. Подключение VHD и VHDX средствами Windows

VHD и VHDX – форматы файлов виртуальных дисков, используемые встроенным в Windows 8.1 и 10 гипервизором Hyper-V – в среде этих версий хост-системы можно примонтировать с помощью её же штатных средств.

На файле диска вызываем контекст-меню, выбираем «Подключить».

Подключить

И ищем в проводнике разделы нового устройства. Этот вариант предусматривает и чтение, и запись данных. Чтобы убрать диск ВМ из хост-системы, контекст-меню вызываем на любом из отображаемых его разделов и кликаем «Извлечь».

Извлечь

2. Подключение VMDK средствами VMware Workstation

VMDK и VHD – форматы дисков ВМ, с которыми работает ПО VMware - можно подключить для отображения в проводнике хостовой Windows с использованием средств программы VMware Workstation. Её средства монтирования предусматривают и чтение, и запись данных. Открываем параметры нужной ВМ. На вкладке «Оборудование» слева кликаем жёсткий диск, справа жмём кнопку «Карта». Появится окошко мастера подключения диска. Здесь выбираем нужный раздел, ориентируясь на его размер. В нашем случае это системный раздел Windows. Снимаем галочку открытия в режиме только чтения. И жмём «Ок».

Подключение виртуального диска

Важный нюанс: при открытии системных разделов гостевых ОС, установленных на виртуальные GPT -диски, в окне мастера необходимо выбирать не сам раздел с установленной ОС (раздел С в случае с гостевой Windows) , а предшествующий ему MSR -раздел с размером обычно 16 или 128 Мб. Конечно, если MSR -раздел есть в структуре EFI -системы. Будет он там не в каждом случае.

Виртуальный диск

Далее появится предупреждающее окошко, где говорится о нюансах доступа в режиме записи данных, связанных с работой снапшотов и клонов ВМ. Жмём «Да».

Предупреждающее окошко

Примонтированный раздел откроется в проводнике хост-системы. Для отключения закрываем его открытого в проводнике (или файловом менеджере) . И идём туда же, где мы его монтировали – в параметры ВМ. Но теперь жмём кнопку «Отключить».

Параметры ВМ

3. Конвертирование VDI в VHD средствами VirtualBox

VirtualBox не позволяет своими средствами монтировать диски ВМ для доступа к ним из среды хост-системы Windows. Но в числе её арсенала есть конвертер, который может преобразовывать диски родного формата VDI в VHD , VMDK и прочие типы. А, к примеру, VHD -файл в среде хостовой Windows 8.1 или 10 можно открыть штатными средствами ОС. Более того, при необходимости продолжить работу с ВМ, её можно пересоздать на базе уже конвертированного диска VHD . В окне VirtualBox переключаемся на раздел «Инструменты». Кликаем диск нужной ВМ, в контекст-меню выбираем «Копировать».

VirtualBox

Далее указываем тип «VHD» (можно и «VMDK», если параллельно проводится работа с VMware) . Затем жмём кнопку обзора в графе указания нового диска.

Здесь важный момент: графу «Имя файла» нужно подчистить - удалить из имени расширение «.vdi» . И отследить ниже, чтобы как тип был задан «VHD» . Жмём «Сохранить».

Местоположение нового образа диска

И теперь – «Копировать».

Копировать образ диска

Конвертированный файл впоследствии открываем с помощью проводника.

Конвертированный файл

Убираем его из хост-системы путём извлечения, как показано в п.1 статьи.

Однако если попутная цель реанимации ВМ не преследуется, если речь идёт только об изъятии ценной информации из файла VDI , проще прибегнуть к двум следующим вариантам решения вопроса.

4. Daemon Tools

Бесплатная версия Daemon Tools может монтировать для чтения и записи данных различные типы виртуальных дисков, включая жёсткие, с которыми работают ВМ – VMDK , VDI , VHD , VHDX . В окне программы жмём «Быстрое монтирование», указываем путь к файлу диска ВМ, открываем.

Daemon Tools

Убираем с помощью опции удаления в контекст-меню на значке примонтированного устройства.

Удалить

5. Плагин для Total Commander

Работающим с Total Commander только лишь для просмотра и копирования ценных данных, хранящихся на диске ВМ, далеко ходить не нужно. Вопрос решается внутри этого файлового менеджера с помощью плагина к нему DiskInternals Reader. Первичная миссия этого плагина – реализация доступа в среде Windows к разделам и носителям с файловыми системами, используемыми в Linux . И неподдерживаемыми Windows. В довесок к основным возможностям плагин может монтировать для чтения диски ВМ форматов VMDK , VDI , VHD , VHDX и HDS .

Распаковываем его внутри Total Commander. Отвечаем «Да» на предложение установки. Следуем шагам установочного мастера.

DiskInternals Reader

Запускаем Total Commander (принципиально) от имени администратора. Переключаемся на «Сеть / FS плагины». Заходим в «DiskInternals Reader».

Сеть / FS плагины

Далее – «Mount Image».

Mount Image

Выбираем тип диска ВМ. Жмём «Next».

Выбираем тип диска

В обзоре указываем папку ВМ. Затем увидим все подключённые к машине диски. Можем снять галочки с ненужных, если их несколько. И кликаем «Mount».

Жмём Ctrl + R для обновления содержимого панелей Total Commander. И увидим примонтированные разделы виртуального диска.

Примонтированные разделы виртуального диска

Его содержимое копируем обычным для Total Commander образом - кнопкой внизу или клавишей F5 . Процедура размонтирования дисков плагином не предусматривается. Да она как таковая и не нужна: достаточно просто перезапустить Total Commander.

Работающие с гипервизором VMware Workstation в среде Windows рано или поздно столкнутся с необходимостью переноса виртуальных машин. Это может быть новая среда гипервизора после переустановки хостовой операционной системы. Это может быть среда гипервизора на другом компьютере. И это также может быть другой гипервизор – VirtualBox . Как осуществить экспорт виртуальных машин VMware и импортировать их в своей же среде, внутри VMware Workstation или в среде VirtualBox?

1. Открытие виртуальных машин в VMware Workstation

Если работа с виртуальными машинами будет производиться и далее в среде VMware Workstation, нет в принципе нужды экспортировать машины. После переустановки хост-системы Windows нужно установить гипервизор и в меню «Файл» выбрать «Сканирование виртуальных машин».

VMware Workstation

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

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

И добавляем все обнаруженные машины в библиотеку VMware Workstation. Если нужны не все, то, соответственно, снимаем галочки с ненужных.

Добавляем все обнаруженные машины

Далее открываем программную библиотеку и можем работать с добавленными в интерфейс машинами.

Библиотека

По этому же принципу можем поступить и при переходе на другой компьютер. Мы физически переносим каталог хранения виртуальных машин VMware на диск другого компьютера. И в установленной на том другом компьютере программе VMware Workstation добавляем перенесённые виртуальные машины. При добавлении новых готовых машин программа во время их первого запуска обычно выдаёт запрос: мол, обнаружено, что это перенесённая или скопированная машина. Но программе необходимо точно указать, машина перенесена или скопирована. Это нужно для настройки сети и других функций. И вот в ответ на такой запрос нажимаем кнопку «I Moved It», т.е. указываем, что машина перенесённая.

Moved It

Перенос непосредственно каталога виртуальных машин на другой компьютер – как видим, способ чрезвычайно простой, но он хорош для случаев, когда мы не стеснены средствами переноса данных. К примеру, у нас есть нужного объёма USB-HDD, либо же мы можем перенести каталог с виртуальными машинами в онлайне с использованием торрент-технологии. Но если у нас нет USB-HDD, а каталог с машинами нужно какое-то время где-то передержать, прежде чем он может быть помещён на целевой компьютер, машины лучше экспортировать. Экспортировать с целью сжатия данных. К примеру, в нашем случае папка одной виртуальной машины с фиксированным виртуальным диском весит 50 Гб.

Проводник

А вес файлов экспортированной машины будет составлять даже менее 5 Гб.

Вес файлов

2. Экспорт виртуальной машины VMware

Экспорт-импорт машин VMware обеспечивается поддержкой в программе VMware Workstation универсального формата хранения виртуальных машин Open Virtual Appliance . Это формат OVA или OVF . С этим форматом нативно работает и VirtualBox, что делает возможным перенос виртуальных машин ещё и между этими двумя гипервизорами. Open Virtual Appliance – это архив, включающий информацию о конфигурации виртуальной машины и хранящий в сжатом виде непосредственно содержимое виртуального жёсткого диска.

Чтобы экспорт машины VMware был возможен, необходимо отключить от её виртуального привода прикреплённые ISO -образы.

Сам процесс экспорта чрезвычайно прост: в меню «Файл» кликаем «Экспорт в OVF».

И указываем путь сохранения архива машины.

Экспорт в OVF

3. Импорт виртуальной машины в VMware Workstation

Чтобы импортировать машину, в меню «Файл» VMware Workstation кликаем «Открыть». И указываем путь к архиву, а в нём – непосредственно к файлу OVА . Указываем хранилище импортируемой машины, т.е. её место на диске. И можем, если нужно, изменить имя.

Открыть

Жмём «Импорт».

Импорт

Ожидаем завершения операции.

Ожидаем завершения операции

И ищем импортированную машину в библиотеке VMware Workstation.

Библиотека VMware Workstation

4. Импорт виртуальной машины в VirtualBox

Процесс импорта виртуальной машины из архива OVF в программе VirtualBox схож.

В меню «Файл» кликаем «Импорт конфигураций».

VirtualBox

Указываем путь распаковки файлов машины. Жмём кнопку «Импорт».

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

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

Любую операционную систему, установленную на VHD-диске, можно открыть внутри программ VMware Workstation и VirtualBox и работать с ними точно так, как и с и любыми системами, созданными средствами этих программ. Более того, обе программы изначально предусматривают возможность создания операционных систем с использованием VHD-диска. VirtualBox открыто позволяет выбрать VHD-формат при создании жёсткого диска виртуальной машины. А вот в программе VMware Workstation хоть такой момент и предусматривается, но юзабельного меню выбора, как в случае с VirtualBox, нет. Расширение «. vhd» для создаваемого жёсткого диска нужно прописывать вручную, заменяя им предустановленное «.vmdk» – «родной» формат виртуального жёсткого диска VMware Workstation .

Открыть Windows, с виртуального VHD-диска

Единственный момент, в чём будет уступать VHD-диск «родным» форматам программ VMware Workstation и VirtualBox – соответственно, VMDK и VDI, это использование дискового пространства в полном объёме. Тогда как виртуальные жёсткие диски программ - VMDK и VDI – сжимают данные виртуальных машин для экономии места на реальном компьютере. В частности, виртуальные машины VMware Workstation на физическом жёстком диске занимают почти вдвое меньше места, чем имеется в распоряжении гостевых операционных систем.

Итак, имеем операционную систему, установленную на виртуальном VHD-диске.

VHD

Как её открыть внутри основной операционной системы с использованием программ-гипервизоров VMware Workstation и VirtualBox?

Открытие VHD-диска в VMware Workstation

В главном окне VMware Workstation запускаем процесс открытия новой виртуальной машины. Это можно сделать как с помощью визуальной кнопки на домашней вкладке программы, так и в меню «Файл».

Файл

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

Выборочный тип конфигурации

Жмём «Далее» в окне настройки совместимости версий программы.

Далее

Операционную систему мы не устанавливаем, следовательно, и не может быть никакого источника загрузки. Выбираем третий пункт – установка системы позже. Жмём «Далее».

Установка системы позже

В нашем случае имеется VHD-диск с установленной Windows 8.1, её и выбираем в списках операционных систем и их версий. Жмём «Далее».

VHD-диск

Называем виртуальную машину и указываем её месторасположение на компьютере. В указанном месте будут храниться рабочие файлы VMware Workstation. Сам VHD-диск, естественно, будет находиться там, где и находился. Жмём «Далее».

VMware Workstation

Настройка процессора: в нашем случае имеется целых четыре ядра, потому щедрым жестом с барского плеча отдадим виртуальной машине два из них. Жмём «Далее».

Настройка процессора

А вот щедрого жеста в плане оперативной памяти не получится. Выделяем лишь необходимый минимум – 1 Гб . Жмём «Далее».

Оперативная память

Предустановленный тип сети NAT в нашем случае подходит. Жмём «Далее».

Тип сети NAT

Не меняем и тип контроллера ввода/вывода. Жмём «Далее».

Контроллер ввода/вывода

Это же касается и типа диска – оставляем предустановленный SCSI. Жмём «Далее».

Оставляем предустановленный

Наконец-то мы добрались до точки смены предустановленных параметров. В окне выбора виртуального диска нам нужен второй вариант – использование существующего диска . Жмём «Далее».

Использование существующего диска

В следующем окне жмём кнопку обзора и указываем путь к VHD-файлу. По умолчанию VMware Workstation не хочет видеть этот формат файлов , представляя на обозрение только файлы собственного производства. И чтобы увидеть VHD-файл, в окне проводника нужно установить параметр отображения всех файлов .

Отображения всех файлов

Прописав путь размещения VHD-диска, жмём «Далее».

Путь размещения VHD-диска

Готово: настройка виртуальной машины завершена.

Готово

Вернёмся в главное окно VMware Workstation и увидим новую виртуальную машину в перечне существующих. Запускаем её.

Запускаем

Процесс запуска Windows начнётся с адаптации системы к условиям работы гипервизора. Будут обновлены драйвера, системные настройки, Metro-приложения Windows 8.1. В некоторых случаях запуск виртуальной машины может сопровождаться окном среды восстановления Windows. В этом случае необходимо просто выбрать продолжение использования системы.

Продолжение использования системы

Вскоре система загрузится.

Система

Открытие VHD-диска в VirtualBox

В программе VirtualBox процесс открытия VHD-файла попроще. В главном окне программы жмём кнопку «Создать». Затем в первом окне запустившегося мастера создания новой виртуальной машины задаём ей имя, выбираем операционную систему и её версию. Жмём «Next».

Создать

Указываем размер оперативной памяти. Жмём «Next».

Размер оперативной памяти

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

Использование существующего диска

Возвращаемся в главное окно VirtualBox и запускаем только что созданную виртуальную машину.

Запускаем

VirtualBox также осуществит адаптацию гостевой операционной системы под свою специфику работы – будут установлены драйвера, применены системные настройки и т.п.

VirtualBox

Через минуту-две в окне программы будем наблюдать ту самую Windows, установленную на VHD-диске.


Сам vmware-vdiskmanager лежит в папке с установленной VMware. На сайте VMware сказано, как конвертировать preallocated в growable, но нам нужно наоборот. Запустив vmware-vdiskmanager в командной строке, можно увидеть полный help со всеми возможными параметрами.
Для достижения нужного результата необходимо воспользоваться следующей командой:

vmware-vdiskmanager –r <путь к исходному файлу> -t 2 <путь к конвертируемому файлу>

Где:
-r – параметр, указывающий, что мы собираемся конвертировать
-t – указание ID типа диска, который нам нужен
2 – собственно необходимый нам тип (preallocated virtual disk)
например:
vmware-vdiskmanager –r d:\Soft\vmware\Mint17_x64\Mint.vmdk -t 2 e:\_iso\Linux\Mint.vmdk

Сразу же может возникнуть ошибка «VixDiskLib: Invalid configuration file parameter. Failed to read configuration
file.», но её можно спокойно игнорировать. Конвертация пойдёт дальше.
Я запустил конвертирование и пока оно шло, решил посмотреть 1 серию сериала. Процесс отказался долгий, потому как из 15 Гб образ «вырос» до 40 Гб (автор раздачи указал такой размер раздела. Я конечно мог бы и изменить его, но не стал) + я сразу конвертировал его на внешний HDD, а USB 3.0 в моём ноутбуке, к сожалению, не оказалось.

И со всем этим мы сейчас попробуем взлететь

Итак, наступил волнующий момент, а именно попытка запуска. Монтируем карманом .vmdk образ, идём на перезагрузку, и в Boot Menu BIOS’а выбираем карман. К моему удивлению Windows Server 2012 R2 x64 Datacenter загрузилась успешно. Естественно, драйвера на всё оборудование не встали, но сам факт успешного запуска уже радует.


Так как карман монтирует образ в режиме RW, можно проставить драйвера, софт, и т.д. Всё это останется и не исчезнет как в случае с Live CD, например.

Как я уже говорил, USB 3.0 у меня нет. А с USB 2.0 Server2012 до момента запроса пароля администратора загрузилась за 45 секунд. Думаю, неплохо всё же. Интересно конечно было бы с USB 3.0 попробовать, но увы, мой ПК далеко от меня и не известно, когда я смогу это проверить.
Также проверил Linux Mint 17 Cinnamon. Как и ожидалось, ОС загрузилась без проблем. Подозреваю, что любой или подавляющее большинство Linux дистрибутивов также нормально загрузятся и будут работать. Windows XP SP3, в свою очередь падала в BSOD как в обычном режиме загрузки, так и в безопасном, что в принципе, не странно.

Я ничего не понял. А зачем всё это?

Честно говоря, лично для меня пока что от всего вышеописанного мало толку. Применение этой возможности каждый владелец VE-300 может найти сам. Хотя, таким образом можно сделать неплохое подобие Live CD, со своей любимой ОС, софтом, т.д. Подобный образ будет полезен тем, кто часто ставит людям ОС, чистит вируса и выполняют прочее обслуживание ПК. Очевидный плюс – все изменения сохраняются, работа ведётся с реальной ОС с единственной разницей в том, что запущена она с внешнего накопителя. Сразу же предугадаю некие комментарии вида «Вот я поставлю ОС на флешку, и получу тот же результат». Да, но:

1) Не забываем про ограниченное кол-во циклов перезаписи на Flash память;
2) Скорость работы HDD по USB 3.0 будет всё же выше среднестатистической USB 3.0 флешки;
3) На VE-300 таких образов может быть чуть более, чем много, и хранятся они удобно – по одному файлу-образу на каждую ОС.

Если у вас есть ещё идеи по поводу того как можно ещё применить монтирование VMware образов таким способом, пишите в комментариях, я дополню пост.

Всё равно это извращение!

Согласен, поэтому можно сделать тот же Live CD или установочный «носитель» попроще.
Главной «фичей» Zalman VE-300 обычно считают монтирование ISO образов и основное внимание уделяют именно этой возможности во всяких обзорах, но помимо этого и вышеописанного, также карман может монтировать образы USB Floppy, Removable Disk и Fixed Disk. Не только монтировать, а маскироваться под них.

Создаются такие образы фирменной утилитой от Zalman – Backup Utility.


Достаточно всего лишь выбрать тип нужного диска, ввести имя файла-образа, его размер, нажать Add и File Create. В зависимости от выбранного размера образа, его создание займёт некоторое время, ибо образы не динамические, и сразу создаются на полный размер. Это наверно единственный минус, хотя он также является и плюсом, поскольку предотвращает фрагментацию образов на нашем внешнем HDD.
После создания монтирования таких образов в первый раз, они определяются как соответствующее устройство (USB Floppy, съёмный диск, локальный диск) и Windows предлагает их отформатировать. С USB FDD можно, например, по старинке подсунуть установщику ОС драйвера на контроллер жёсткого диска, на USB Removable можно записать какой-либо дистрибутив ОС как на обычную флешку, ну а на Fixed Disk – установить ОС.

Типичный пример из моей практики: иногда, когда я устанавливал на некоторые ПК Windows 7 или 8.1 c помощью VE-300 и монтируя ISO образ (для ПК карман видится в таком случае как USB-CDROM), на этапе выбора раздела для установки, Windows выдавала ошибку «Не найден необходимый драйвер для дисковода оптических дисков».

Эту проблему можно легко решить записав необходимый дистрибутив на флешку и устанавливать его «по старинке» (поэтому у меня была такая «запаска» всегда с собой). Но если таковой под рукой не оказалось, проблема решается следующим образом:

1) Создаём в Backup Utility Removable Disk на

5 Гб (или другой размер в зависимости от размера дистрибутива);
2) Монтируем этот образ средствами кармана;
3) Любым удобным софтом записываем на появившийся «Съёмный диск» нужный дистриб;
4) Устанавливаем, загрузившись как с обычной флешки;
5) Не видим описанной выше ошибки.

Напоследок я хотел бы рассказать об ещё одной интересной особенности. Монтирование образов USB FDD, USB Removable и USB Fixed никак не влияют на стандартные 3 режима работы кармана (Dual Mode, HDD Mode, ODD Mode). Если после монтирования USB FDD, USB Removable или USB Fixed зайти в меню в раздел Mode Select и выбрать Dual Mode, карман успешно выполнит это. В итоге получится «полный фарш» из всех доступных режимов:


Здесь:
C и D – локальные диски ноутбучного винчестера;
E – примонтированный карманом .iso;
F и G – примонтированный .vmdk образ Server2012R2;
H – Раздел винчестера, вставленного в карман.

Вот в принципе и всё, о чём хотел рассказать. Если кому-то интересно железо, на котором производились все манипуляции, оно следующее:

1) Ноутбук Lenovo IdeaPad S210. Intel Celeron 1037U, 1800 MHz. ST500LT012-9WS142 (500 ГБ, 5400 RPM, SATA-II). 4 Gb DDR3 1600 MHz;
2) Собственно Zalman VE-300. Внутри HGST HTS541010A9E680 (JA4000C0GH81VC), 1 Тб.


Периодически я слышу от практикующих инженеров странное: VMDK, VHD и VHDX – абсолютно разные форматы виртуальных дисков, чуть ли не закрытые, а конвертировать из одного в другое – долго и больно. Сегодня наглядно покажу, что это не так, разберу, как эти форматы соотносятся друг с другом и как делать быструю конвертацию при миграции с Hyper-V на VMware и обратно.

Немного теории. C точки зрения свойств, виртуальные диски делятся на два типа:

  • тонкие (thin disk, dynamic disk) и
  • толстые (thick disk, fixed disk). Все остальное — разностные, thick provisioned lazy- zeroed – лишь вариации на тему.

Форматы дисков

RAW – «сырой» образ любого диска. Это обычный контейнер, который не содержит никаких специфических заголовков и футеров и представляет образ диска «как есть». Если мы откроем такой образ HEX-редактором, то сразу увидим заголовки GPT/MBR и/или файловой системы. Точно такой же образ получается через команду dd в Linux. RAW в этом плане абсолютно честен с нами.



Начало файла RAW.



Конец файла RAW.

VMDK. VMware ESXi – обыкновенный RAW, где геометрия диска описывается в обычном текстовом файле-описателе (дескрипторе). Именно его имя мы видим в vSphere Console, когда подключаем виртуальный диск к виртуальной машине или просматриваем содержимое каталога на Datastore. VMware ESXi ничего не делает с образом. Совсем. Диск покоится себе и расширяется по мере необходимости. В лучших традициях VMware формат описателя очень простой:


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

Ниже представлены некоторые стандартные значения всех разделов дескриптора:

Описание всех значений можно посмотреть в спецификации формата: VMware Virtual Disk Format 1.1

VHD. Толстый VHD – тот же самый RAW, но с 512-байтным футером, где описывается геометрия диска. Какого-то отдельного файла-описателя у виртуальной машины Microsoft Hyper-V нет. Описание геометрии диска занимает 4 байта. Собственно, отсюда ограничение на размер диска в 2 Тб.



Футер. Последние 512 байт диска.

Самое интересное, что если создать файл-описатель и подсунуть в ESXi VHD-диск с футером, то гипервизор VMware проигнорирует этот футер и примет VHD как родной.

При Storage vMotion с конвертацией диска в тонкий он просто отрежет этот футер, и на выходе мы получим тот же RAW без нулей в конце. А при конвертации в толстый диск – честный RAW. Это я и собираюсь продемонстрировать чуть позже.

VHDX. Вся информация о геометрии диска хранится в первых 4096 Кбайтах виртуального диска – в области заголовка.



Общая схема толстого диска VHDX.

Что представляет из себя эта область? В ней содержатся две копии заголовков со своими логами, BAT и область метаданных общие.



Логическая структура заголовка диска.

В единицу времени только одна копия заголовка активна. Это обеспечивает определенный уровень отказоустойчивости заголовка в случае незапланированных прерываний операций чтения/записи. После каждой операции I/O копия реплицируется, и происходит переключение на нее.



Макет области заголовка.

Для конвертации VHDX в RAW нам всего-то нужно отрезать первые 4096 KB.



Начало данных на 5 МБ.

Внимательный читатель, конечно же, скажет: ок, Женька, а слабо RAW конвертнуть в VHDX? На что я отвечу: зависит от файловой системы и от того, насколько она позволяет записывать данные в начало файла. Вручную на файловой системе NTFS это можно сделать, сместив в MFT начало файла на 4 Мб вперед и дописав в это место заголовок.

По этому же принципу работает утилита vhdxtool.exe. Однако при этом преобразовании мы не получим красивую картинку в виде 4 Мбайт заголовка и RAW. Диск будет виден и даже будет корректно работать как VHDX, но будет и много «мусора» из нулей, появившихся из-за манипуляций со смещениями (offsets). Диск будет не оптимизирован. ВМ с таким диском рекомендуется смигрировать на другой том или оптимизировать через командлеты Convert-VHD или Optimize-VHD. Если этого не сделать, диск будет занимать больше места, чем должен, и, возможно, медленнее работать.

Однако в сценариях миграции с VMware на Hyper-V эта утилита незаменима, так как позволяет провести преобразование на месте, без необходимости побайтового считывания исходного диска и создания рядом копии. Все шероховатости будут сглажены при первом же Storage Live Migration.

Вывод: толстые диски форматов VMDK, VHD, VHDX на деле мало чем отличаются друг от друга. В их основе RAW c различными добавками. Тем же HEX-редактором или функциями ОС для работы с файловой системой мы можем за пару секунд превратить 10 Тб VMDK или VHDХ в диск целевого гипервизора.

Давайте на практике посмотрим, как VMware Exsi справится с VHD.

    В качестве примера я создал образ Windows Server с помощью Convert-WindowsImage с инъекцией драйверов VMware и параметрами:

  • OS Version: Windows Server 2019 Standard,
  • Disk Type: Fixed,
  • Disk Layout: GPT,
  • Disk Size: 30GB.

Если не хочется фокусов, то можно воспользоваться инструментами ниже.

Исходный формат
Целевой формат
Инструменты
Пример команды
VHD
VHDX
vhdxtool.exe
vhdxtool upgrade -f <имя файла>.vhd
VMDK (RAW)
VHD
vhdtool.exe
vhdtool /convert <имя файла flat>.vmdk
VMDK (RAW)
VHDX
vhdtool.exe
vhdxtool.exe
vhdtool /convert <имя файла flat>.vmdk

Подведем итоги. Различные форматы толстых виртуальных дисков не такие уж разные. В основе всего RAW с различными “добавками”.

Конвертация форматов виртуальных дисков — это не страшно, и, как я показал, иногда можно обходиться даже без нее.

Основной профит всего этого — сокращение времени миграции с Hyper-V на VMware и обратно и времени простоя ВМ при миграции. В DataLine мы такое практикуем с простоем ВМ менее 30 минут. Рекорд же — 40 секунд простоя ВМ при миграции между гипервизорами.

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

Читайте также: