10

У меня есть диск с известной проблемой (я знаю, потому что 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 (или другой инструмент, который мог бы работать лучше) тратить больше миллисекунды на анализ моего проблемного диска?

3 ответа3

13

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

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

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

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

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

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

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

8

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

Для проверки диска более низкого уровня вы можете использовать утилиту 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.
5

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

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

shutdown -rF now 

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