Назад | Перейти на главную страницу

Создайте зеркальный программный рейд с плохими блоками hdd. Как проверить целостность данных?

В журнале системных событий есть ошибка, подобная этой: «Устройство \ Device \ Harddisk1 \ DR1 имеет плохой блок».

По этой причине я создал Raid 1 на этом и другом диске. Я использую программные тома RAID для Windows Server 2008 R2.

Том в диспетчере дисков помечен как «Неудачная избыточность» и «Под угрозой». Я мог бы дать команду «Активировать диск», и он начнет повторную синхронизацию, но через некоторое время остановится и вернется в предыдущее состояние. Он останавливает повторную синхронизацию на сбойном блоке на старом диске и создает такую ​​же ошибку в журнале системных событий.

Состояние старого диска - «Ошибки», состояние нового диска - «В сети».

Как я могу проверить наличие точной копии старого диска на новом? Это серверная машина, поэтому я бы предпочел, чтобы она работала во время этой проверки.

Я просто хочу избавиться от этого неисправного диска и оставить его как есть на новом. Меня не волнуют битые сектора, так как у меня есть резервные копии данных. Просто не хочу все это переустанавливать.

Прежде всего:

  1. Создание тома RAID 1 постфактум - бесполезный способ справиться с ошибкой диска.

  2. Поскольку создание зеркала RAID 1 не удается в точке, где достигается сбойный блок, вы можете с уверенностью предположить, что вы это делаете. не иметь полную копию оригинального диска с плохим блоком. Нет необходимости проверять это предположение.

  3. После того, как вы отключили Диск 1, запустив chkdsk /r на дисках C: и G: должен пометьте поврежденные сектора, переместите любые читаемые данные в другие области диска и предотвратите будущие ошибки чтения, относящиеся к тем же поврежденным секторам. Это не предотвратит дальнейшее повреждение (потенциально неисправного) диска с поврежденными секторами.

Если chkdsk /r не решает проблему, вот один из способов переместить все восстанавливаемые данные на новый диск, избегая сбоя из-за плохих блоков:

  1. Если вы еще этого не сделали, убедитесь, что у вас есть текущая и полная резервная копия.
  2. В Windows Disk Management отключите и переформатируйте Диск 1.
  3. Правильно выключите компьютер.
  4. Загрузитесь в Linux с Live CD или USB-накопителя, например PartedMagic. Подойдет даже установочный диск Ubuntu.
  5. Смонтируйте оба диска. Выясните, какой физический том является новым диском, а какой - старым. (Глядя на вывод mount команда, запускаемая без каких-либо параметров, может помочь.)
  6. Скопируйте со старого жесткого диска на новый жесткий диск с помощью dd команда. Обязательно укажите noerror и sync параметры, чтобы игнорировать плохие блоки. Их содержимое (которое уже потеряно) будет заменено нулями на новом диске, поэтому любые файлы, охватывающие плохие блоки, будут повреждены. Однако эти файлы уже не читаются, поэтому никакого дополнительного вреда не будет:

    dd if=/dev/<Disk0> of=/dev/<Disk1> bs=512 conv=noerror,sync

Подставьте фактические идентификаторы устройства (например, sd0, sd1и т. д.) вместо <Disk0> и <Disk1> выше. Не копируйте случайно с нового диска на старый, так как это будет иметь катастрофические последствия. Кроме того, имейте в виду, что эта операция будет выполняться медленно (т.е. намного медленнее, чем скорость последовательного чтения / записи дисков) из-за небольшого размера блока. Однако я не думаю, что использовать noerror и sync вместе (чтобы игнорировать плохие сектора и заполните их нулями на новом диске без потери восстанавливаемых данных), если dd имеет размер блока, равный фактическому размеру сектора диска.

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

Все современные диски SATA имеют внутренний механизм для автоматического переназначения сбойных блоков в другое место. Диски могут выполнять это переназначение автоматически при определенных условиях, например при сбое записи в определенное место. Однако диски не могут переназначаться при последующем сбое чтения, так как содержимое диска не может быть прочитано для переназначения данных. Таким образом, оставление ошибки является наименее деструктивным поведением жесткого диска.

С сегодняшними массивными дисками с несколькими ТБ это происходит даже с совершенно исправным диском. То, что несколько блоков не читаются, автоматически не означает, что диск неисправен или его необходимо заменить.

Команды chkdsk для обнаружения и исправления сбойных блоков бессмысленны при настройке зеркала в Windows и большинстве других операционных систем. Chkdsk не исправит эти проблемы. Причина в том, что chkdsk работает на уровне файловой системы и хранит плохие блоки в структуре файловой системы. RAID работает на уровне диска ниже файловой системы и, таким образом, полностью игнорирует как наличие NTFS, так и список плохих блоков NTFS.

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

К сожалению, я не знаю о существовании утилиты, которая будет читать и перезаписывать плохие блоки, если они не могут быть прочитаны после того, как было выполнено разумное количество попыток чтения. Раньше мне приходилось использовать dd, чтобы делать это вручную, сканируя нечитаемые места и записывая поверх них.

Более безопасный способ - сделать копию диска с помощью такого инструмента, как ddrescue (загрузка с iso-образом g4l (Ghost4Linux), доступным с sourceforge) dd rescuse начинается с копирования как можно большего количества данных, а затем, наконец, повторяет эти блоки с ошибками чтения пока не будут исчерпаны все попытки. Если вы подозреваете, что диск может выйти из строя, это гораздо более безопасный подход.

Обновление: это не правильный ответ согласно Microsoft.

Вы можете запустить проверку файловой системы на наличие плохих блоков, которая сообщит вам, есть ли на дисках какие-либо нечитаемые данные. Щелкните правой кнопкой мыши на каждом диске (C: и G :), выберите Инструменты, Проверка ошибок. И убедитесь, что вы выбрали «Сканировать и попытаться восстановить поврежденные сектора».

Если на диске 0 есть нечитаемые данные, вы узнаете об этом, так как Windows также пометит диск 0 как плохой.

Для пользователей командной строки:

chkdsk /R G:
chkdsk /R C:

Не уверен, что делать с загрузочным разделом 100 МБ, но держу пари, что вы тоже можете его проверить (там указано, что это NTFS).