вторник, 12 февраля 2019 г.

Создание программного RAID-1 на GPT разделе средствами Windows Server 2016

  Есть Windows Server 2016. Аппаратный RAID отсутствует полностью. Надо сделать на системном диске програмное зеркало (RAID-1). Разбиение диска - GPT.
   Автор впервые создавал програмное зеркало на GPT разделе, поэтому при написании использовал статью "How to set up dynamic boot partition mirroring on GUID partition table (GPT) disks in Windows Server 2008".
  Также обнаружено странное поведение система. Стоило хотя, бы раз загрузиться со вторичного диска, как зеркало разрушалось. Система нормально стартовала со вторичного диска и прекрасно работала. Но в диспетчере дисков было видно, что диски в зеркале уже не синхронизировались. Зеркало снова приходилось восстанавливать вручную. Я не знаю, баг это или так и должно быть.
  Исходная конфигурация винчестеров
DISKPART> list disk
  Диск ###  Состояние      Размер   Свободно Дин  GPT
  --------  -------------  -------  -------  ---  ---
  Диск 0    В сети         1117 Gбайт   805 Gбайт   *    *
  Диск 1    В сети         1117 Gбайт  1117 Gбайт

DISKPART> select disk 0
Выбран диск 0.

DISKPART> list part
  Раздел    ###  Тип               Размер   Смещение
  -------------  ----------------  -------  -------
  Раздел 1    Восстановление     450 Mб  1024 Kб
  Раздел 2    Системный           99 Mб   451 Mб
  Раздел 3    Динамический (за  1024 Kб   550 Mб
  Раздел 4    Зарезервирован      15 Mб   551 Mб
  Раздел 5    Динамические дан   311 Gб   566 Mб
  Раздел 6    Динамические дан   805 Gб   312 Gб

DISKPART> list vol

  Том    ###  Имя  Метка        ФС     Тип         Размер   Состояние  Сведения
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
     Том 0     C                NTFS   Простой то   311 Gб  Исправен   Загрузоч
     Том 1         Восстановит  NTFS   Раздел       450 Mб  Исправен   Скрытый
     Том 2                      FAT32  Раздел        99 Mб  Исправен   Системны

В оснастке "Управление дисками это выглядит так"
Скрин 2. Оснастка "Управление дисками"
  У нас диск 0 - это винчестер с системой, первичный. Диск 1 - вторичный, на нем надо создать копию первичного.
  Начинаем.


Подготовка

  Вторичный диск 1 должен быть абсолютно чист. Если в процессе создания разделов, зеркал появяется ошибка, то часто причина в том, что остался мусор. Сначала в diskpart запустите:
select disk 1
clean
  Конвертируем вторичный диск в GPT
DISKPART> select disk 1
Выбран диск 1.
DISKPART> convert GPT
DiskPart: выбранный диск успешно преобразован к формату GPT.
  Проверяем разбиение вторичного винчестера 1
DISKPART> list part
  Раздел    ###  Тип               Размер   Смещение
  -------------  ----------------  -------  -------
* Раздел 1    Зарезервирован     128 Mб    17 Kб
DISKPART> sel part 1
Выбран раздел 1.
DISKPART> delete part override
DiskPart: выбранный раздел успешно удален.
DISKPART> list part
Разделы на диске отсутствуют.
  Видим, что на винчестере был какой-то раздел. Удаляем его.
  Теперь приступаем к созданию разделов на вторичном диске 1. Смотрим какого размера разделы на первичном винте 0 и пытаемся делать такого же размера на диске 1. Раздел 1 на 450 МБ я не создавал. Более того, когда я его сделал, то потом при создании зеркала показывало ошибку.
DISKPART> select disk 0
Выбран диск 0.
DISKPART> list part
  Раздел    ###  Тип               Размер   Смещение
  -------------  ----------------  -------  -------
  Раздел 1    Восстановление     450 Mб  1024 Kб
  Раздел 2    Системный           99 Mб   451 Mб
  Раздел 3    Динамический (за  1024 Kб   550 Mб
  Раздел 4    Зарезервирован      15 Mб   551 Mб
  Раздел 5    Динамические дан   311 Gб   566 Mб
  Раздел 6    Динамические дан   805 Gб   312 Gб
DISKPART> select disk 1
DISKPART> create partition efi size=99
DiskPart: указанный раздел успешно создан.
DISKPART> create partition msr size=15
DiskPart: указанный раздел успешно создан.
DISKPART> list part
  Раздел    ###  Тип               Размер   Смещение
  -------------  ----------------  -------  -------
  Раздел 1    Системный           99 Mб  1024 Kб
  Раздел 2    Зарезервирован      15 Mб   100 Mб
  Видим что разделы созданы.

Конвертирование винчестеров в динамические диски

  Для работы в зеркале оба винчестера должны быть динамическими
DISKPART> select disk 1
Выбран диск 1.
DISKPART> convert dynamic
DiskPart: выбранный диск успешно преобразован к динамическому формату.
  Сделай то же самое для диска 0.
DISKPART> select disk 0
Выбран диск 0.
DISKPART> convert dynamic
DiskPart: выбранный диск успешно преобразован к динамическому формату.

Создание зеркала

  Смотрим список томов. Диск с системой у нас C:. Выбираем его и командой "add disk=1" создаем зеркало.
DISKPART> select volume c
Выбран том 0.
DISKPART> add disk=1
DiskPart: зеркало успешно добавлено к тому.
Скрин 2. Диски сразу после создания зеркала

  На этом скрине видно состояние дисков сразу после этих команд. В инструкции написано ждать окончания синхронизации  разделов C:. Это может занять несколько часов. Теперь при старте Windows у нас будет 30 сек задержки и предложение выбрать "Microsoft Windows Server 2016 - первичный плекс" и "Microsoft Windows Server 2016 - вторичный плекс"

Форматирование EFI раздел

  Теперь надо отформатировать EFI раздел на вторичном винчестере 1. Это тот раздел, который мы создавали командой diskpart "create partition efi size=99".
  У меня EFI раздел является разделом 1. У вас может быть другой номер. Нужный вам раздел смотри с помощью "list partition".
 Тут также назначаются EFI-разделам назначаются буквы дисков S: и P: они нам понадобятся на следующих шагах.
DISKPART> select disk 1
Выбран диск 1.
DISKPART> select partition 1
Выбран раздел 1.
DISKPART> assign letter=S
DiskPart: назначение имени диска или точки подключения выполнено успешно.
DISKPART> format fs=FAT32 quick
  Завершено (в процентах): 100
Программа DiskPart успешно отформатировала том.
DISKPART> select disk 0
Выбран диск 0.
DISKPART> select partition 2
Выбран раздел 2
assign letter=P.
DISKPART> assign letter=P
DiskPart: назначение имени диска или точки подключения выполнено успешно.
DISKPART> exit
Завершение работы DiskPart…
  Можно проверить правильно ли вы назначили буквы дисков P: и S:. На диске P: должна быть папка EFI. Если такой папки нет, значит буква диска назначена неправильно. Диск S: должен быть пустым. Мы ведь только что его отформатировали.

  Насколько помню эти диски были доступны только в администраторской командной строке. Проводником посмотреть их не удалось.

Конфигурируем точки загрузки для зеркального диска с помощью Bcdedit.exe

  Можно посмотреть текущие точки загрузки командой "bcdedit /enum" и после наших манипуляций еще раз ее запустить и сравнить разницу. Продолжим.
C:\install>p:
P:\EFI\Microsoft\Boot>
P:\EFI\Microsoft\Boot>bcdedit /copy {bootmgr} /d "Windows Boot Manager Cloned"
Запись успешно скопирована в {739b8421-1e39-11e9-8067-a6f5c530b6c4}.
Запомним "{739b******************b6c4}". На следующем шаге это нам пригодится. У вас тут бубут другие цифры

P:\EFI\Microsoft\Boot>bcdedit /set {739b8421-1e39-11e9-8067-a6f5c530b6c4} device partition=s:
Операция успешно завершена.
  Тут между фигурными скобками должна стоять строка из предыдущей команды.
  Можете еще раз запустить "bcdedit /enum" и сравнить с предыдущим запуском.

Копирование раздела EFI и BCD-хранилища на вторичный винчестер

  Экспортируем BCD-хранилище на EFI разделе диска 0
P:\EFI\Microsoft\Boot>bcdedit /export P:\EFI\Microsoft\Boot\BCD2
Операция успешно завершена.


  Копируем системные файлы из EFI-раздела первичного диска (P:) на EFI-раздел вторичного диска (S:).
P:\EFI\Microsoft\Boot>robocopy p:\ s:\ /e /r:0
  Далее идет длинный вывод, который я здесь пропущу.
  Переименуем BCD-хранилище на диске 1 так, чтобы оно соответствовало хранилищу на диске 0.
P:\EFI\Microsoft\Boot>rename S:\EFI\Microsoft\Boot\BCD2 BCD
  Удалить копию BCD-хранилища на первичном диске
P:\EFI\Microsoft\Boot>del P:\EFI\Microsoft\Boot\BCD2
  Далее удаляем символы дисков P: и S:


P:\EFI\Microsoft\Boot>c:
C:\install>diskpart
Microsoft DiskPart, версия 10.0.14393.0
(С) Корпорация Майкрософт (Microsoft Corporation), 1999-2013.
DISKPART> select volume p
Выбран том 3.
DISKPART> remove
DiskPart: удаление имени диска или точки подключения выполнено успешно.
DISKPART> select volume s
Выбран том 1.
DISKPART> remove
DiskPart: удаление имени диска или точки подключения выполнено успешно.


  Мы победили.
  Теперь если что-то случится с первичным жестким диском, надо при загрузке сервера указать устройство загрузки "Windows Boot Manager Cloned" и далее выбрать "Microsoft Windows Server 2016 -  вторичный плекс."

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

  1. Спасибо, полезная статья! Но есть вопрос по восстановлению целостности массива. Было сдделано пошагово все вышеизложенное и для проверки вынут первичный диск. Далее загрузка во вторичный плекс. После этого выключаем ПК, возвращаем первичный диск на место. Загрузка во вторичный плекс, в управлении дисками наблюдаю ДИСК 0 - Foreign, а так же появился еще один диск с состоянием Missing. Какие дальнейшие действия?

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

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