14

Как мне пометить кластеры как плохие в NTFS?

Фон

Я ошибочно побежал

>chkdsk /R

на моем SSD, где

/R: находит плохие сектора и восстанавливает читаемую информацию (подразумевается /F)
/F: исправляет ошибки на диске

И теперь у меня есть кластер, помеченный как плохой на моем диске. Мне нужно отменить пометку этого кластера как плохую.

Примечание: у chkdsk есть возможность переоценить кластер и вернуть его для использования:

/B: только NTFS: переоценка поврежденных кластеров на томе (подразумевается /R)

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

Как мне пометить кластер NTFS как плохой?

Почему вы это делаете?

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

К сожалению, известная ошибка в зеркалировании Windows NTFS не позволяет завершить зеркалирование, как описано в KB325615:

Не удается создать зеркало программного обеспечения, если диск содержит поврежденные блоки

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

Очевидный обходной путь заключался в том, чтобы уменьшить объем ОС, чтобы плохой сектор вышел за пределы конца тома. В Windows 7, когда вы пытаетесь уменьшить объем, он автоматически удаляет файлы.

Это хорошая вещь. В прежние времена, если вы хотели уменьшить объем, вы должны были использовать инструмент дефрагментации, который подтолкнул бы все файлы к передней части диска; оставляя свободное пространство в конце.

К сожалению, теперь в пути есть неподвижный файл: $BadClus . Операция Shrink defrag записывает неподвижный файл в журнал событий:

Анализ объема сжатия был начат на томе ОС (C:). Эта запись журнала событий содержит подробную информацию о последнем неподвижном файле, который может ограничивать максимальное количество восстанавливаемых байтов.

Диагностические детали:

  • Последний неподвижный файл выглядит так: \$ BadClus: $ Bad: $ DATA
  • Последний кластер файла: 0xdc1ded
  • Целевой потенциал сокращения (адрес LCN): 0xa91bd9
  • Флаги файлов NTFS: -S - D
  • Фаза усадки: <анализ>

Так:

  • Я не могу отразить громкость, пока не будут удалены плохие сектора
  • уменьшение громкости удалит плохие сектора
  • я не могу уменьшить громкость до тех пор, пока редкий файл $BadClus будет перемещен
  • я не могу переместить $BadClus пока он физически занимает плохие кластеры
  • $BadClus будет физически занимать плохие кластеры, в то время как NTFS считает, что кластер плохой

Как мне пометить кластер как плохой?

Для людей, забивающих диски тоже

Решение моей проблемы также подойдет для наиболее распространенного случая:

Кто-то добавляет диск с плохими секторами на новый диск, а затем на хорошем диске эти кластеры помечаются как плохие, даже если они хорошие. Так получилось, что у них есть обходной путь:

>chkdsk /B

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

Бонус Болтовня

Конечно, SSD Kingson не поддерживает запасные секторы. Если бы он это сделал, он мог бы прозрачно переназначить запасной сектор для меня, и у меня не было бы NTFS, пытающегося переосмыслить мысли.

SpinRite

я попробовал SpinRite на дисководе SS. Он сталкивается с дефектным сектором, но не может получить какие-либо значения с диска:

══════════════════╤═══════════════════════════╤═════════════════════════════════
cylinder : 7,183  │     data samples : 1,999  │  first uncertain bit : · · · · ·
  sector :    17  │   unique samples :     0  │   last uncertain bit : · · · · ·
    head :   187  │  discarded sples :     0  │   uncertain bit span : · · · · ·

Число выборок данных насчитывает до 2000, затем возвращается к нулю и продолжает работать.

После примерно 20 циклов (то есть 40000 выборок данных) я сдался.

клонирование

Снова; Давайте не будем путать вопрос с примером. Вопрос в том, как отменить пометку кластеров как плохих в NTFS. После того, как я сдамся и выкину SSD, вопрос все равно останется. Не путай мою проблему с вопросом. Это не значит, что я мог бы попытаться решить мою проблему:

DriveImageXML достигает поврежденного сектора и прерывает работу.

GParted не загружается. Появляется графический загрузочный экран, затем окно консоли прокручивает текст, а затем черный экран - ничего

Clonezilla отказывается клонировать мой SSD:

Этот диск содержит несовпадающие разделы GPT и MGR: /dev /sdb
Это запутает Clonezill и может сделать сохраненный образ бесполезным или не сможет клонировать диск.

Пожалуйста, исправьте проблему, затем перезапустите Clonezilla снова.
Программа прекращена.

Как мне пометить кластер как плохой в NTFS?

6 ответов6

6

Я больше отвечу на заглавный вопрос. 1

Во-первых, обратите внимание, что, если сектор действительно плохой, его пометка не сделает его читабельным. Таким образом, ваше программное обеспечение для клонирования, скорее всего, захлебнется чтением.

В NTFS кластер помечается как плохой, назначая его специальному потоку, $BadClus:$Bad, разреженному файлу.

