
У меня есть большая, часто используемая файловая система ext3, смонтированная в режиме «только для чтения» в системе, которая обычно постоянно включается и выключается примерно 2–3 раза в день.
Поскольку устройство обычно выключается путем отключения питания, fsck запускается при загрузке этой файловой системы, но для этого приложения важно быстрое время загрузки (с точностью до секунды).
Я могу отключить проверки файловой системы во время загрузки в fstab, но у меня вопрос: безопасно ли это делать? Учитывая, что файловая система монтируется только для чтения, но никогда не размонтируется должным образом, есть лилюбойесть ли риск накопления повреждений файловой системы в течение длительного периода времени, если я отключу проверку во время загрузки?
решение1
Из mount
страницы руководства,
-r, --read-only
Mount the filesystem read-only. A synonym is -o ro.
Note that, depending on the filesystem type, state and kernel
behavior, the system may still write to the device. For example,
Ext3 or ext4 will replay its journal if the filesystem is dirty.
To prevent this kind of write access, you may want to mount ext3
or ext4 filesystem with "ro,noload" mount options or set the
block device to read-only mode, see command blockdev(8).
Если ro,noload
этого окажется недостаточно, я не знаю способа настроить устройство только для чтения с помощью одной только записи fstab; вам может потребоваться вызвать blockdev --setro
или создать циклическое устройство только для чтения ( losetup --read-only
) каким-либо другим способом до монтирования вашей файловой системы.
Если вы сделаете его действительно только для чтения, он даже не узнает, что был смонтирован. Таким образом, не будет обновлений счетчика монтирования, не будет принудительного fsck и, тем более, не будет никаких повреждений, пока ничего не будет записано на устройство...
решение2
Из tune2fs
страницы руководства:
-c max-mount-counts
Adjust the number of mounts after which the filesystem will be checked by e2fsck(8). If max-mount-counts is 0 or -1, the number
of times the filesystem is mounted will be disregarded by e2fsck(8) and the kernel.
Staggering the mount-counts at which filesystems are forcibly checked will avoid all filesystems being checked at one time when
using journaled filesystems.
You should strongly consider the consequences of disabling mount-count-dependent checking entirely. Bad disk drives, cables,
memory, and kernel bugs could all corrupt a filesystem without marking the filesystem dirty or in error. If you are using jour-
naling on your filesystem, your filesystem will never be marked dirty, so it will not normally be checked. A filesystem error
detected by the kernel will still force an fsck on the next reboot, but it may already be too late to prevent data loss at that
point.
See also the -i option for time-dependent checking.
и:
-i interval-between-checks[d|m|w]
Adjust the maximal time between two filesystem checks. No postfix or d result in days, m in months, and w in weeks. A value of
zero will disable the time-dependent checking.
It is strongly recommended that either -c (mount-count-dependent) or -i (time-dependent) checking be enabled to force periodic
full e2fsck(8) checking of the filesystem. Failure to do so may lead to filesystem corruption due to bad disks, cables, memory,
or kernel bugs to go unnoticed until they cause data loss or corruption.
Таким образом, вы можете установить оба параметра на ноль, что должно отключить автоматические fsck
's (предполагая, что вына самом делеХотя и хочется это сделать).
решение3
Оставляю свой другой ответ по историческим и контекстуальным причинам, но перечитывая, я вижу ваш настоящий вопрос: Да, вы все еще хотитев конце концовсделать fsck
. Все диски имеют ограниченный срок службы и fsck
будут помещать плохие сектора в inode/список «плохих блоков», чтобы никакие новые файлы не могли их использовать.
Режим «только чтение» (и выполнение noload
действий, о которых говорит frotschutz) помогает предотвратить проблемы с согласованностью из-за прерывания обслуживания, но вам все равно придется учитывать, что ваше оборудование может просто выйти из строя.