четверг, 15 октября 2009 г.

Загрузка Microsoft Hyper-V Server R2 с flash накопителя

Многим специалистам в области виртуализации известно о возможности загрузки и работы гипервизора VMware ESXi напрямую с flash накопителя.

Незадолго до релиза Hyper-V Server R2, Microsoft заявила о предоставлении аналогичной возможности своим OEM партнерам. До этого момента все попытки создания чего-то подобного пресекались одним неприятным фактом - установщик просто не видел никаких устройств со сменными носителями на этапе выбора места установки ОС.

Что же поменялось с выходом R2?

Да практически ничего. Установщик все также слеп. Однако, Microsoft добавила поддержку виртуальных дисков (в формате .vhd) на которых можно создавать разделы и устанавливать ОС, как если бы это были отдельные физические диски. Единственное требование - наличие еще одного системного раздела на физическом накопителе с записанным туда загрузчиком (bootmgr), который бы мог монтировать витуальный диск и запускать ОС.

Суть метода заключается в первоначальной установки ОС на поддерживаемый носитель (физический и виртуальный диски) с последующим переносом всех необходимых файлов, загрузочных секторов и загрузчика на flash накопитель. Для тестовых целей я устанавливал Hyper-V, используя VMware Workstation 6.5, т.к. он умеет презентовать usb устройства с хоста виртуальной машине. В качестве объекта эксперимента выступала моя новая 16Гб флешка, хотя должно хватить и 8Гб.

Установка ОС на виртуальный диск
Загрузитесь с установочного диска Microsoft Hyper-V Server R2.

Выберите язык установщика и языковые настройки. Запустите командную консоль cmd.exe, нажав комбинацию клавиш Shift + F10, либо в окне Install now выбрав Repair computer -> use recovery tools... -> Command Prompt.

В командной консоли запустите Diskpart и создайте новый раздел на диске:
select disk <НОМЕР_ДИСКА>
create partition primary
select partition 1
assign
format fs=ntfs label="Boot Partition"

Номер диска можно посмотреть при помощи команды list disk. Также можете выполнить detail partition, чтобы узнать букву, присвоенную разделу.

Создайте виртуальный диск на новом разделе и смонтируйте его:
create vdisk file=<ПУТЬ_К_ФАЙЛУ> maximum=<РАЗМЕР_ДИСКА> type=fixed
select vdisk file=<ПУТЬ_К_ФАЙЛУ>
attach vdisk

Закройте командную консоль и продолжите установку Hyper-V. На экране выбора расположения ОС укажите созданный виртуальный диск. Установщик выведет предупреждение о том, что Windows не может быть установлена на данный диск. Можете его проигнорировать.
После завершения процесса установки загрузитесь в ОС и обновите/добавьте драйверы для устройств.

Если вы планируете использовать создаваемый образ для загрузки нескольких серверов или на сервере с другой аппаратной конфигурацией, то перед копированием выполните:
sysprep /generalize /shutdown

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

Копирование образа на flash накопитель
После выполнения Sysprep, загрузите систему с установочного диска Hyper-V Server R2 и зайдите в консоль.

Подключите flash накопитель. Запустите Diskpart.exe и при необходимости создайте и отформатируйте на флешке новый раздел:
select disk <НОМЕР_FLASH_НАКОПИТЕЛЯ>
clean
create partition primary
select partition 1
assign
format fs=ntfs label="Boot Flash"


Пометьте созданный раздел как активный:
active

Подмонтируйте виртуальный диск и назначьте ему букву.
select vdisk file=<ПУТЬ_К_ФАЙЛУ>
attach vdisk
assign


Выйдите из Diskpart. Запишите на flash накопитель загрузочный сектор:
bootsect /nt60 <БУКВА_FLASH_НАКОПИТЕЛЯ>

Скопируйте загрузчик с виртуального диска на флешку:
bcdboot <БУКВА_ВИРТУАЛЬНОГО_ДИСКА>\Windows /s <БУКВА_FLASH_НАКОПИТЕЛЯ>
Запустите Diskpart еще раз и отмонтируйте виртуальный диск
select vdisk file=<ПУТЬ_К_ФАЙЛУ>
detach vdisk


Скопируйте все содержимое физического диска на флешку (включая файл виртуального диска .vhd):
robocopy /copyall <БУКВА_РАЗДЕЛА_ДИСКА> <БУКВА_FLASH_НАКОПИТЕЛЯ>

Теперь можете выключить компьютер и вынуть из него жесткий диск. Зайдите в bios, и в качестве первичного загрузочного устройства выберите flash накопитель, а также проверьте, что включены Intel VT-x/AMD-V и DEP, затем перезагрузитесь, и вуаля!

Хочу отметить, что несмотря на низкую латентность flash накопителей, время загрузки гипервизора существенно увеличивается по сравнению с обычным (sata) жестким диском. Однако, если вас это не пугает, а также в наличии флешка с большой емкостью, можете и Windows 7/Windows Server 2008 R2 на нее установить.

Альтернативный вариант установки Hyper-V Server R2 с использованием утилит из Microsoft WAIK вы можете найти в данной статье.

3 комментария:

  1. Интересно, а вот так получится:
    мне надо сервер сделать, а на материнке только два разъёма SATA и оба будут заняты дисками (raid). А USB на плате целая куча… Вот я и подумал флешку сделать диском и на него Windows Server поставить! Такое возможно?

    ОтветитьУдалить
  2. "В командной консоли запустите Diskpart и создайте новый раздел на диске:
    select disk "
    Сначала List disk, а потом select.
    "Закройте командную консоль и продолжите установку Hyper-V."
    Не нужно закрывать консоль, Exit , выходим из Diskpart.
    X:\sources>setup
    Далее продолжаем установку. Райды лучше создать заранее и если не видны, на этом этапе подсунуть драйвера.
    А, всё остальное супер спасибо, ставил HV-16 .

    ОтветитьУдалить
  3. Иногда, после select disk Требуется очистка Clean

    ОтветитьУдалить