Skip to content

ext4tolvmext4

andyceo edited this page Oct 2, 2021 · 1 revision

ext4 -> LUKS+LVM+ext4

Инструкция переноса обычного корневого 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

Устройства хранения: диски, блочные устройства, файловые системы

В этом разделе находится информация об устройствах хранения, файловых системах и утилитах для работы с ними.

Clone this wiki locally