Монтирование зашифрованных LVM образов

Автор: | 30.11.2021

Я активно использую Linux. И стараюсь периодически делать резервные копии со своих устройств. Самым простым вариантом является создание DD образа всего диска. Дальше этот образ можно сжать GZIP-ом и положить на LTO картридж. И пару раз меня сильно выручали резервные копии. Я их полностью не разворачивал, только доставал часть данных.

Однако, есть одна проблема. На ноутбуках я всегда использую шифрование диска. На всякий случай. Ноутбук теоретически можно потерять. Его могут украсть. Зачем рисковать? В данной ситуации не сколько само устройство жалко, сколько данные на нем. А самое опасное — ssh ключи в различные места, где теоретически можно очень сильно чего-нибудь сломать.

Итак, начнем с простого. Как подключить образ. Речь идет про сырой, не сжатый. Тут поможет loop устройство. Этой командой мы подключаем образ и сразу сканируем его на наличие разделов.

sudo losetup -f --partscan <файл_образа>

После чего в /dev/ наблюдаем loop устройство с разделами.

[walhi@b590] $ ls -l /dev/loop*
brw-rw---- 1 root disk 7, 0 ноя 30 02:42 /dev/loop0
brw-rw---- 1 root disk 259, 0 ноя 30 02:42 /dev/loop0p1
brw-rw---- 1 root disk 259, 1 ноя 30 02:42 /dev/loop0p2
brw-rw---- 1 root disk 259, 2 ноя 30 02:53 /dev/loop0p3
brw-rw---- 1 root disk 7, 1 ноя 30 02:42 /dev/loop1
brw-rw---- 1 root disk 7, 2 ноя 30 02:42 /dev/loop2
brw-rw---- 1 root disk 7, 3 ноя 30 02:42 /dev/loop3
brw-rw---- 1 root disk 7, 4 ноя 30 02:42 /dev/loop4
brw-rw---- 1 root disk 7, 5 ноя 30 02:42 /dev/loop5
brw-rw---- 1 root disk 7, 6 ноя 30 02:42 /dev/loop6
brw-rw---- 1 root disk 7, 7 ноя 30 02:42 /dev/loop7
crw-rw---- 1 root disk 10, 237 ноя 30 02:42 /dev/loop-control
[walhi@b590] $

Для диска, у которого не используется LVM все просто. Монтируем разделы, получаем доступ к файлам.

При использовании LVM нужно немного больше действий. Для начала убеждаемся, что vgscan находит volume group. Но учтите, что при одинаковых именах групп будут проблемы.

Командой sudo lvscan можно посмотреть разделы. Если вы не обнаруживаете разделы из образа, то группа может быть отключена. Как её включить — дополню потом, если не забуду. Пишу статью в 3 ночи для будущего себя. Если кому оно нужно, но ещё не описано — пинайте в комментариях.

[walhi@b590] $ sudo lvscan
ACTIVE '/dev/backup-vg/root' [236,25 GiB] inherit
ACTIVE '/dev/backup-vg/swap_1' [976,00 MiB] inherit
ACTIVE '/dev/main-vg/root' [<64,73 GiB] inherit
ACTIVE '/dev/main-vg/swap_1' [3,88 GiB] inherit
ACTIVE '/dev/main-vg/home' [377,77 GiB] inherit

Когда увидели разделы — можно монтировать и получать доступ к файлам.

Иногда разделы автоматически не активируются и в lvscan выводит следующую информацию:

walhi@ryzen:/media/walhi/TB$ sudo lvscan
  ACTIVE            '/dev/ryzen-vg/root' [<230,95 GiB] inherit
  ACTIVE            '/dev/ryzen-vg/swap_1' [976,00 MiB] inherit
  inactive          '/dev/stat-vg/root' [<221,63 GiB] inherit
  inactive          '/dev/stat-vg/swap_1' [976,00 MiB] inherit

Почему это происходит, когда имена разные — не знаю. Но активировать вручную сейчас ничего не мешает. Для этого используется команда lvchange -a y <раздел>. В данном случае автодополнение по кнопке Tab не работает.

walhi@ryzen:/media/walhi/TB$ sudo lvchange -a y /dev/stat-vg/root
walhi@ryzen:/media/walhi/TB$ sudo lvscan
  ACTIVE            '/dev/ryzen-vg/root' [<230,95 GiB] inherit
  ACTIVE            '/dev/ryzen-vg/swap_1' [976,00 MiB] inherit
  ACTIVE            '/dev/stat-vg/root' [<221,63 GiB] inherit
  inactive          '/dev/stat-vg/swap_1' [976,00 MiB] inherit

Ну и следующий уровень, когда LVM зашифрован. Как раз мой случай. Тут после losetup нужно ввести пароль от контейнера. Делается это следующей командой.

cryptsetup luksOpen /dev/loop<нужный_раздел> crypt2

После ввода пароля vgscan должен будет найти volume group. А что делать далее уже описано.

После работы нужно освободить loop устройство. Для этого сначала отключаем контейнер командой cryptsetup luksClose <имя>, после освобождаем устройство losetup -d /dev/loop<N>.

Статейка получилась не совсем логичная, сложная для новичков. Но это скорее заметка для себя, чтобы потом полчаса не вспоминать и не гуглить команды.

Добавить комментарий

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