У меня есть 10-летний 320 Гбит жесткий диск, который я использовал в качестве внешнего диска, и он переместился со мной в течение большой части тех 10 лет. Само собой разумеется, это пережило больше, чем несколько падений (включая тех в то время как в операции), и получил некоторые поврежденные секторы. Когда я на самом деле начал получать считанные ошибки, не только УМНЫЕ предупреждения перемещения сектора, я отодвинул все важное от него (использование ddrescue
для некоторых файлов). Уверенный я не могу больше доверять этому диску, но я все еще хочу использовать его, чтобы скопировать однажды и сохранить некоторый movies/FLACs, освободить некоторое пространство на SSD+HDD ноутбука, пока внешний диск все еще работает. Я не забочусь о потере некоторых или всех этих файлов, как я любой имеет резервные копии дома и/или может повторно загрузить легко.
Проблема, если я форматирую этот диск и начинаю копировать файлы там, где-нибудь приблизительно 25%, я получаю отказ при записи, требуя USB-кабеля, отключают (^C недостаточно!), то же происходит с badblocks
и в режиме чтения и в режиме записи. После проигрывания немного с badblocks
'"от" и "до" параметров, я нашел, что 90% + диска в порядке, и существует в основном 3 области сбойного блока. Короткий сценарий и я получили текстовый файл с номерами блока (да, я не забыл -b 4096
для badblocks
) покрытие этих областей и большого дополнительного пространства вокруг для сейфа. Но когда я сделал e2fsck -l badblocks.txt
, это все еще зависает! кажется, что это пытается считать те сбойные блоки так или иначе, не только отметить как плохо и забыть. Там какой-либо другой путь состоит в том, чтобы обойти это? Или возможно другая файловая система (думал о FAT, но я не вижу способа питаться badblocks.txt
кому: fsck.vfat
)? Или 4 отдельных раздела, покрывающие "хорошие" области, являются лучшим решением для этого случая?
Обновление: некоторые кавычки от man
сделать случай более ясным
man e2fsck
:
-i input_file Read a list of already existing known bad blocks. Badblocks will skip testing these blocks since they are known to be bad.
таким образом, badblocks
обещания пропустить блоки перечислили (и это делает, поскольку это не зависает со всеми подозрительными диапазонами в badblocks.txt
!)
man badblocks
:
-l filename Add the block numbers listed in the file specified by filename to the list of bad blocks. The format of this file is the same as the one generated by the badblocks(8) program.
нет никакого обещания, это не попытается получить доступ к этим блокам, все же. Но какого черта это может хотеть получить доступ к ним?
Note that the block numbers are based on the blocksize of the filesystem. Hence, badblocks(8) must be given the blocksize of the filesys‐ tem in order to obtain correct results. As a result, it is much simpler and safer to use the -c option to e2fsck, since it will assure that the correct parameters are passed to the badblocks program.
Я был бы счастлив, но это зависает на первом сбойном блоке. Плюс, -c
является несовместимым с -l
- таким образом я или сканирую диск или вручную отмечаю поврежденные секторы. Но то, почему, если я выбираю последнюю опцию, это все еще хочет получить доступ к этим, предположительно, "плохим" секторам, вне моего понимания...
Надлежащий путь к badblock Ваш диск также:
sudo e2fsck -fck /dev/sdc1
# тест только для чтения
или
sudo e2fsck -fcck /dev/sdc1
# неразрушающий тест чтения-записи (рекомендован)
-k важен, потому что он сохраняет предыдущую таблицу дефектных блоков и добавляет любые новые сбойные блоки к той таблице. Без-k Вы освобождаете всю предшествующую информацию о сбойном блоке.
-fcck параметр...
-f Force checking even if the file system seems clean.
-c This option causes e2fsck to use badblocks(8) program to do a
read-only scan of the device in order to find any bad blocks.
If any bad blocks are found, they are added to the bad block
inode to prevent them from being allocated to a file or direc‐
tory. If this option is specified twice, then the bad block
scan will be done using a non-destructive read-write test.
-k When combined with the -c option, any existing bad blocks in the
bad blocks list are preserved, and any new bad blocks found by
running badblocks(8) will be added to the existing bad blocks
list.