fsck: параметры для наиболее тщательной проверки диска


12

У меня есть диск с известной проблемой (я знаю, потому что dd gags, когда я пытаюсь его клонировать). Но когда я загружаюсь с живого CD и запускаю fsck на размонтированном разделе, я получаю это:

ubuntu@ubuntu:~$ sudo fsck /dev/sdf1
fsck 1.41.4 (27-Jan-2009)
e2fsck 1.41.4 (27-Jan-2009)
/dev/sdf1: clean, 227091/9625600 files, 12789815/38497756 blocks

спустя миллисекунду. Трудно поверить, что он проверил весь жесткий диск за мс.

Я также не уверен, должен ли я fsck'ing sdf1 или весь физический диск sdf. Когда я пробую весь диск:

ubuntu@ubuntu:~$ sudo fsck /dev/sdf
fsck 1.41.4 (27-Jan-2009)
e2fsck 1.41.4 (27-Jan-2009)
fsck.ext2: Device or resource busy while trying to open /dev/sdf
Filesystem mounted or opened exclusively by another program?

Что я не понимаю, потому что ни один из разделов, кажется, не смонтирован (я просто загрузился с live CD и запустил команду).

Итак, мой основной вопрос: как я могу заставить fsck (или другой инструмент, который мог бы работать лучше) тратить больше миллисекунды на анализ моего проблемного диска?

Ответы:


14

Прежде всего, вы правы относительно запуска fsck на разделе - fsck работает только с файловыми системами, а не с целыми дисками. Вы можете получить список всех разделов на диске с помощью fdisk -l /dev/sdd.

Тип вашей файловой системы, вероятно, ext3 (по умолчанию в большинстве дистрибутивов Linux), что означает, что он обычно передает fsck, пока его журнал чист. fsck -fбудет, как упоминалось выше, провести полную проверку.

Однако, если у вас есть ошибки чтения на диске, никакое количество fsck не поможет dd - поскольку dd действительно не заботится о содержимом диска.

Чтобы заставить dd читать диск и продолжить при ошибках чтения, используйте dd conv=noerror,sync, который будет продолжать при ошибках чтения и добавлять нулевые байты к любому блоку при возникновении ошибки чтения.

После того, как вы закончили резервное копирование, вы должны запустить fsck -fклон, чтобы запустить его снова и снова.

Другой совет: если вы сделаете резервную копию раздела в файл, вы можете подключить его с помощью loopback mount -o loop filename.ext3 /mountpoint. Также, скажем, вы клонируете раздел 200G на диск 500G, затем вы можете запустить resize2fs /dev/sdx1(где sdx - ваш новый диск, разделенный одним разделом 500G), и файловая система будет изменена до 500G.

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


Я попытался «dd conv = noerror, sync», но полученный клонированный диск не загружался. Что расстраивает, потому что загрузочный диск работает нормально, fscks нормально, но я не могу клонировать его на другой диск, потому что на диске есть 1 плохой блок (где, по-видимому, нет данных). Я, кажется, застрял ...
Фред Гамильтон

Не забывайте, что могут быть другие причины, по которым диск не загружался (другая геометрия диска и проблемы MBR / загрузчика). Если вы можете сначала подтвердить, что файловая система на новом диске в порядке, то вы можете загрузить систему, используя режим восстановления с установочного компакт-диска, обновить загрузчик GRUB и т. Д. Т.е. сначала запустите fsck -f / dev / sdx1, затем попробуйте смонтировать файловую систему с помощью mount / dev / sdx1 / mnt - замените x на соответствующую букву диска.
Кристиан

Отличное предложение, но когда я запустил fsck -f на клонированном разделе, я получил буквально сотни ошибок (недопустимые блоки в inode, биты сжатия, установленные в файловой системе без поддержки сжатия, плохие блоки расширенных атрибутов и т. Д.), Прежде чем я признал, что dd клон был полностью скрыт ... Не уверен, что делать дальше ... Полагаю, я попытаюсь просто скопировать все файлы в чистый раздел ... В любом случае, спасибо.
Фред Гамильтон

4
Лучше использовать ddrescue (или dd_rescue + dd_rhelp), чем dd; умнее обрабатывать ошибки, повторять секторы с ошибками. gnu.org/software/ddrescue/ddrescue.html kalysto.org/utilities/dd_rhelp/index.en.html garloff.de/kurt/linux/ddrescue
Freiheit

1
Самая тщательная проверка диска (если возможно, все исправления автоматизированы) для корневого раздела ext2, ext3 или ext4 выполняется следующим образом: (1) загрузка с загрузочного носителя (корневой раздел должен быть размонтирован), (2) запуск e2fsck -f -cc -D -p. Это делает принудительную проверку с неразрушающей проверкой чтения-записи для носителя и устраняет все найденные проблемы, которые можно безопасно устранить. Для жесткого диска емкостью 2
ТБ

10

Это может не относиться к вашему делу, но я все равно упомяну об этом:

Для проверки диска более низкого уровня вы можете использовать badblocksутилиту. Он проходит через устройство и сообщает о любых плохих блоках (конечно, он ничего не может починить). Это полезно, по крайней мере, для проверки физического повреждения диска.

Кроме того, e2fsckможно использовать, badblocksчтобы избежать плохих блоков, используемых файловой системой. Из e2fsckруководства:

  -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 directory.  If this option is
         specified twice, then the bad block scan will be done using  a  non-
         destructive read-write test.

Также заметка fsck_hfs -sбудет сканировать на наличие плохих блоков.
awiebe

5

Вы хотите, чтобы опция -f была fsck (принудительная проверка, даже если файловая система кажется чистой.)

Вы должны запустить fsck в однопользовательском режиме. Один простой способ сделать это без живой загрузки cdrom - перезагрузить с опцией -F.

shutdown -rF now 

Спасибо, но один вопрос: если я перезагружаюсь с опцией -F, используя live CD, как live CD узнает, что он должен был выполнить проверку? Это CD, у меня нет памяти, о которой я знаю ...
Фред Хэмилтон

Я не думаю, что вам нужно делать это с живого компакт-диска. Просто загрузитесь с live cd и запустите fsck на размонтированном разделе с включенной опцией -f (force). ИЛИ, вы можете перезагрузиться с жесткого диска с помощью shutdown -rF. Это заставит fsck перед монтированием файловой системы.
Ричард Хоскинс

На самом деле, это сделает fsck в однопользовательском режиме. Я отредактировал свой ответ.
Ричард Хоскинс

1
-FФлаг shutdownобычно не официально документированы (см man shutdownи shutdown --helpи обратите внимание , что это не есть) , так что вы не можете доверять ему работать. Иногда это неоперация. Официально единственный метод сканирования корневого раздела - загрузка с альтернативного носителя.
Микко Ранталайнен
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.