В чем разница между fsck и e2fsck?
В чем разница между инструментами проверки ошибок на Linux-дисках fsck и e2fsck?
3 ответа
fsck - это просто оригинальное имя. Когда они выпустят новые файловые системы, им понадобится специальный инструмент для каждой из них: efsck для ext, e2fsck для ext2, dosfsck, fsckvfat. Поэтому они сделали fsck интерфейсом, который просто вызывает тот инструмент, который подходит.
fsck - это оболочка для семейства инструментов fsck.* для файловой системы. Их можно использовать взаимозаменяемо с одним предупреждением (из справочной страницы fsck):
Опции, которые не понятны fsck, передаются в файловую систему проверки. Эти аргументы не должны принимать аргументы, так как fsck не может правильно угадать, какие аргументы принимают параметры, а какие нет.
Опции и аргументы, следующие за - обрабатываются как специфичные для файловой системы опции, которые передаются в специфичную для файловой системы проверку.
Обратите внимание, что fsck не предназначен для передачи произвольно сложных опций в специфичные для файловой системы средства проверки. Если вы делаете что-то сложное, просто запустите проверку файловой системы напрямую. Если вы передаете fsck какой-то ужасно сложный параметр и аргументы, и он не делает то, что вы ожидаете, не стесняйтесь сообщать об этом как об ошибке. Вы почти наверняка делаете то, что не должны делать с fsck.
Однако fsck будет обрабатывать большинство обычных операций в файловой системе.
В моей системе у меня есть:
fsck
fsck.ext2
fsck.ext3
fsck.ext4
e2fsck
- ... (Больше
fsck.*
инструменты для других, не ext файловых систем)
Теперь ни одна из них не является символической ссылкой, но e2fsck
и fsck.ext2/3/4
все инструменты имеют один и тот же инод, поэтому на самом деле это один и тот же файл. (Возможно, этот двоичный файл будет запрашивать собственное имя при запуске и вести себя по-разному для имени, с которым он вызывается, но я сомневаюсь, что это так.)
Итак, теперь у нас осталось всего два инструмента:
fsck
e2fsck
И, как уже говорили другие, fsck
это просто внешний интерфейс, который вызывает соответствующий инструмент для рассматриваемой файловой системы, которая в данном случае e2fsck
для файловой системы ext семьи.
Я предполагаю причину наличия различных fsck.ext2/3/4
файлы таковы, что: 1. легко написать сценарии, которые могут обрабатывать все типы файловых систем в общем (они могут легко определить имя инструмента fsck из типа файловой системы) и 2. для гибкости, так что тривиально разделить e2fsck на два или более независимые инструменты при необходимости в будущем.