Жёсткий диск умирает внезапно. Вчера всё работало, а сегодня в нём щелчки, скрежет или мёртвая тишина, и тысячи файлов уходят в небытие вместе с ним. Резервная копия спасает, но восстановление из неё занимает время, а последние изменения после неё всё равно теряются. Зеркальное дисковое пространство в Windows предлагает иное решение: оно хранит данные сразу на нескольких дисках одновременно, так что отказ одного из них вообще не прерывает работу. Файл продолжает читаться со второго диска, словно ничего не случилось, а админу остаётся лишь спокойно заменить умерший накопитель. Эта защита встроена в систему и не требует ни дорогих контроллеров, ни сторонних программ.
Зеркальное пространство хранит несколько копий каждого файла на разных физических дисках. Когда программа пишет данные, система автоматически дублирует их на все диски зеркала. Когда читает, берёт с любого доступного. Отказ одного диска просто означает, что копия осталась на другом, и работа не прерывается. За эту надёжность платят объёмом: при двойном зеркале половина общей ёмкости уходит под дубликат. Но для ценных данных такая цена оправдана, ведь альтернатива - потеря всего при первом же сбое накопителя.
Различие двустороннего и трёхстороннего зеркала
Зеркало бывает разной глубины, и от неё зависит, сколько одновременных отказов переживёт пространство. Двустороннее зеркало хранит две копии каждого файла и выдерживает отказ одного диска без потери данных. Для его создания нужно минимум два физических диска. Трёхстороннее зеркало держит три копии и переживает уже отказ двух дисков сразу, но требует минимум пяти физических дисков и отдаёт под полезные данные лишь треть общей ёмкости. Выбор глубины зависит от того, насколько критичны данные и сколько дисков готовы выделить под защиту.
Для домашнего хранилища и большинства задач двустороннего зеркала достаточно: оно защищает от самого частого сценария, гибели одного диска. Трёхстороннее берут там, где простой недопустим даже на время замены диска, например на ответственных серверах, потому что оно держит удар, даже когда один диск уже вышел из строя, а второй отказал в процессе восстановления. Понимание этой разницы помогает не переплатить дисками там, где хватает простой защиты, и не сэкономить там, где нужна повышенная надёжность. Стоит учитывать и время восстановления: чем больше объём данных и чем медленнее диски, тем дольше зеркало возвращается в полную силу после замены накопителя. Всё это время, пока идёт досоздание копий, пространство уязвимо к отказу ещё одного диска, и здесь трёхстороннее зеркало выигрывает вдвойне, потому что даже в разгар восстановления у него остаётся запасная копия. На больших объёмах восстановление двустороннего зеркала растягивается на часы, и этот промежуток повышенного риска - ещё один довод в пользу более глубокой защиты для по-настоящему критичных данных.
Подготовка дисков и создание пула под зеркало
Зеркальное пространство строится поверх пула носителей, поэтому сначала готовят пул. Смотрят, какие диски пригодны для объединения, затем создают из них пул. Просмотр доступных дисков делается командой оболочки PowerShell:
Get-PhysicalDisk -CanPool $True
Команда показывает чистые диски без разделов, годные для пула. Из них собирают пул, задав ему понятное имя:
$диски = Get-PhysicalDisk -CanPool $True
New-StoragePool -FriendlyName "ЗеркалоДанных" -StorageSubSystemFriendlyName "Windows Storage*" -PhysicalDisks $диски
Первая строка собирает пригодные диски, вторая создаёт из них пул. Для двустороннего зеркала в пуле должно быть минимум два диска, для трёхстороннего минимум пять. Желательно брать диски одинаковой ёмкости, потому что зеркало использует на каждом столько места, сколько есть на меньшем, и излишек большего диска пропадает впустую. После создания пул готов стать основой для зеркального виртуального диска, в котором и проявится вся защита.
Создание двустороннего зеркального виртуального диска
На готовом пуле создают зеркальный виртуальный диск. Ключевой параметр - способ обеспечения надёжности, заданный как зеркало. Создание двустороннего зеркала на весь доступный объём выглядит так:
New-VirtualDisk -StoragePoolFriendlyName "ЗеркалоДанных" -FriendlyName "Зеркало1" -ResiliencySettingName Mirror -NumberOfDataCopies 2 -UseMaximumSize
Здесь способ надёжности задан как зеркало, число копий данных равно двум, а размер взят максимально возможный из пула с учётом дублирования. Параметр числа копий прямо определяет глубину зеркала: значение два даёт двустороннее, значение три - трёхстороннее. Если число копий не указать, система выберет двустороннее зеркало по умолчанию при достаточном числе дисков. После создания виртуальный диск уже защищён: каждый записанный на него байт автоматически дублируется на второй физический диск, и потеря любого из них не повредит данным.
Создание трёхстороннего зеркала для повышенной надёжности
Когда требуется выдержать отказ двух дисков сразу, создают трёхстороннее зеркало. Оно отличается только числом копий данных, равным трём, и требует минимум пяти дисков в пуле. Создание трёхстороннего зеркала фиксированного размера делается так:
New-VirtualDisk -StoragePoolFriendlyName "ЗеркалоДанных" -FriendlyName "Зеркало1" -ResiliencySettingName Mirror -NumberOfDataCopies 3 -Size 200GB -ProvisioningType Fixed
Здесь три копии данных, фиксированный размер двести гигабайт и заранее зарезервированное пространство. Трёхстороннее зеркало отдаёт под полезные данные лишь треть ёмкости пула, потому что хранит три копии всего. Зато оно переживает гибель сразу двух дисков, что критично для систем, где остановка недопустима. Фиксированный тип выделения здесь предпочтителен для предсказуемости: место резервируется сразу, и внезапной нехватки при заполнении не случится. Такой уровень защиты избыточен для домашних задач, но незаменим там, где данные дороже любых дисков.
Подготовка зеркального тома к работе
Созданный зеркальный виртуальный диск система видит как обычный новый диск, и его надо подготовить к работе: инициализировать, создать раздел, отформатировать. Вся подготовка делается одной цепочкой команд:
$вд = Get-VirtualDisk -FriendlyName "Зеркало1"
Initialize-Disk -VirtualDisk $вд -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel "Зеркало"
Первая строка находит созданный зеркальный диск, вторая инициализирует его, создаёт раздел на всё пространство с автоматической буквой и форматирует в файловую систему. После этого в проводнике появляется обычный с виду диск под назначенной буквой. Пользователь работает с ним как с любым другим, не замечая, что каждый его файл втихую дублируется на несколько физических накопителей. Вся механика зеркалирования спрятана под привычной буквой, и защита работает прозрачно, без всякого участия человека.
Проверка состояния зеркала и контроль его работоспособности
Защита бесполезна, если о её отказе узнаёшь слишком поздно. Зеркало может молча потерять один диск и продолжить работать, а владелец так и не заметит, что запас прочности исчерпан, пока не умрёт второй диск и данные не пропадут. Поэтому состояние зеркала проверяют регулярно. Просмотр состояния виртуального диска делается командой:
Get-VirtualDisk -FriendlyName "Зеркало1" | Select FriendlyName, HealthStatus, OperationalStatus
Команда показывает имя диска и два поля состояния. Здоровое зеркало имеет состояние исправности в значении здорового и рабочее состояние в значении нормальной работы. Если состояние исправности показывает предупреждение, а рабочее переходит в пониженную отказоустойчивость, значит, один из дисков выпал, и зеркало работает на остатке копий без запаса. Это сигнал к немедленной замене сбойного диска, пока не отказал следующий. Заодно проверяют состояние самих физических дисков пула, чтобы точно знать, какой накопитель сбоит:
Get-PhysicalDisk | Select FriendlyName, HealthStatus, OperationalStatus
Эта команда выводит состояние каждого физического диска. Диск со значением сбоя или потери связи и есть виновник деградации зеркала. Регулярная проверка этих состояний - дешёвая страховка, превращающая молчаливый отказ в замеченный вовремя сигнал. Разумная привычка - автоматизировать такую проверку скриптом с уведомлением, чтобы система сама сообщала о выпавшем диске, а не ждала, пока человек случайно заглянет в состояние пула.
Различие зеркала и пространства с контролем чётности
Зеркало не единственный способ защиты в дисковых пространствах, и важно понимать его место среди альтернатив. Пространство с контролем чётности хранит данные вместе со специальной служебной информацией, позволяющей восстановить потерянное, и при этом тратит на защиту меньше места, чем зеркало. Однако оно заметно медленнее зеркала на запись, потому что при каждом изменении пересчитывает служебные данные. Создание пространства с одинарным контролем чётности выглядит так:
New-VirtualDisk -StoragePoolFriendlyName "ЗеркалоДанных" -FriendlyName "Чётность1" -ResiliencySettingName Parity -UseMaximumSize
Для одинарного контроля чётности нужно минимум три диска, и он переживает отказ одного из них, отдавая под полезные данные больше места, чем зеркало. Выбор между зеркалом и чётностью - это выбор между скоростью и экономией места. Зеркало быстрее и проще, поэтому его берут для активно используемых данных и виртуальных машин. Чётность экономнее по месту, поэтому она подходит для архивов, резервных копий и потокового медиа, где запись идёт большими последовательными кусками и скорость не так важна. Понимание этой развилки помогает не лепить зеркало повсюду, теряя половину ёмкости там, где спокойно подошла бы более экономная чётность с её скромными требованиями к месту.
Восстановление зеркала после замены диска и итоги
Главный момент истины наступает, когда диск всё-таки умирает. Зеркало продолжает работать на уцелевших копиях, но пространство переходит в состояние пониженной отказоустойчивости, и его надо вернуть в норму, заменив сбойный диск. Сначала смотрят состояние дисков, находя сбойный, потом помечают его на изъятие, физически меняют, добавляют новый в пул и запускают восстановление. Запуск восстановления зеркала после добавления нового диска делается командой:
Repair-VirtualDisk -FriendlyName "Зеркало1"
Команда заново раскладывает копии данных по дискам, восстанавливая полную защиту. Во время восстановления данные остаются доступны, просто система в фоне досоздаёт недостающие копии на новом диске. После завершения зеркало снова держит полный комплект копий и готово пережить следующий отказ. Следить за ходом восстановления помогает просмотр текущих задач хранилища, который показывает процент выполнения фоновой операции, чтобы понимать, сколько ещё ждать до полного возврата защиты.
Зеркальное пространство меняет само отношение к надёжности хранения. Вместо страха перед внезапной смертью диска приходит спокойствие: отказ одного накопителя становится рядовым событием, не прерывающим работу. Весь путь укладывается в несколько шагов: подготовить пул из дисков, создать зеркальный виртуальный диск нужной глубины, подготовить том к работе, а при отказе диска заменить его и запустить восстановление. Двустороннее зеркало защищает от гибели одного диска, трёхстороннее от двух сразу, и выбор делают по ценности данных. Важно помнить, что зеркало бережёт от аппаратного отказа, но не отменяет резервную копию, потому что от случайного удаления или порчи файла оно не спасает, послушно дублируя испорченное. Сочетание зеркала и бэкапа даёт настоящую защиту: первое держит удар железа, второй спасает от ошибок и порчи. Освоив настройку зеркала, любой администратор превращает обычные диски в отказоустойчивое хранилище, которое продолжает работать там, где одиночный диск давно бы унёс данные в могилу.