internet-logo41

Программный RAID-1 в Windows

Программный RAID под WindowsРиск потери важных данных по работе заставил собрать дома рейд на двух дисках (да, да, это помимо бекапов).
Рассматривал аппаратные контроллеры и программную реализацию средствами Windows 7 (по сути, эта функция почти одна и та же в Winsows 2000/XP/Vista/7).

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

По итогу все прекрасно работает, кроме одного момента, о котором почему-то никто не пишет. Стоит виндище зависнуть до необходимости аппаратйно перезагрузки и тут же гарантированно происходит рассинхронизация зеркального тома, что приводит к необходимости выполнения процедуры ресинхронизации. Да, ладно уж, что в это время зеракльный том фактически не зеркальный, т.к. он в процессе восстановлений контрльных сумм. Ладно, что пока он восстанавливается, дисковые операции значительно замедлены (оба винта как сумасшедшие хрустят головками). Хорошо, хоть это происходит в фоне и можно работать!

Но самая херня кроется дальше!
У меня в зеркале три тома, которым сопоставлены три логичесих диска: C:, D: и E:
При нестандартном завершении работы винды все они подлежат синхронизации. Теперь внимание, что делает Windows. Вместо того, чтобы произвести ресинхронизацию этих томов по отдельности, она делает это параллельно! А вед все три тома на одном зеркале, т.е. на одной паре дисков. Ну не хватило мозгов у программистов мелкомягких задуматься о том, что если головку HDD дергать туда-сюда, то все будет происходить в разы, а то и на порядок, медленнее! И самое западло, что приостановить ресинхронизацию нельзя. Нельзя даже удалить зеркальный том (чтобы создать его еще раз позже) пока идет ресинхронизация.

А ведь можно было делать ресинхронизацию последовательно, диск за диском для томов, которые находятся на одном и то же наборе HDD. Тогда она прошла бы в разы быстрее! Когда остается последний диск E:, он ресинхронизируется очень тихо (жесткие диски не мотают головками туда-сюда) и быстрее, чем первые два в несколь раз.

Такой же момент при создании томов. Если сделать сразу все три зеркальных тома, то windows будет их синхронизировать так же тупо все вместе. Если создавать их по очереди, дождавшись синхронизации  предыдущего перед созданием следующего, то все будет граздо быстрее.