Что вам нужно, это

  • отредактируйте свой список выполнения, чтобы удалить соответствующие выделенные блоки
  • пометить соответствующий кластер как свободный в $Bitmap.

  • Чтобы снять все плохие блоки, есть ntfsfix -b -d (-b = очистить список плохих блоков, -d = очистить / не устанавливать флаг "грязных") (другой метод с ntfstruncate делает то же самое 2).

    • Это может привести к незначительным несоответствиям в метаданных (в моем случае некоторые индексы, по-видимому, стали несортированными), я не уверен, почему, поэтому либо выполните chkdsk -f вручную, либо опустите -d чтобы вызвать его при запуске Windows, если / в случае получить ошибки FS.
  • Очистить конкретный блок гораздо сложнее, так как я не нашел ни одного существующего программного обеспечения, способного сделать это "из коробки" 3. Разрешение плохих секторов NTFS: метафайл $ BadClus - код Кэти описывает способ - в основном, он редактирует список запуска и растровое изображение вручную.


1 Только потому, что обработка плохих секторов + NTFS + клонирование - слишком широкая тема.Я с удовольствием отвечу на вопросы, непосредственно связанные с рассматриваемым вопросом.
2 проверил исходный код ntfsfix v2015.3.14 .
3 для настойчивых, они не могут этого сделать: ntfscat(не может прочитать нечитаемые сектора), ntfscp(не может записать в смещение), ntfstruncate , ntfsfallocate , dd(не может открыть $BadClus:$Bad для записи )

1

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

Моим решением было запустить «chkdsk d: /b» (как было предложено ранее). Параметр /b указывает (только для NTFS) на повторное сканирование ранее отмеченных сбойных кластеров. По крайней мере, в моем случае (и я подозреваю, что все версии, которые поддерживают /b), он очищает список плохих кластеров непосредственно перед началом сканирования на чтение. Когда вы увидите сообщение "Удаление X кластеров из файла плохих кластеров", вы сможете убить процесс chkdsk (так как он только читает данные).

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

0

Поскольку вы пытаетесь зеркалировать свой диск (и, похоже, вы используете Windows 7), существует другой подход:

Используйте встроенный инструмент для создания резервной копии, которая будет восстановлена на хорошем диске. Зайдите в Панель управления, Система и безопасность, Резервное копирование. Там создайте образ системы, а также диск восстановления системы.

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

0

Похоже, ваша цель - уменьшить размер раздела, и что Windows не будет уменьшать его из-за файла $ BadClus, который существует из-за плохих кластеров.

У меня есть альтернативное решение для вас, которое должно уменьшить объем диска без необходимости иметь дело непосредственно с файлом $ BadClus. Используйте Partition Wizard, чтобы сжать раздел. Мастер разделов прост в использовании, бесплатен для некоммерческого использования, может запускаться изнутри Windows с графическим интерфейсом пользователя или с загрузочного CD или USB, который работает под небольшим Linux, а затем предоставляет тот же графический интерфейс. Эта программа также может восстанавливать стертые разделы и конвертировать между таблицами разделов MBR и GPT.

У меня возникли проблемы с тем, что Windows не сжимает раздел после определенной точки, затем я попробую Мастер разделов на том же разделе, который делает это без проблем. Я предполагаю, что Мастер Разделов готов игнорировать файл $ BadClus. Я использую эту программу более 8 лет и, наконец, купил Pro версию, потому что они заработали. Я нашел эту программу в качестве замены для PQMagic, которую я купил в 1996 году, которая была великолепной программой для создания разделов DOS для небольших дисков.

0

Первый лучший способ - клонировать диск. Затем используйте chkdsk /B на новом рабочем диске.

Теперь, если разобрать реальный плохой сектор, это сложно. Вы можете использовать:

  • SpinRite или
  • mhdd (включить отображение )

Любой продукт должен переназначить плохой сектор, тогда CHKDSK /B должен снять его.

Скачайте gparted или partedmagic ISO. Загрузитесь с него и уменьшите раздел.

Это будет работать, потому что Windows НЕ работает, поэтому это программное обеспечение сокращает раздел, несмотря ни на что. Тогда chkdsk /B будет обрабатывать все остальное.

Если все это не удастся, то вас ждет ужасная дорога боли. Вам нужно получить редактор секторов и вручную отредактировать файловую систему. К сожалению, это выходит за рамки моих знаний о NTFS. Для FAT или FAT32 это супер просто.

0

пакет gddrescue (gddrescue - инструмент восстановления данных GNU) должен выполнить эту работу за вас.

Возьмите автономный дистрибутив на основе Debian (CD или USB-флешку), установите gddrescue с помощью «sudo apt-get install gddrescue», затем клонируйте SSd, открыв окно терминала и выполнив:

ddrescue -f /dev /sda /dev /sdb ./ddrescue.log

(где /dev /sda - источник, а /dev /sdb - целевой SSD)

ddrescue попытается восстановить поврежденный блок и, если не сможет, пропустить его.

По окончании chkdsk /f /b должен завершить работу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .