ZaLinux.ru

Как отремонтировать диск LVM с помощью fsck

Как восстановить работу диска LVM

Если из-за ошибок на диске система не может загрузиться, то обычно в консоли аварийного режима нужно выполнить проверку разделов диска, примерно следующим образом (нужно указать своё имя диска и номер раздела):

umount /dev/sda2
fsck -y /dev/sda2

Но если речь идёт о LVM, либо о LVM с шифрованием, то ситуация усложняется.

Смотрите также:

Определить, что используется технология LVM или LVM с шифрованием можно по записям /dev/mapper/hostname--vg-root и /dev/mapper/hostname--vg-home, которые указываются вместо имён разделов в выводе команды

mount

1. Проверка и исправление диска LVM без шифрования с помощью fdisk

Для проверки LVM используйте следующие шаги.

Для начала проверяем разметку дисков с lsblk:

lsblk

Пример вывода:

NAME                 MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                    8:0    0    20G  0 disk  
└─sda1                 8:1    0    20G  0 part  
  └─xubuntu--vg-root 253:0    0    19G  0 lvm   / 
sr0                   11:0    1  1024M  0 rom   

Как можно увидеть, LVM назван xubuntu--vg-root, но мы не можем запустить fsck на это имя, так как команда не найдёт его. Нам нужно получить полное имя, для этого нужно запустить команду lvm lvscan для получения LV имени с которым мы можем запустить fsck на LVM.

Следующая команда должна запускаться с повышенными правами (с sudo или как root):

lvscan

Пример вывода:

  inactive          '/dev/xubuntu-vg/root' [<19.04 GiB] inherit
  inactive          '/dev/xubuntu-vg/swap_1' [980.00 MiB] inherit

Как можно увидеть, имя диска который нужно проврить на ошибки это /dev/xubuntu-vg/root, оно должно подойти для запуска fsck на этом имя.

Если /dev/xubuntu-vg/root не ACTIVE, нужно сделать его активным чтобы мы могли запустить его проверку.

lvchange -ay /dev/xubuntu-vg/root

Теперь это должно выглядеть примерно так:

sudo lvscan
  ACTIVE            '/dev/xubuntu-vg/root' [<19.04 GiB] inherit
  inactive          '/dev/xubuntu-vg/swap_1' [980.00 MiB] inherit

Теперь можно запустить fsck для проверку тома LVM:

fsck /dev/xubuntu-vg/root

или запустить форсированную проверку с автоматическим исправлением ошибок:

fsck -fy /dev/xubuntu-vg/root

2. Исправление LVM с шифрованием

Может так быть, что действия из предыдущего примера возможны только при нормальной загрузке системы, когда доступны все возможные утилиты. Соответственно, в Emergency mode указанные операции не удастся выполнить.

Поэтому рассмотрим пример восстановления системы с Live образа. Причина анализируемой проблемы в том, что apt autoremove удалила пакет cryptsetup и другие важные для расшифровки и нормальной работы раздела утилиты. Это привело к тому, что система перестала загружаться (из-за того, что корневой раздел не может быть смонтирован и расшифрован используя LVM).

Если вы не используете LVM и полнодисковое шифрование, то дальнейшее возможно вам не подходит.

В данном примере удалось исправить систему и переустановить cryptsetup и lvm2 в окружении chroot: для этого понадобилось загрузиться с флешки Live USB, запустить последующие команды в терминале и перезагрузиться

Поиск корневого раздела:

sudo fdisk -l

Расшифровываем раздел.

sudo cryptsetup open --type luks /dev/nvme0n1p3 nvme0n1p3_crypt

Внимание:

  • замените /dev/nvme0n1p3 на ваш собственный диск
  • замените "nvme0n1p3_crypt" на корректное имя раздела для вашей установки, вы можете его узнать запустив следующее в chroot:
cat /etc/crypttab | cut -f1 -d " "

Пример вывода:

nvme0n1p3_crypt

Монтирование корневого раздела

sudo vgscan
sudo vgchange -ay
sudo mount /dev/mapper/xubuntu--vg-root /mnt

Подготовка окружения chroot:

sudo mount /dev/nvme0n1p2 /mnt/boot/ # замените nvme0n1p2 на ваш загрузочный раздел!
sudo mount -o rbind /dev/ /mnt/dev/
sudo mount -t proc proc /mnt/proc/
sudo mount -t sysfs sys /mnt/sys/

Делаем так, чтобы в chroot работал DNS:

sudo cp /etc/resolv.conf /mnt/etc/resolv.conf

Входим в chroot:

sudo chroot /mnt /bin/bash

Переустанавливаем отсутствующие пакеты:

apt install cryptsetup lvm2

Заново генерируем (это может быть выполнено командой apt на предыдущем шаге — если это уже было сделано, то пропустите):

update-initramfs -u -k all

Покидаем среду chroot:

exit

Записываем буфер на диск:

sudo sync

Размантируем файловые системы:

sudo umount /mnt/sys
sudo umount /mnt/proc
sudo umount /mnt/boot

Рекомендуемые статьи:

1 Комментарий

  1. Kali

    …Попробовала решить свою проблему, озвученную ранее на форуме, при помощи данной статьи.

    lvscan показал, что все директории ACTIVE.

    fsck from util-linux 2.37.2

    e2fsck 1.46.4 (18-Aug-2021)

    /dev/mapper/hostname--vg-root is mounted.

    e2fsck: Cannot continue, aborting.

    Что делать дальше?

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *