В чем разница между 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 на два или более независимые инструменты при необходимости в будущем.

Другие вопросы по тегам