Sunday, October 29, 2017

перенос nativeboot vhd (vhdx) диска.

Использование VHD/VHDX дисков для установки ОС в режиме nativeboot в теории весьма удобно, но, как оказалось, на практике возникли сложности. Основная сложность - "что вообще с этим делать?" Потребовалось переконфигурировать RAID массив (перетащить данные в другое место, перестроить, вернуть все на место). Все это можно сделать с использованием обычных загрузочных дисков (Win server 2016 iso в моем случае), там есть режим восстановления с командной строкой и он видит мой контроллер без установки дополнительных драйверов.

После создания нового рейд массива (в bios или другими способами) нужно полученный диск инициализировать, создать раздел UEFI (100mb) и раздел для размещения VHDX файла. После копирования VHDX файла нужно примонтировать его и создать в UEFI разделе указатель для загрузки с примонтированного VHDX. Для этого потребуется использовать Diskpart и bcdboot. Речь идет про UEFI, для BIOS похоже, но чуть по другому.

Выдержка из документации Microsoft.

diskpart
list disk

Выбираем из списка нужный нам диск (свежесобранный массив).

select disk 0
clean
convert gpt
rem == 1. создаем системный раздел  и назначаем ему букву S==========
create partition efi size=100
format quick fs=fat32 label="System"
assign letter="S"
rem == 2. Microsoft Reserved (MSR) partition =======
create partition msr size=128
rem == 3. ну и диск для данных  с буквой M===========================
create partition primary
format quick fs=ntfs label="Main"
assign letter="M"

Неплохо бы еще глянуть на разделы

list volume
exit


Есть разбитый на разделы диск, копируем диск VHDX  чем и как угодно. Например
xcopy f:\windows.vhdx m:\

А теперь самое интересное

diskpart
select vdisk file=M:\windows.vhdx
attach vdisk

неплохо бы опять

list volume

Видим что VHDX подключился и на нем есть разделы, выясняем раздел с установленной ОС, пусть будет V:\ к примеру.

V:\
cd v:\windows\system32
bcdboot v:\windows /s S: /f UEFI

Перезагружаемся, все должно работать. За исключением Hyper-v. Для работы гипервизора оказывается надо еще
bcdedit /set hypervisorlaunchtype auto
Потом погасить сервер и включить обратно. Именно погасить, выключить, а не просто перезагрузить. Иначе возникает ошибка "Произошла ошибка при попытке запуска выбранных виртуальных машин Не удалось запустить виртуальную машину поскольку низкоуровневая оболочка не запущена"