Программный RAID1 (зеркало) для загрузочного GPT диска в Windows 10/ Server 2016
В этой статье мы рассмотрим, как создать программное зеркало (RAID1) из двух GPT дисков в Windows Server 2016/Windows 10, установленных на UEFI системе. Мы рассмотрим полноценную конфигурацию BCD загрузчика, позволяющую обеспечить корректную загрузку Windows и защитить данные от выхода из строя любого диска.
Итак, у нас имеется простой компьютер UEFI-архитектуры без встроенного RAID контроллера с двумя идентичными дисками размерами по 50 Гб. Наша задача — установить на первый GPT диск ОС (Windows Server 2016, Windows 10 или бесплатного сервер Hyper-V), а затем собрать из двух дисков программное зеркало (RAID1 – Mirroring).
В подавляющем большинстве случаев при выборе между программным или аппаратным RAID стоит выбирать последний. Сейчас материнские платы со встроенным физическим RAID контроллером доступны даже для домашних пользователей.
Запишите установочный образ Windows на DVD/ USB флешку, загрузите компьютер) с этого загрузочного устройства (в режиме UEFI, не Legacy) и запустите установку Windows Server 2016.
После установки, откройте консоли управления дисками (diskmgmt.msc), убедитесь, что на первом диске используется таблица разделов GPT (свойства диска -> вкладка Volumes -> Partition style –> GUID partition table), а второй диск пустой (не размечен).
Подготовка таблицы разделов для зеркала на 2 диске
Откройте командную строку с правами администратора и выполните команду diskpart. Наберите:
1 |
DISKPART>List disk |
Как вы видите, в системе имеется два диска:
- Disk 0 – диск с таблицей разделов GPT, на который установлена Windows
- Disk 1 – пустой неразмеченный диск
На всякий случай еще раз очистим второй диск и конвертируем его в GPT:
1 2 3 |
Select disk 1 clean Convert GPT |
Введите список разделов на втором диске:
1 |
List part |
Если найдется хотя бы один раздел (в моем примере это Partition 1 – Reserved – Size 128 Mb), удалите его:
1 2 |
Sel part 1 Delete partition override |
Выведите список разделов на 1 диске (disk 0). Далее вам нужно создать такие же разделы на Disk 1.
1 2 |
Select disk 0 List part |
Имеется 4 раздела:
- Recovery – 450 Мб, раздел восстановления со средой WinRE
- System – 99 Мб, EFI раздел (подробнее про структуру разделов на GPT дисках)
- Reserved 16 Мб, MSR раздел
- Primary – 49 Гб, основной раздел с Windows
Создаем такие же разделы на Disk 1:
1 2 3 4 5 6 7 |
Select disk 1 Create partition primary size=450 format quick fs=ntfs label=»WinRE» set id=»de94bba4-06d1-4d40-a16a-bfd50179d6ac» create partition efi size=99 create partition msr size=16 list part |
Преобразования дисков в динамические, создание зеркала
Теперь оба диска нужно преобразовать в динамические:
1 2 3 4 |
Select disk 0 Convert dynamic Select disk 1 Con dyn |
Создадим зеркало для системного диска (диск C:). Нужно выбрать раздел на первом диске и создать для него зеркало на 2 диске:
1 2 |
Select volume c Add disk=1 |
Должно появится сообщение:
1 |
DiskPart succeeded in adding a mirror to the volume |
Откройте консоль управления дисками, и убедитесь, что запустилась синхронизуя раздела C на (Recynching). Дождитесь ее окончания (может занять до нескольких часов в значимости от размера раздела C: ).
При загрузке Windows теперь будет появляться меню Windows Boot Manager с предложение выбрать с какого диска загружаться. Если не выбрать диск вручную, система через 30 секунд попытается загрузиться с первого диска:
- Windows Server 2016
- Windows Server 2016 – secondary plex
Однако проблема в том, что сейчас у вас конфигурация загрузчика хранится только на 1 диске, и при его потере, вы не сможете загрузить ОС со второго без дополнительных действий. По сути вы защитили данные ( но не загрузчик Windows) только от сбоя второго диска.
Программный RAID Windows не получится использовать для создания нормального зеркала EFI раздела. Т.к. на EFI разделе хранятся файлы, необходимые для загрузки ОС, то при выходе их строя первого диска, вы не сможете загрузить компьютер со второго диска без ручного восстановления загрузчика EFI на нем в среде восстановления. Эти операции довольно сложно сделать неподготовленному администратору, а также потребует дополнительного времени (которого может не быть, если у вас за спиной стоит толпа разгневанных пользователей).
Далее мы покажем, как скопировать EFI раздел на второй диск и изменить конфигурацию загрузчика BCD, чтобы вы могли загрузить Windows как с первого, так и со второго диска.
Подготовка EFI раздела на втором диске в зеркале
Теперь нужно подготовить EFI раздел на втором диске в зеркале, чтобы компьютер мог использовать этот раздел для загрузки Windows. Назначим EFI разделу на Disk 1 букву S и отформатируем его в файловой системе FAT32:
1 2 3 4 |
Select disk 1 Select part 2 assign letter=S format fs=FAT32 quick |
Теперь назначим букву диска P: для EFI раздела на Disk 0:
1 2 3 4 |
select disk 0 select partition 2 assign letter=P exit |
Копирование конфигурации EFI и BCD на второй диск
Выведите текущую конфигурацию загрузчика BCD с помощью команды:
1 |
bcdedit /enum |
При создании зеркала, служба VDS автоматически добавила в конфигурацию BCD запись для второго зеркального диска (с меткой Windows Server 2016 – secondary plex).
Чтобы EFI в случае потери первого диска могут загружаться со второго диска, нужно изменить конфигурацию BCD.
Для этого нужно скопировать текущую конфигурацию Windows Boot Manager
1 |
bcdedit /copy {bootmgr} /d "Windows Boot Manager Cloned" |
1 |
The entry was successfully copied to {44d1d6bf-xxxxxxxxxxxxxxxx} |
Теперь скопируйте полученный ID конфигурации и используйте его в следующей команде:
1 |
bcdedit /set {44d1d6bf-xxxxxxxxxxxxxxxx} device partition=s: |
Если все правильно, должна появится строка The operation completed successfully.
Выведите текущую конфигурацию Windows Boot Manager (bcdedit /enum). Обратите внимает, что у загрузчика теперь два варианта загрузки EFI с разных дисков (default и resume object).
Теперь нужно сделать копию BCD хранилища на разделе EFI первого диска и скопировать файлы на второй диск:
1 2 3 |
P: bcdedit /export P:\EFI\Microsoft\Boot\BCD2 robocopy p:\ s:\ /e /r:0 |
Осталось переименовать BCD хранилище на втором диске:
1 |
Rename s:\EFI\Microsoft\Boot\BCD2 BCD |
И удалить копию на Disk 0:
1 |
Del P:\EFI\Microsoft\Boot\BCD2 |
Теперь при выходе из строя первого диска, вам нужно при загрузке компьютера выбрать устройство «Windows Boot Manager Cloned», а затем «Microsoft Windows Server 2016 — secondary plex».
При загрузке с отказавшим дисков, в диспетчере Disk Management вы увидите сообщение Failed Redndancy.
В этом случае вы должны заменить неисправный диск, удалить конфигурацию зеркала и пересоздать программный RAID с начала.
Буквы дисков и сами диски остаются видны для всех, и в них можно записывать и т.д.