Дисковое пространство обычно работает незаметно, но однажды том пропадает из проводника, виртуальный диск показывает тревожное состояние, или пул вдруг отказывается принимать новые данные. Растерянность в такой момент понятна: за привычной буквой диска скрывается многослойная конструкция из физических накопителей, пула, виртуальных дисков и томов, и сбой может прятаться на любом слое. Хаотичные попытки что-то починить наугад только усугубляют положение и рискуют добить данные. Грамотная диагностика идёт по слоям сверху вниз, читая состояния каждого уровня, и точно указывает, где именно сломалось. Встроенные средства Windows дают полный набор для такого разбора без единой сторонней программы.
Диагностика дискового пространства строится на чтении состояний. Каждый объект - физический диск, виртуальный диск, том - имеет состояние здоровья и рабочее состояние, и по их сочетанию читается диагноз. Здоровье бывает нормальным, с предупреждением, неработоспособным или неизвестным. Рабочее состояние уточняет картину: работает в норме, потерял отказоустойчивость, отсоединён, неполон. Задача диагностики - снять эти состояния по всем слоям, найти первый сломанный уровень и устранить причину именно там, не дёргая исправные части.
Чтение состояния всех слоёв хранилища сверху вниз
Диагностику начинают с общего снимка всех уровней, чтобы сразу увидеть, где проблема. Сначала смотрят пул, потом виртуальные диски, потом физические. Просмотр состояния пула делается командой оболочки PowerShell:
Get-StoragePool | Select FriendlyName, HealthStatus, OperationalStatus, IsReadOnly
Команда показывает здоровье пула, его рабочее состояние и важный признак режима только для чтения. Пул в режиме только для чтения не принимает запись, что само по себе объясняет часть проблем. Дальше смотрят виртуальные диски, на которых лежат данные:
Get-VirtualDisk | Select FriendlyName, HealthStatus, OperationalStatus
Команда выводит состояние каждого виртуального диска. Завершают обзор физическими дисками, фундаментом всей конструкции:
Get-PhysicalDisk | Select FriendlyName, HealthStatus, OperationalStatus, Usage
Эта команда показывает здоровье каждого накопителя. Снятые подряд, три состояния дают цельную картину: видно, на каком слое появилось первое отклонение. Проблема почти всегда поднимается снизу вверх - сбойный физический диск роняет виртуальный, тот делает недоступным том. Поэтому найдя нездоровый физический диск, обычно находят и корень всей беды. Бывает и исключение: иногда проблема рождается не снизу, а на уровне самого виртуального диска или файловой системы при полностью здоровых накопителях. Например, том может стать недоступен из-за повреждения логической структуры, хотя все физические диски в норме. Поэтому послойный обзор важен целиком: если физические диски здоровы, а том всё равно недоступен, причину ищут выше, на уровне виртуального диска или файловой системы, и снятие состояний всех слоёв сразу подсказывает, какой именно уровень дал сбой, избавляя от ложного обвинения исправного железа.
Разбор типичных проблемных состояний виртуального диска
Виртуальный диск чаще всего и есть место, где проблема становится заметна, поэтому его состояния разбирают подробно. Состояние пониженной отказоустойчивости означает, что один или несколько физических дисков выпали, но данные ещё целы на оставшихся копиях. Это сигнал срочно заменить сбойный диск, пока защита держит. Состояние отсоединённого виртуального диска означает, что он существует, но не подключён к системе, и его не видно как обычный диск. Подключение отсоединённого виртуального диска делается командой:
Get-VirtualDisk -FriendlyName "Том1" | Connect-VirtualDisk
Команда возвращает отсоединённый виртуальный диск в работу, после чего он снова появляется в системе. Самое тяжёлое состояние - неполный виртуальный диск, когда отказало больше дисков, чем способна пережить защита, и часть данных утрачена. В этом случае спасают что можно из уцелевшего, а сам том пересоздают после замены дисков. Различать эти состояния критически важно: пониженная отказоустойчивость означает, что данные целы и нужна лишь замена диска, отсоединённое состояние лечится простым подключением, а неполное состояние - это уже частичная потеря, требующая иных действий.
Запуск восстановления и проверки целостности
Когда найден сбойный физический диск и виртуальный том в пониженной отказоустойчивости, запускают восстановление, чтобы пересоздать недостающие копии на исправных дисках. Запуск восстановления делается командой:
Repair-VirtualDisk -FriendlyName "Том1"
Команда заново раскладывает копии данных по здоровым дискам, возвращая полную защиту. Процесс идёт в фоне и на больших объёмах длится часами, поэтому за ним следят через просмотр текущих задач хранилища. Помимо восстановления избыточности, иногда нужна проверка целостности самой файловой системы на томе, если данные читаются с ошибками. Проверка и исправление файловой системы делается стандартной командой с указанием буквы:
Repair-Volume -DriveLetter D -Scan
Команда сканирует том на ошибки файловой системы, а с другим ключом и исправляет найденное. Важно различать два уровня восстановления: восстановление виртуального диска чинит избыточность данных по дискам, а проверка тома чинит логическую структуру файловой системы поверх него. Это разные проблемы на разных слоях, и путать их не стоит. Сбойный физический диск лечат восстановлением виртуального диска, а испорченную файловую систему - проверкой тома.
Диагностика через журнал событий хранилища
Мгновенные состояния показывают, что не так сейчас, а журнал событий раскрывает, как до этого дошло. Система ведёт специальный журнал дисковых пространств, где фиксирует каждое значимое событие. Просмотр последних событий хранилища делается командой:
Get-WinEvent -LogName "Microsoft-Windows-StorageSpaces-Driver/Operational" -MaxEvents 40
Команда выводит последние события драйвера дисковых пространств с их временем и описанием. По ним видно хронологию: когда выпал диск, когда запустилось восстановление, когда возникла ошибка. Это превращает статичный снимок состояния в развёрнутую историю проблемы. Особенно ценно это при разборе повторяющихся сбоев: если один диск регулярно выпадает и возвращается, журнал покажет частоту, выдавая умирающий накопитель, который пока держится, но скоро откажет окончательно. Сопоставление событий журнала с текущими состояниями даёт полную картину причины и следствия, и часто именно журнал указывает на корень, неочевидный по одному лишь снимку состояния.
Поиск связи между сбойным диском и пострадавшими томами
Когда отказывает физический диск, важно быстро понять, какие именно виртуальные тома на нём лежали и потому пострадали. В пуле из многих дисков и нескольких томов эта связь неочевидна, а знать её необходимо, чтобы оценить масштаб беды. Команда показывает, на каких физических дисках размещён выбранный виртуальный диск:
Get-VirtualDisk -FriendlyName "Том1" | Get-PhysicalDisk | Select FriendlyName, HealthStatus
Команда выводит все физические диски, несущие указанный виртуальный том, с их здоровьем. Если среди них есть сбойный, значит, этот том затронут отказом. Обратный запрос тоже полезен - узнать, какие тома пострадают от гибели конкретного диска:
Get-PhysicalDisk -FriendlyName "PhysicalDisk3" | Get-VirtualDisk | Select FriendlyName, HealthStatus, OperationalStatus
Команда показывает все виртуальные диски, опирающиеся на указанный физический накопитель. Это сразу очерчивает зону поражения: видно, один том пострадал или несколько, и насколько серьёзно. Понимание связи между слоями превращает диагностику из гадания в точную работу. Вместо паники по поводу всего пула администратор видит конкретно: вот этот диск сбоит, вот эти два тома на нём лежат, остальные в порядке. Такая ясность задаёт приоритеты восстановления и успокаивает: часто оказывается, что отказ затронул лишь часть хранилища, а большинство данных в полной безопасности на нетронутых дисках и томах.
Проверка достаточности ёмкости для восстановления
Частая причина, по которой восстановление не запускается или зависает, - нехватка свободного места в пуле для пересоздания недостающих копий. Чтобы восстановить избыточность после отказа диска, системе нужно куда-то записать новые копии данных, и если свободной ёмкости мало, операция стопорится. Проверка свободного места в пуле делается командой:
Get-StoragePool -FriendlyName "ПулДанных" | Select FriendlyName, Size, AllocatedSize, @{N="СвободноГБ";E={($_.Size - $_.AllocatedSize)/1GB}}
Команда выводит общий размер пула, занятую часть и вычисленный свободный остаток в гигабайтах. Если свободного места меньше, чем нужно для размещения копий с выбывшего диска, восстановление не сможет завершиться. Решение - добавить в пул новый диск, дав системе пространство для восстановления избыточности. Это объясняет на первый взгляд странную ситуацию, когда после отказа диска пул упорно не восстанавливается, хотя команда запущена: ему просто некуда писать копии. Заблаговременный запас свободной ёмкости в пуле, не занятый под завязку томами, как раз и служит подушкой для таких восстановлений. Поэтому пул не набивают данными до предела, оставляя резерв места на случай отказа, иначе первая же гибель диска парализует восстановление из-за банальной нехватки пространства под новые копии.
Восстановление пула из режима только для чтения и итоги
Отдельная частая проблема - пул, переключившийся в режим только для чтения, обычно после нехватки места или серии сбоев. В этом режиме данные читаются, но запись невозможна, что парализует работу. Возврат пула в режим чтения и записи делается командой установки свойства:
Set-StoragePool -FriendlyName "ПулДанных" -IsReadOnly $false
Команда снимает режим только для чтения, возвращая возможность записи. Но прежде чем снимать режим, выясняют причину, по которой пул в него ушёл: если дело в нехватке места, сначала добавляют диск, иначе пул снова заблокируется. Снятие режима без устранения причины - это лечение симптома, а не болезни.
Стоит знать и о специальной команде проверки конфигурации, которая разом обследует пул и сообщает о найденных неполадках. Она избавляет от ручного обхода всех слоёв, автоматически выявляя нездоровые ресурсы и предлагая, что с ними делать. Запуск такой проверки удобен как быстрый первый шаг диагностики: вместо того чтобы вручную снимать состояния пула, виртуальных и физических дисков по очереди, администратор получает сводный отчёт о проблемах одной командой. Это особенно ценно в крупных пулах с десятками дисков, где ручной обзор каждого слоя занял бы много времени, а сводная проверка сразу указывает на больные места, к которым и стоит присмотреться подробнее.
Диагностика дискового пространства подчиняется ясной логике послойного разбора. Сначала снимают состояния всех уровней сверху вниз, находя первый сломанный слой. Потом разбирают конкретное проблемное состояние виртуального диска, отличая пониженную отказоустойчивость от отсоединения и от неполноты. Затем запускают нужное восстановление, не путая починку избыточности с проверкой файловой системы. Журнал событий раскрывает хронологию и корень проблемы. Особые случаи вроде режима только для чтения лечат после устранения их причины. Этот методичный подход превращает пугающую неполадку многослойного хранилища в решаемую по шагам задачу. Главное правило диагностики - не чинить наугад, а сперва прочитать состояния и понять, на каком слое и почему возникла проблема. Тогда вмешательство будет точным и не повредит данные, а хаотичные попытки спасти всё подряд, наоборот, чаще всего и приводят к их потере. Спокойное послойное чтение состояний - вот что отличает грамотного администратора от паникёра, добивающего хранилище беспорядочными действиями в попытке быстро всё починить.