Как восстановить работу диска LVM
Если из-за ошибок на диске система не может загрузиться, то обычно в консоли аварийного режима нужно выполнить проверку разделов диска, примерно следующим образом (нужно указать своё имя диска и номер раздела):
umount /dev/sda2 fsck -y /dev/sda2
Но если речь идёт о LVM, либо о LVM с шифрованием, то ситуация усложняется.
Смотрите также:
- Что такое LVM и для чего он используется?
- Ошибка «Cannot open access to console, the root account is locked» (РЕШЕНО)
- Как определить, почему Linux загружается в Emergency mode
Определить, что используется технология 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
Связанные статьи:
- Как определить, почему Linux загружается в Emergency mode (72.8%)
- Ошибка «Cannot open access to console, the root account is locked» (РЕШЕНО) (64.1%)
- Как в Linux подключить новый диск, разметить и отформатировать разделы (60.4%)
- Как проверить, использует ли компьютер BIOS или UEFI; загрузчик GRUB или systemd-boot; таблицу разделов MBR или GPT (59.5%)
- Ubuntu/Mint/Kali загружается в initramfs BusyBox (РЕШЕНО) (59.2%)
- Как проверить, включён ли TRIM в Linux (RANDOM - 8.8%)
…Попробовала решить свою проблему, озвученную ранее на форуме, при помощи данной статьи.
lvscan показал, что все директории ACTIVE.
Что делать дальше?