Чем отличается 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
Оно там само пошуршит, все исправит и будет тебе счастье. Изучай.