Как снять пометку кластера NTFS как плохого?

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 не поддерживает запасные секторы. Если бы он это сделал, он мог бы прозрачно переназначить запасной сектор для меня, и у меня не было бы 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?

Ян Бойд
источник
Вы хотите решение для Windows или с Linux будет нормально?
Томас Веллер
2
@ThomasW. я не против самозагрузочного инструмента; используя любую ОС, которая ему нравится. Конечно, я бы предпочел инструмент с графическим интерфейсом. Я устал от использования командной строки в 1990 году. Я начал изучать использование CreateFileдля непосредственного открытия тома; но понял, что мне придется начинать с нуля, анализируя все недокументированные структуры данных. я открыл том непосредственно для редактирования в моем любимом шестнадцатеричном редакторе, но у меня была та же самая нижняя сторона, когда пришлось вручную анализировать шестнадцатеричные структуры.
Ян Бойд
@ThomasW. зачем даже спрашивать, не можете ли вы ответить за то, как это исправить в linux? если все, что вы хотите сказать, это то, что, если исправление с компакт-диска Linux хорошо, то вы не знаете, как, но он должен добавить тег Linux.
Бароп
Если вы используете MBR для раздела диска, sgdisk -z / dev / sdb уничтожит GPT, а clonezilla скопирует его. backup-utility.com/articles/…
кибернард

Ответы:

7

Я больше отвечу на заглавный вопрос. 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для записи)

ivan_pozdeev
источник
Это должно быть выбрано как лучший ответ.
Хашим
1

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

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

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

CasaDeRobison
источник
Это на самом деле сработало. После шага 2 вы просто закрываете cmdокно. Затем бегите, chkdsk d: /fкоторый скажет CHKDSK discovered free space marked as allocated in the volume bitmap.и следующий Windows has made corrections to the file system..
Давор Йосипович
0

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

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

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

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

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

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

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

cybernard
источник
Как SSD, нет резервных секторов для переназначения. Вот почему SMART диска продолжает отмечать Pending Sector Countноль, а Reallocated Sector Countноль.
Ян Бойд
У Кэти Коу отличный блог, который начинает вникать в суть NTFS. Но мои глаза затуманились, когда мне пришлось начать вычислять смещения, номера логических кластеров, номера виртуальных кластеров и тот факт, что $ BadClus - это резервный файл, который на самом деле имеет размер всего тома. я почти наверняка разрушу свой (работающий) драйв.
Ян Бойд
2
На самом деле SSD имеет тонны запасных секторов. На самом деле, ssd 120 ГБ, вероятно, имеет до 8 ГБ резервных секторов. Почему ваш диск не переназначил его автоматически, мне неизвестно. Используйте gparted и уменьшите раздел.
Кибернард
Вполне возможно, что это старый, уже снятый с производства, теперь не поддерживаемый 64-Гбайт накопитель Kingston. Или, может быть, это просто ошибка в прошивке накопителя, когда они забыли реализовать переназначение секторов.
Ян Бойд
Кроме того, клонирование дисков не выполняется, когда они сталкиваются с поврежденным сектором (по крайней мере, DriveImageXML сделал).
Ян Бойд
0

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

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

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

Жоао Пауло
источник
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 должен завершить работу.

visnotjl
источник
0

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

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

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

Erik
источник