Назад | Перейти на главную страницу

Почему вы не можете проверить смонтированный раздел?

Хорошо известно, что никогда не следует проверять смонтированный раздел. Я могу понять, как это может легко привести к повреждению, если файловая система написано с помощью fsck (например, используется параметр -a), но почему на смонтированных дисках нельзя запускать проверки только для чтения?

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

Есть несколько файловых систем с чекерами, которые явно предназначены для работы в интерактивном режиме (т. Е. Пока файловая система активна). В более новых версиях FFS / UFS это делается путем запуска fsck для последнего моментального снимка файловой системы (реплика только для чтения на определенный момент времени, копируемая при записи). Если он обнаруживает проблемы, такие как несоответствия в битовых картах распределения, он исправляет их с помощью системного вызова, а не путем записи на необработанный диск. Это позволяет ему координировать свою работу с активной файловой системой.

NetApp WAFL также имеет инструмент проверки в реальном времени. Наверное, есть и другие.

Из:

http://linux.die.net/man/8/fsck.ext3

"Обратите внимание, что в целом запускать e2fsck на смонтированных файловых системах. Единственное исключение - если -n опция указана, и -c, -l, или -L варианты не указаны. Однако, даже если это безопасно, результаты, напечатанные e2fsck недействительны, если файловая система смонтирована. Если e2fsck спрашивает, следует ли вам проверять смонтированную файловую систему, единственный правильный ответ - «нет». Ответить на этот вопрос иначе должны только специалисты, которые действительно знают, что делают. "

Запуск fsck на разделе, смонтированном для чтения и записи, было бы глупо, даже если fsck находится в режиме только для чтения. Файловая система изменится под fsck, и данные в памяти, которые fsck кэширует из файловой системы, станут недействительными (и, таким образом, fsck увидит несогласованность). Вы можете запустить fsck на смонтированной файловой системе, доступной только для чтения, в режиме только для чтения и получить достоверные результаты. Запуск fsck в режиме чтения / записи в смонтированной файловой системе, доступной только для чтения, если fsck вносит изменения в файловую систему во время своего запуска, может привести к тому, что ядро ​​увидит, что структуры файловой системы под ней неожиданно меняются. Это тоже было бы плохо.

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

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

Дело в том, что функция fsck сообщает о несоответствиях файловой системы, то есть о нарушенных инвариантах.

Однако многие из этих проверок включают более одной структуры FS. Если кто-то модифицирует FS (записывает данные), эти структуры могут временно не синхронизироваться. fsck сочтет это несоответствием, хотя на самом деле это не проблема. fsck не может определить, является ли несоответствие временным или постоянной проблемой, которую необходимо исправить. Так что это не может работать (если только FS не разработана специально для онлайн-проверки. Некоторые работают, а ext3 - нет).

Что ж, можешь. fsck -n / dev / sda1 сделает именно это, по крайней мере, на ext3. Я только что протестировал :)

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

Но зачем вам это, кроме как проверить собственную смертность? Потому что ваш начальник наверняка снова его протестирует, когда узнает, ПОЧЕМУ почтовый сервер теперь не распознает корневой диск.