Проверка и восстановление файловой системы в Linux

Конспект в доработке

    Общие сведения

    Файловая система хранит файлы и метаданные
    Данные не сразу записываются на жесткий диск и некоторое время могут находиться в оперативной памяти. Из за резкого выключения питания файловая система может быть повреждена
    Нельзя проверить диск с помощью fsck если он смонтирован или например используется RAID массивом
    Перед тем выполнением проверки необходимо размонтировать диск
    Файловые системы делятся на два типа - журналируемые и нежурналируемые. Журналируемые файловые системы записывают в лог все свои действия, после выполнения действий стирают свои данные из журнала

    Список утилит для работы с файловой системой

    df, du, fsck, debugfs - утилиты для всех систем Linux
    mke2fs, e2fsck, dumpe2fs, tune2fs – утилиты для файловой системы ext
    xfs_check, xfs_repair, xfs_info, xfs_metadump – утилиты для файловой системы xfs

    Восстановление файловой системы xfs в Linux Alpine

    Файловая система не должна быть смонтирована перед выполнением xfs-repair
    xfs-repair можно использовать для других системных разделов, которые не могут быть размонтированы во время работы системы

    #Следует убедиться, что установлен пакет xfsprogs xfsprogs-extra apk add xfsprogs xfsprogs-extra #Размонтировать файловую систему umount -l /mnt #Намеренно повредить файловую систему xfs_db -x -c blockget -c "blocktrash -s 512109 -n 1000" /dev/sdb1 #При попытке монтировать файловую систему вылезет ошибка # mount /dev/sdb1 /mnt mount: /mnt: mount(2) system call failed: No error information. dmesg(1) may have more information after failed mount system call #Попробуем запустить процесс восстановления с опцией n, что позволит выполнить пробный процесс #xfs_repair -n соответствует команде xfs_check xfs_repair -n /dev/sdb1 #Теперь попробуем запустить команду без опции n xfs_repair /dev/sdb1 #Или выбрать более подробный, но долгий режим xfs_repair -dv /dev/sda #После чего можно попробовать смонтировать раздел еще раз
    Режим восстановления

    Режим восстановления или по другому аварийный режим ( Rescue Mode или Emergency Mode ) эквивалентен однопользовательскому режиму
    В режиме восстановления все файловые системы примонтированы, но только некоторые важные службы будут работать
    В отличие от режима восстановления, в аварийном режиме точки монтирования файловых систем не будут примонтированы, службы и сокеты не будут запущены.
    Чтобы запустить тот или иной режим необходимо запустить меню grub и нажать клавишу "e"
    Далее найти строку, которая начинается со слова linux, в троке заменить $vt_handoff на:
    systemd.unit=rescue.target - режим восстановления
    Или
    systemd.unit=emergency.target - аварийный режим
    Возможно конфигурация будет выглядеть иначе:
    В строке которая начинается примерно с "linux...." будет два слова "quiet splash", которые нужно заменить на "verbose init=/bin/bash", после чего нажать F10 или ctrl+x
    Именно в режиме восстановления можно восстановить корневую файловую систему
    В режиме восстановления файловая система будет доступна только для чтения
    Режим восстановления можно запустить через загрузчик grub. Чтобы вызвать меню grub при загрузке системы, удерживается клавиша shift

    #Изменить права файловой системы mount -o remount,rw /
    Восстановление файловой системы ext4 в Linux Ubuntu

    Для работы утилиты fsck необходимо убедиться, что раздел диска не смонтирован, в противном случае вернет ошибку
    В конечном итоге утилита fsck вернет код
    0 Нет ошибок
    1 Исправлены ошибки файловой системы
    2 Необходимо перезапустить систему
    4 Есть ошибки, которые не получилось исправить
    8 Операционная ошибка
    16 Ошибка синтаксиса
    32 Отмена по запросу пользователя
    128 Ошибка общей библиотеки


    Опции утилиты
    V - подобный вывод, режим verbose
    y - подтверждение всех действий без участия пользователя
    AR - запуск утилиты для всех файловых системы, кроме корневой
    C - прогресс проверки файловой системы
    N - ничего не выполнять, показать только статус проверки
    n - выполнить только проверку файловой системы, ничего не исправлять
    r - спрашивать перед исправлением каждой ошибки, используется для файловых систем ext
    y - подтверждает каждое действие автоматически, эквивалент опции a
    c - найти и занести в черный список битые блоки на жестком диске ( только для ext3 и ext4 )
    f - принудительная проверка файловой системы, даже если по журналу она чистая
    b - задать адрес суперблока, если основной был поврежден
    p - выполняет проверку и исправление подобно опции -a
    R - исключить проверку корневой файловой системы
    M - исключить проверку примонтированных файловых систем

    #Запуск исправления ошибок fsck -y /dev/sdb1
    Проверка диска при перезагрузке системы

    Чтобы проверить диск при перезапуске системы, необходимо создать файл forcefsck в корневом каталоге системы

    #Создать файл touch /forsefsck
    Восстановление поврежденного суперблока

    fsck не поможет восстановить файловую систему если суперблок поврежден, так как суперблок является началом файловой системы
    Есть специальная команда которая поможет определить местонахождение суперблоков

    #Определить местонахождение резервных суперблоков # mkfs -t ext4 -n /dev/sdb1 mke2fs 1.42.13 (17-May-2015) /dev/sdb1 contains a ext4 file system last mounted on Tue Jan 9 23:47:20 2024 Proceed anyway? (y,n) y Creating filesystem with 2096896 4k blocks and 524288 inodes Filesystem UUID: 7b5d437c-21a5-456a-be22-617f239451b2 Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

    Данная команда создает новую файловую систему с типом (-t) который ранее использовался, но с опцией -n выводится только информация в которой указано распложение резервных суперблоков, никаких изменений на диск не вноситься
    С помощью каждого из резервных суперблоков можно попытаться восстановить данные

    fsck -b -y 32768 /dev/sdb1
    Другие полезные команды
    #Узнать тип файловой системы file -s /dev/sdb1 #Найти битые сектора и больше ничего в них не писать fsck -c /dev/sdb1 #Проверить все файловые системы типа ext4 fsck -A -t ext4 -y #Проверить файловые системы примонтированные только для чтения fsck -A -t opts=ro
    Проверка примонтированной файловой системы
    #Если файловая системы примонтирована, не получится использовать fsck, однако данное ограничение можно обойти mount -o remount,ro /dev/sdb1 #После этого добавить опции f для проверки в принудительном режиме fsck -fy /dev/sdb1
    Источники
    Последнее изменение: 10.10.2024 04:32


    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