Настройка зеркалирования дисков (массив RAID-1) в Windows Server 2008 R2

Отступление: использование программного массива дисков RAID 1 (зеркало) не есть хорошо. Грубо говоря, это развод для лохов. Для получения надежности от дисковой системы необходимо использовать только аппаратный RAID-массив. Это дорого, но надежно.

Почему программный RAID 1 плох? Может сложиться ситуация, при которой оба диска станут недоступными. Например, первый диск начинает активно сыпаться (появляются bad-сектора). Система зависает, т.к. не может произвести операцию чтения/записи. После перезагрузки сервера автоматически запускается ресинхронизация дисков, т.е. информация с первого диска перезаписывается на второй. Если ресинхронизацию прервать, то второй диск станет бесполезной грудой металла, т.к. он не содержит полный образ системы. А ресинхронизация обязательно прервется из-за bad-секторов на первом диске. В результате у нас на руках останутся два неисправных диска и дай бог, чтобы у вас сохранился свежий образ системы и данных.

Тем не менее, программный RAID 1 массив часто используется и ниже приведена инструкция, как его настроить в Windows Server 2008 R2.

Исходные данные: два диска до 2 ТБ, работающих в режиме BIOS (MBR). Диски большей емкости использовать не рекомендуется, т.к. при этом не будет работать встроенная система архивации данных.

Перед установкой Windows необходимо отключить один из дисков. Установщик Windows такой затейник, что запросто может поставить системную область и основную на разные диски.

После установки системы имеем следующую конфигурацию дисков:
Диски после установки Windows

Создание раздела для восстановления системы

Windows Recovery Environment позволяет восстановить систему.
В командной строке с правами администратора запускаем программу Diskpart и вводим следующие команды:

select volume=c
shrink desired=300
create partition primary size=300
format fs=ntfs quick label=Recovery
assign letter=q
Обратите внимание, для Windows Server 2012 размер раздела восстановления должен быть более 300 МБ, например, 500 МБ.

Окно с Diskpart не закрываем и открываем новое окно с командной строкой.

reagentc.exe /disable
rd c:\Recovery
robocopy.exe c:\Windows\System32\Recovery\ q:\Recovery\WindowsRE\ Winre.wim /copyall /dcopy:t /move
reagentc.exe /setreimage /path Q:\Recovery\WindowsRE
reagentc.exe /enable

В результате в системе появится диск Q для восстановления системы.

Копирование системного раздела на второй диск

Создаем системный раздел на втором диске (disk1), чтобы с него можно было загрузиться в случае выхода из строя первого диска (disk0). Размер системного раздела на втором диске должен быть таким же, как и на первом диске. Например, для Windows Server 2012 - 350 МБ.

Окно с Diskpart:

select disk 1
create partition primary size=100
active
format fs=ntfs quick label="System Reserved"
assign letter=t
select disk 0
select partition 1
assign letter=s

Второе окно с командной строкой:

robocopy.exe s:\ t:\ * /e /copyall /dcopy:t /xf BCD.* /xd "System Volume Information"

Окно с Diskpart:

select volume=s
remove

Буковки дискам назначаем для копирования данных. В самом конце настройки системные разделы и разделы для восстановления не будут иметь привязки к буквам.
Здесь s: - системный раздел на первом диске, t: - на втором.

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

Перед созданием зеркала обязательно преобразовать диски в динамические тома.

Окно с Diskpart:

select disk 1
convert dynamic
select disk 0
convert dynamic
select volume=q
retain
select volume=c
add disk=1 wait

Процесс ресинхронизации для дисков 2 ТБ длится около 5 часов.

Ресинхронизация дисков

Копирование раздела для восстановления

Следующим шагом копируем раздел для восстановления системы с первого диска (disk 0) на второй (disk 1) (с q: на r:).
Перед копированием необходимо создать новый раздел на втором диске.

Окно с Diskpart:

create volume simple disk=1 size=300
retain
format fs=ntfs quick label=Recovery
assign letter=r

Второе окно с командной строкой:

robocopy.exe q:\ r:\ * /e /copyall /dcopy:t /xd "System Volume Information"

Окно с Diskpart:

select volume=q
remove

Редактирование меню загрузки

Копируем меню загрузки с первого диска на второй.
Второе окно с командной строкой:

bcdedit /export t:\boot\BCD

После преобразования дисков в массив RAID-0 в меню при загрузке системы появится две строчки:
Windows Server 2008 R2
Windows Server 2008 R2 – secondary plex (вторичный плекс)

