Перенос сервера в среду виртуализации Hyper-V часть 2 — в этой части будет рассмотрен перенос сервера Windows 2008 R2, который установлен на систему с UEFI BIOS.
В прошлый раз сервер под управлением Windows 2008 переносился в виртуальную среду Hyper-V средствами Acronis Backup Advanced. И основные проблемы были связаны с настройкой самой ОС Windows под гипервизор.
Почему снова статья про перенос?
Уже сравнительно давно идёт бум виртуализации и сопутствующий ему стремительный массовый переезд серверов с физики в виртуальную среду - это выгодно, ведь плотность использования железа при этом возрастает - "..а семь шапок сможешь?", что-то вроде того. Перенос серверов в среду виртуализации и сейчас, и в обозримом будущем - актуальная задача.
Что не так с UEFI?
UEFI - развитие стандартного BIOS, система с новыми возможности и лучшей поддержкой оборудования:
- Инициализация оборудования происходит параллельно при UEFI и последовательно при обычном BIOS;
- Windows умеет использовать драйверы UEFI;
- UEFI поддерживает красивую оболочку с использованием мыши;
- UEFI знает где лежит загрузчик на диске.
Вот с последним и будем бороться. Особенность установки Windows на чистый UEFI без поддержки совместимости или с отключенной поддержкой совместимости, заключается в том, что:
- Программа установки подружится только с GPT жестким диском;
- В процессе установки будут созданы - 100Mb системный EFI раздел, 128Mb необходимый для GPT MSR раздел (Microsoft System Reserved) - при просмотре невидим и доступен только специализированным средствам, загрузочный раздел с Windows, уже такого размера как вы выберете. Windows 8-10 создадут ещё и раздел восстановления, но у 2008 R2, как будет далее видно на скриншоте, его нет;
- При последующей загрузке с диска BIOS UEFI сначала ищет на диске EFI раздел, а затем пытается исполнить файл по строго фиксированному адресу на этом разделе: /EFI/boot/bootx64.efi
Описание проблемы
Проблема характерна для серверов с Windows 2008 R2, установленных на UEFI-платформу. Когда мы создадим клон диска сервера - виртуальный жесткий диск и добавим его к виртуальной машине 1 поколения, так как с машиной 2 поколения Windows 2008 R2 работать не умеет, то при старте машины:
- Обычный BIOS не сможет загрузиться с GPT (без довольно-таки кривых и сложных средств);
- Обычный BIOS не умеет работать с EFI разделом.
Решение
Проводить эксперименты с живым сервером в продакшене - занятие неблагодарное, значит изначально хоть что-то делать с диском сервера, кроме сдувания пылинок - от этого отказываемся сразу, будем копировать диск сервера как он есть и потом уже все операции производить на виртуальном клоне, если что-то будет испорчено в процессе, ничего страшного, ведь сервер не пострадает. Схема следующая:
- Получаем виртуальный диск с помощью disk2vhd с сервера;
- Удаляем EFI раздел загрузчика;
- Получаем виртуальный диск с обычным загрузчиком с другого сервера 2008 без UEFI;
- Копируем раздел загрузчика с одного виртуального диска на другой;
- Переводим диск в MBR;
- Стартуем машину и проверяем.
Работа с EFI разделом
Потребуется второй сервер - благо у меня их много, ОС умеющая цеплять к себе виртуальные диски - у меня это Windows 10 и средства для копирования партиций - у меня это Acronis Disk Director, наверное как-то и по-другому можно, у меня так.
Вот так выглядит диск на исходном сервере:

и никаких средств для работы с ним Windows не предлагает. Получаем виртуальный диск.
А вот та же картинка с сервера-донора:

Запускаем на доноре disk2vhd и отмечаем только Зарезервировано системой (остальные партиции будут присутствовать в созданном диске, но в виде неотформатированных разделов RAW):

Оба виртуальных диска копируем на Windows 10 и подсоединяем их через Управление дисками для работы:

Разделы RAW можно удалить, но вот удалять EFI раздел оснастка не умеет и Acronis не умеет это делать. Воспользуемся встроенной утилитой diskpart, запустив командную строку от имени Администратора:

Запускаем опять Управление дисками и проверяем:

Копируем загрузчик, делаем это с помощью Acronis Disk Director:

Работа с GPT диском
Воспользуемся проверенным методом. Всё подробно описано, повторяться не буду, скажу лишь вкратце: удаляем все разделы через встроенную оснастку Windows, переводим диск в MBR с её же помощью, ищем разделы внешней программой.
К сожалению статью с описанием метода пришлось удалить, так как 3 человек пожаловались, что с помощью этого метода потеряли данные. Пишу статьи чтобы люди пользу получали, а не вред. Поэтому так.
Единственное отличие в том, что в этот раз пользовался утилитой Acronis Recovery Expert из комплекта Acronis Disk Director для поиска разделов, а не Paragon Partition Manager, но в целом разница невелика.

После преобразования в MBR получился виртуальный диск с характерной "дыркой от GPT" 🙂 , там был раздел MSR, её можно убрать тем же Acronis, сдвинув партицию. Не стал тратить на это время.

Машина ожила, но загрузчик конечно же поврежден. Лечим его в автоматическом режиме с помощью любого ISO дистрибутива 2008 R2 или Windows 7 x64 - вся процедура меньше минуты. И, наконец, получаем полностью работоспособную виртуальную машину. Рассказывать подробно про само восстановление тоже не стану, весь интернет набит одинаковыми статьями с описанием как это сделать.
Пара замечаний по материалу:
- А если бы это была 2012 R2, к примеру? - Самому интересно, но без реальной задачи мотивации нет;
- Если не копировать раздел с загрузчиком с другого сервера, а как-то пересоздать его? - Копировать проще, всего пара минут, был бы сервер.
Прикладываю виртуальный жесткий диск, в котором только 100Mb раздел загрузчика Windows 2008 R2 на всякий пожарный.
Двс! Занимаюсь сейчас переносом на HVS2012r2 машины у которой стоит управление UPS в случае сбоя по питанию. Не приходилось сталкиваться с задачей корректного "тушения" ВМ и HVS (там проброс COM-портов. средства управления UPS)?
Нет, с таким аспектом сталкиваться не приходилось, APC 5000 рулят 🙂 Наверное копал бы в сторону вот чего:
некий сервер в той же сети управляется ИБП и перед выключением софт ИБП запускает скрипт удаленного выключения HVS.
Если, конечно, такая схема уместна.
//manaeff.ru/forum/viewtopic.php?f=13&t=954