ext4tolvmext4 - andyceo/documentation GitHub Wiki
Инструкция переноса обычного корневого ext4-раздела с Linux на шифрованный LUKS+LVM+btrfs корневой раздел (ext4 не вышло, т.к. использовал btrfs balance
в процессе)
-
сначала загрузим систему как обычно и установим необходимый для этой миграции софт (если еще не установлен):
sudo apt install cryptsetup lvm2 btrfs-progs
-
грузимся с Live-диска системы этой же или более старшей версии. Все последующие манипуляции будут производиться с Live-диска, и будет явно указано, когда придет время перезагрузиться в основную систему
-
выясняем структуру разделов на установленной системе (чью файловую систему мы собираемся шифровать), допустим, что у нас есть раздел
/dev/sda4
, форматированный в ext4 и монтирующийся в/
(корневая файловая система) -
конвертируем ext4->btrfs, предварительно проверив оригинальную ext4 на ошибки:
sudo fsck.ext4 -fyv /dev/sda4 sudo btrfs-convert /dev/sda4
-
создаем новый раздел на диске, который будет использоваться для временного хранения данных во время миграции:
# используйте Gparted в случае любых сомнений и непонимания, что делает эта команда и как поменять ее параметры конкретно для вас! sudo parted /dev/sda/nkpart tempo 100Gb 140Gb # допустим получившийся временный раздел имеет метку `/dev/sda5`: sudo fdisk -l /dev/sda
-
создадим физический том LVM на вышеуказанном диске:
sudo pvcreate /dev/sda5
-
создаем lvm группу и добавляем туда ранее созданный временный физический том, и создадим логический том LVM который и будет хранить корневую файловую систему:
sudo vgcreate -s 8M vg-{HOSTNAME}-system /dev/sda5 sudo lvcreate -n root -L 35G vg-{HOSTNAME}-system
-
создадим точку монтирования системы btrfs и примонтируем туда корневую систему btrfs
sudo mkdir /mnt/rootbtrfs sudo mount /dev/sda4 /mnt/rootbtrfs
-
расширим btrfs на ранее созданный логический том
root
(предварительно нужно примонтировать файловую систему btrfs) и проверим что она расширилась на этот логический том (внимание: для Ubuntu 21.04 пакетbtrfs-progs
содержит неисправленный баг, который не позволяет добавить LVM-том в файловую систему btrfs, это решается закачкой и обновлением пакета из следующей версии Ubuntu 21.10, сделайте обновление в случае ошибок типаvolume error adding device dm-0 no such file or directory
):sudo btrfs device add vg-{HOSTNAME}-system /mnt/rootbtrfs sudo btrfs filesystem show
-
расширим файловую систему на новый том (в терминах btrfs это называется сбалансировать файловую систему на все доступные устройства). Если хотите сделать в дальнейшем отмену конвертации, нельзя делать команды дефрагментации и балансировки, а также удалие подтома с бекапом
ext2_saved
:sudo btrfs balance start --full-balance /mnt/rootbtrfs
-
удаляем оригинальный раздел из btrfs (раздел с которого мигрируем на LUKS+LVM+ext4):
sudo btrfs device delete /dev/sda4 /mnt/rootbtrfs
-
отмонтируем файловую систему:
sudo umount /mnt/rootbtrfs
-
создаем на месте старого раздела шифрованный LUKS-контейнер (пароль (фраза) для шифрования будет спрошен, сохраните и не потеряйте его, иначе доступ к диску и информации на нем будет навсегда утерян):
sudo cryptsetup -v --verify-passphrase -s 512 luksFormat /dev/sda4
-
создаем на этом шифрованном контейнере новый PV, добавляем его в группу
vg-{HOSTNAME}-system
:sudo cryptsetup luksOpen /dev/sda4 dm_crypt-1 sudo pvcreate /dev/mapper/dm_crypt-1 sudo vgextend vg-{HOSTNAME}-system /dev/mapper/dm_crypt-1
-
переносим PE (экстенты), хранящиеся на временном PV
/dev/sda5
, на шифрованный PV:sudo pvmove /dev/sda5 /dev/mapper/dm_crypt-1
-
восстанавливаем из btrfs старый ext4 (невозможно сделать, если был ранее сделан btrfs balance):
sudo btrfs-convert -r /dev/
-
удаляем временный pv (@todo написать)
-
делаем необходимые для корректной загрузки правки (@todo написать!)
-
перезагрузка и проверка
- Encrypt an existing Linux installation with zero downtime (LUKS on LVM) - основная ссылка. Верно почти все, кроме раздела правки загрузочного сектора и генерации ядра (он для Arch Linux, а тут Ubuntu)
-
Convert your filesystem to Btrfs - отличная статья по конвертации файловой системы ext4 в файловую систему btrfs. Если хотите сделать в дальнейшем отмену конвертации, нельзя делать команды дефрагментации и балансировки, а также удалие подтома с бекапом
ext2_saved
. - Using Btrfs with Multiple Devices - страница документации Arch Linux с описанием продвинутых комманд работы с файловой системой btrfs
- Integrated Volume Management of Multiple Devices - описание продвинутой работы с btrfs, также смотрите весь раздел RedHat, посвященный btrfs