Заметки о Windows и других программных продуктах Microsoft...

Миграция физического сервера в виртуальную среду с помощью Disk2VHD

Миграция физического сервера в виртуальную среду с помощью Disk2VHD

Перенос физических серверов в виртуальную среду (Physical-to-Virtual, P2V) может преследовать различные цели. Например, выведя из эксплуатации устаревшие сервера и смигрировав их в виртуальную среду можно оптимизировать загрузку оборудования, не говоря о том что виртуальными машинами гораздо легче управлять. Способов P2V-миграции достаточно много, и сегодня я опишу один из них.

Переходим к конкретной задаче. Имеется одинокий 🙂 сервер с установленной на нем Windows Server 2003 R2. На сервере крутятся несколько важных сервисов, остановка которых более чем на несколько минут недопустима. Физический доступ к серверу ограничен, так как он стоит в датацентре. Задача — смигрировать его на Hyper-V, при этом минимизировав время недоступности сервисов.

Для решения этой задачи я решил воспользоваться программой Disk2VHD от Sysinternals. Disk2VHD умеет конвертировать физические жесткие диски в виртуальные диски формата VHD. Подключив созданные программой VHD-файлы к виртуальной машине, мы получаем полную копию физического сервера со всеми установленными ролями, приложениями и настройками.

При создании VHD программа использует службу теневого копирования (Volume Shadow Copy Service, VSS), что позволяет создавать образ диска прямо на работающей машине, без необходимости ее остановки. Более того, образ можно создать на том же диске, который вы конвертируете, правда скорость работы при этом будет несколько ниже, чем при использовании другого диска.

Disk2VHD бесплатна, не требует установки и поддерживает все более-менее актуальные операционные системы Microsoft начиная с Windows XP SP2 и Server 2003 SP1, как 32-х так и 64-битные версии. В общем, Disk2VHD оптимальна для решения нашей задачи, по крайней мере в теории. Посмотрим, что покажет практика ?

Создание образа

Одним из достоинств Disk2VHD является простота использования. Для того чтобы создать образ, просто загружаем программу на сервер и запускаем ее. В окне программы будут показаны все логические диски, имеющиеся в системе. Отмечаем те из них, которые нужно включить в образ, вводим имя VHD-файла и путь для сохранения, жмем «Create» и ждем, пока образ будет создан.

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

Запуск Disk2VHD

 

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

Disk2VHD может работать как в графическом режиме, так и из командной строки. Например, сконвертировать диск C: можно командой:

disk2vhd C: C:\Distr\Image.vhd

А так сконвертируются все диски, имеющиеся на сервере:

disk2vhd * C:\Distr\Image.vhd

Подключение образа

Получившийся образ переносим на сервер Hyper-V. Открываем Hyper-V Manager и запускаем процесс создания новой виртуальной машины. Параметры машины (процессор, память, сеть) устанавливаем в соответствии с характеристиками копируемого физического сервера, а в качестве виртуального диска указываем использовать полученный VHD-файл.

подключение диска к виртуальной машине

 

Запускаем виртуальную машину. При первой загрузке система попытается определить и установить драйвера на новое оборудование. Для новых ОС, таких как Windows Server 2012, этот процесс проходит автоматически, в нашем же случае надо перейти в меню Action — Insert Integration Services Setup Disk, после чего вручную запустить установку сервисов интеграции.

установка Integration Services

 

По окончании установки сервисов интеграции система потребует перезагрузки.

установка integration services

 

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

Заключение

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

 
 
Комментарии
Александр

Спасибо, отличная статья! А не встречали что-то подобное для линуксов?

Есть PlateSpin Migrate, которая вроде как умеет конвертировать Linux-машины. Но утверждать не буду, сам с ней не работал.

Дмитрий

А если несколько дисков?
Например 4 — 90, 275, 275, 90 гиг, тогда как?

Количество дисков не ограничено, просто копируется логическая структура диска со всеми разделами и помещается на VHD. Если несколько физических дисков, то для каждого создается отдельный VHD.

Владимир

Спасибо! Помогло.

А если загрузочный раздел Windows 7 в EFI, букву присвоить ему нельзя (ни один пункт меню не является активным кроме Справки), и в списке дисков Disk2VHD этот раздел не присутствует?

Можно попробовать перенести загрузчик на другой диск. Например вот неплохая инструкция http://www.oszone.net/10752/move_windows7_

Александр

Хотел у спросить у Автора, а если я хочу сделать образ windows Server 2008 r2, но физический диск занимает 1 терабайт, а занято всего к примеру 100, я хочу взять запас, к примеру 300 гб, так как весь терабайт просто не влезет на ту машину, где стоит hyper v. Как быть в этот ситуации, что полностью перенести машину в виртуальную среду. Мне необходимо создать разделы, и выгрузить только тот, где есть информация, а другой свободный на 700 гб не трогать?

В этом нет необходимости. После конвертации получится виртуальный диск размером только 100Гб, а не 1Тб. А дальше его можно легко увеличить до нужного размера средствами Hyper-V.

aaalekseyyy

Хочу написать небольшой комментарий про обратную по своему действию утилиту Vhd2disk и свой опыт по ее применению для восстановления работоспособности VHD-файлов.

Mark Russinovich из Sysinternals для конвертирования физических дисков в виртуальные написал утилиту Disk2vhd, а Bruno Roques написал обратную утилиту, Vhd2disk, для конвертирования виртуальных дисков в физические, и выложил ее на форуме Sysinternals:
http://forum.sysinternals.com/vhd2disk_topic27311.html

Утилита бесплатная, написана как для Windows 32-bit, так и для Windows 64-bit:
Vhd2disk (32-bit): http://forum.sysinternals.com/uploads/865/Vhd2disk_32bits.zip
Vhd2disk (64-bit): http://forum.sysinternals.com/uploads/865/Vhd2disk_64bits.rar

Итак, как я восстанавливал поврежденный VHD-файл:

Если 7-zip открывает VHD-файл, значит структура VHD-файла сохраненилась, а повреждена лишь служебная информация в VHD-файле.

Скачал Vhd2disk, проверил мой поврежденный VHD-файл, она его открыла.

И я подумал, что ее можно использовать для восстановления VHD-файлов:
1. Создаем в VirtualBox VHD-файл, аналогичный по размеру, или больший;
2. Подключаем VHD-файл через оснастку Windows 7 «Управление дисками»;
3. Инициализируем подключенный диск (создавать на нем разделы и форматировать не нужно);
4. Запускаем Vhd2disk, в качестве донора показываем наш больной VHD-файл, в качестве конечной цели показываем наш подключенный виртуальный диск, который, после подключения, воспринимается Windows как физический, и запускаем копирование, которое идет по методу посекторного копирования;
5. Когда копирование закончилось, отключаем виртуальный диск в оснастке «Управление дисками»;
6. Проверяю воссозданный VHD-файл на VirtualBox, все работает отлично;
7. Все, мой VHD-файл восстановлен в полной функциональности.

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

Андрей

при конверте физической машины в Hyper-V оперативная память осталась в пределах физической (2Gb), хотя в параметрах виртуальной стоит 8Gb. чем побороть?

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

Андрей

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

Можно попробовать переустановить\обновить сервисы интеграции.