При загрузке с первого диска (первичный плекс) нет смысла продолжать загрузку со второго диска. Поэтому вторую строчку меню можно удалить для эстетического удовольствия. Кому лень тратить на это время, переходят к редактированию меню загрузки на втором диске.

bcdedit /enum all

Эта команда выводит всю конфигурацию хранилища загрузки. Здесь нас интересуют идентификаторы каждого пункта меню.

bcdedit /delete {identifier1}
bcdedit /delete {identifier2}

где
{identifier1} - идентификатор с описанием "Windows Resume Application – secondary plex",
{identifier2} - "Windows Server 2008 R2 – secondary plex".

Таким образом, меню выбора плексов не будет появляться при загрузке сервера.

Далее переходим к редактированию конфигурации загрузки второго диска.

bcdedit /store t:boot\BCD /enum all
bcdedit /store t:\boot\BCD /set {identifier1} ramdisksdidevice partition=r:
bcdedit /store t:\boot\BCD /set {memdiag} device partition=t:
bcdedit.exe /store t:\boot\BCD /set {identifier2} device ramdisk=[r:]\Recovery\WindowsRE\Winre.wim,{identifier1}
bcdedit.exe /store t:\boot\BCD /set {identifier2} osdevice ramdisk=[r:]\Recovery\WindowsRE\Winre.wim,{identifier1}
bcdedit.exe /store t:\boot\BCD /set {bootmgr} device partition=t:

где
{identifier1} - идентификатор с описанием "Ramdisk Options" (в некоторых случаях "Windows Recovery")
{identifier2} - идентификатор с описанием "Windows Recovery Environment".

Окно с Diskpart:

select volume=r
remove

Для перфекционистов можно удалить ссылки на первичный плекс:

bcdedit /store t:\boot\BCD /delete {identifier1}
bcdedit /store t:\boot\BCD /delete {identifier2}

где
{identifier1} - идентификатор с описанием "Windows Resume Application",
{identifier2} - идентификатор с описанием "Windows Server 2008 R2".

Заключительная часть:

Bcdedit.exe /store t:\boot\BCD /set {identifier1} resumeobject {identifier2}
bcdedit.exe /store t:\boot\BCD /set {identifier1} recoverysequence {identifier3}
bcdedit.exe /store t:\boot\BCD /set {bootmgr} default {identifier1}
Bcdedit.exe /store t:\boot\BCD /set {bootmgr} resumeobject {identifier2}

где
{identifier1} - идентификатор с описанием "Windows Server 2008 R2 – secondary plex",
{identifier2} - идентификатор с описанием "Windows Resume Application – secondary plex",
{identifier3} - идентификатор с описанием "Windows Recovery Environment".

Diskpart:

select volume=t
remove

Смотрите также:
Создание программного RAID 1 массива для UEFI систем (GPT-диски) (english)

Настройка зеркалирования дисков (массив RAID-1) в Windows Server 2008 R2: 9 комментариев

  1. Окно с Diskpart:
    select disk 1
    create partition primary size=100
    active
    format fs=ntfs quick label=»System Reserved»
    assign letter=t
    select disk 0
    select partition 1
    assign letter=s

    Окно с Diskpart:
    select volume=s
    remove

    Между этими двумя блоками команд пропущено копирование загрузчика?

    • Загрузчик для второго диска делаем позже с помощью BCDEDIT:
      bcdedit /export t:\boot\BCD

  2. У меня нет индентификатора с описанием «Ramdisk Options», если его пропустить критично ли это будет или что сделать чтобы он появился?

  3. «использование программного массива дисков RAID 1 (зеркало) не есть хорошо. Грубо говоря, это развод для лохов. Для получения надежности от дисковой системы необходимо использовать только аппаратный RAID-массив»

    лолшто? Ну, возможно в винде это и так, хз, но звучит либо как бред, либо как невероятная недоработка индусов, но в ГНУ/Линуксе такого нет 100% и программный рейд (mdadm) отрабатывает ошибки как положено, помечая диск как битый и отключая его.

    А любители искать старый аппаратный контроллер в n часу ночи пусть сразу закупаются успокоительными, обезболивающими и смазкой — пригодятся, раньше или позже.

Добавить комментарий для Алекс Отменить ответ

Ваш адрес email не будет опубликован.

Confirm that you are not a bot - select a man with raised hand: