Я использую сценарий для автоматического разделения и форматирования CF-карт (подключенных к USB-устройству записи на карты). После основного процесса я снова проверяю карту с помощью fsck. Чтобы проверить плохие блоки, я также попробовал использовать переключатель '-c', но всегда получаю возвращаемое значение! = 0 и сообщение «ФАЙЛОВАЯ СИСТЕМА БЫЛА МОДИФИЦИРОВАНА» (см. Ниже). Тот же результат я получаю, проверяя один и тот же диск несколько раз ...
Кто-нибудь знает, почему а) файловая система вообще изменяется и б) почему это происходит каждый раз, когда я проверяю, а не только в случае ошибки (например, плохих блоков)?
Вот результат:
linux-box# fsck.ext3 -c /dev/sdx1
e2fsck 1.40.2 (12-Jul-2007)
Checking for bad blocks (read-only test): done
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Volume (/dev/sdx1): ***** FILE SYSTEM WAS MODIFIED *****
Volume (/dev/sdx1): 5132/245760 files (1.2% non-contiguous), 178910/1959896 blocks
Процитируйте страницу руководства:
-c
Эта опция заставляет e2fsck запустить программу badblocks (8), чтобы найти любые блоки, которые являются плохими в файловой системе, а затем пометить их как плохие, добавив их в индекс поврежденных блоков. Если этот параметр указан дважды, сканирование поврежденных блоков будет выполняться с использованием неразрушающего теста чтения-записи.
Следовательно -c
опция записывает в файловую систему, которая fsck
интерпретируется как «исправление ошибок», поэтому код возврата 1
(«Ошибки файловой системы исправлены»)
... так, вы спросите, почему он возвращается 1
когда вы указываете -n
, который должен открывать файловую систему только для чтения и не вносить никаких изменений?
Что ж, дальнейшее чтение man-страницы также показывает этот ответ:
-n Откройте файловую систему только для чтения и примите ответ «нет» на все вопросы. Позволяет использовать e2fsck в неинтерактивном режиме. (Примечание: если -c, -l, или -L параметры указаны в дополнение к -n опция, тогда файловая система будет открыта для чтения и записи, чтобы разрешить обновление списка плохих блоков. Однако никаких других изменений в файловой системе вноситься не будет.)
(другими словами: -n
является ложью!)
Этот ответ был вам полностью предоставлен справочная страница для fsck.ext3
.
Скорее всего произошла запись в область «метки» файловой системы. Как насчет даты / времени последнего fsck'd и количества раз, прошедших с момента последнего подсчета полей в метке файловой системы?
Если вы посмотрите на параметры tune2fs, этот тип записи будет поддерживать параметры -c и -i для автоматической полной поддержки fsck для файловой системы ext3.
Вы пробовали переключить -v на fsck, чтобы получить дополнительную информацию? Также вы можете попробовать запустить badblocks самостоятельно и изучить его вывод.