fsck: параметри найбільш ретельної перевірки диска


12

У мене є диск з відомою проблемою (я знаю, тому що дд ггає, коли я намагаюся його клонувати). Але коли я завантажуюся з живого компакт-диска і запускаю 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?

Якого я не розумію, оскільки жоден з розділів, здається, не змонтований (я просто завантажився з живого компакт-диска і запустив команду).

Отже, моє основне питання: Як я можу отримати fsck (або інший інструмент, який може працювати краще), щоб витратити більше, ніж мільйон секунд на аналіз мого проблемного диска?

Відповіді:


14

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

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

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

Щоб змусити ДД читати диск і продовжувати помилки читання, використовуйте dd conv=noerror,sync, що буде продовжуватися на помилках читання та додавати нульові байти до будь-якого блоку, коли є помилка читання.

Після закінчення резервного копіювання слід запустити fsck -fна клон, щоб отримати його та знову запустити.

Ще одна порада: Якщо ви створили резервну копію розділу у файлі, ви зможете його зв'язати з циклічним зворотним зв'язком 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 на клонований розділ, я отримав буквально сотні помилок (незаконні блоки у введеннях, біти компресії, встановлені у файловій системі без підтримки стиснення, погані розширені блоки атрибутів тощо), перш ніж я визнав, що дд Клон був повністю шланг ... Не впевнений, що робити далі ... Я думаю, я спробую просто скопіювати всі файли на чистий розділ ... Все одно дякую.
Фред Гамільтон

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 Тб ...
Mikko Rantalainen

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 за допомогою живого компакт-диска, то як живий компакт-диск знає, що повинен був запустити перевірку? Це компакт-диск, в ньому немає пам'яті, про яку я знаю ...
Фред Гамільтон

Я не думаю, що вам потрібно робити це з живого CD. Просто завантажтесь з живого cd та запустіть fsck на відключеному розділі з включеною опцією -f (force). АБО ви можете перезавантажити свій жорсткий диск із відключенням -rF. Це змусить fsck до монтажу файлової системи.
Річард Хоскінс

Насправді, він буде робити fsck в режимі одного користувача. Я відредагував свою відповідь.
Річард Хоскінс

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