Чем отличается fsck от fsck.ext3/ext4 и т.п.
Ремонтировал внешний диск, в моменте отвалился от малины и я получил RAW вместо ext3. Печалька. Бекапы естественно я никакие не делал, хотя 5 лет собирался этим заняться.
Как говорится -- пока гром не грянет мужик не перекрестится.
Велосипед я изобретать не стал, а так же не стал брать сразу какие-то продвинутые инструменты для восстановления. Решил воспользоваться нативным fsck
, чем чёрт не шутит.
Пошел погуглил синтаксис, не каждый же день этой хернёй пользуешься. А там блядь:
fsck -y /dev/sdb
fsck.ext3 -y /dev/sdb
Хмм… помимо fsck.ext3
есть еще и fsck.ext4
и еще несколько штук. Ёбтвою мать. Отправляемся ресерчить, чем эта поебота отличается от обычного fsck
.
TL:DR: НИЧЕМ!
Ща, расскажу. Короче в чистом виде fsck
это обёртка, универсальная оболочка, которая автоматом определяет тип файловой системы и затем уже запускает условно fsck.ext3
, ну или какая там у тебя на дисках.
Автоопределение это заебись, но порой fsck
не хочет ничего проверять. Поэтому самостоятельно определяем тип своей файловой системы и в зависимости от результата запускаем fsck.ext3
и т.п.
Чтобы узнать, что запустит fsck
делаем так:
fsck -N /dev/sda1
В результате получишь:
[/usr/sbin/fsck.ext4 (1) -- fsck.ext4 /dev/sda1
А еще у fsck
нет ключа - [-E extended-options]
. В нее можно передать:
-E discard
- Включает TRIM (удаление неиспользуемых блоков на SSD) во время проверки. Аналог fstrim
, но в процессе fsck
.
-E journal_only
- Проверяет только журнал ext3/ext4, не сканируя всю ФС. Быстро, но полезно только в определённых сценариях.
-E frag
- Проводит анализ фрагментации. Полезно, если интересует дефрагментация ext4.
-E bmap2extent
- Преобразует старые “indirect” блоки в extent-формат (для старых ext4).
-E test_fs
- Включает особое поведение для тестирования (не используется в продакшене).
Пример:
fsck.ext4 -f -E discard /dev/sda1
Принудительная проверка + удаление “мусорных” блоков на SSD.
Как fsck определяет тип файловой системы
Порядок определения:
- Смотрит в /etc/fstab и выгребает третий столбец.
- Если в
fstab
хуй, то оно запускаетblkid /dev/sda1
- Если определить не получилось, пиздует в
/etc/filesystems
, но в большинстве случаев такого файла в современных дистрибутивах нет. Этот файл опционален.
Вот и вся наука. В кишки лезть уже не будет, этой информации вполне достаточно.
Ну и чтобы на каждую ошибку не вводить y
, пропиши автофикс:
fsck -y /dev/sda1
Оно там само пошуршит, все исправит и будет тебе счастье. Изучай.