Расширить LUKS зашифрованный раздел, чтобы заполнить диск

Содержание
  1. Вопрос или проблема
  2. Как клонировать ваш жесткий диск (SSD или HDD) и расширить ваш зашифрованный раздел LUKS, чтобы заполнить новое полное дисковое пространство:
  3. Краткое резюме:
  4. Подробности и полные шаги:
  5. 1. склонировать ваш диск
  6. 2. Используйте gparted, чтобы увеличить ваш раздел
  7. 3. Замените диски, чтобы избежать дублирования UUID дисков
  8. 4. Увеличьте расшифрованную файловую систему так, чтобы она соответствовала вновь измененному размеру раздела
  9. Вариант 1. [Новый, добавленный с 16 марта 2023 года–что я теперь рекомендую] Используйте GUI, чтобы увеличить объем LVM внутри раздела LUKS
  10. Вариант 2. [Оригинальный ответ] Используйте командную строку, чтобы увеличить объем LVM внутри раздела LUKS
  11. 5. Смонтируйте расшифрованный (разблокированный) раздел и выполните df -h, чтобы доказать, что его файловая система расширена
  12. 6. Перезагрузите и используйте ваш новый диск как обычно
  13. Дополнительные заметки
  14. Ответ или решение
  15. Основные шаги для расширения LUKS-зашифрованного раздела:
  16. Завершение:

Вопрос или проблема

Недавно я обновил свой диск с 128 ГБ SSD на 512 ГБ SSD. Раздел / зашифрован с помощью LUKS. Я ищу помощь в расширении раздела, чтобы использовать все свободное пространство на новом диске. Я уже скопировал старый диск на новый:

[root@localhost ~]# fdisk -l /dev/sda
Диск /dev/sda: 477 GiB, 512110190592 байт, 1000215216 секторов
Единицы: сектора по 1 * 512 = 512 байт
Размер сектора (логический/физический): 512 байт / 4096 байт
Размер ввода-вывода (минимальный/оптимальный): 4096 байт / 4096 байт
Тип метки диска: dos
Идентификатор диска: 0x00009f33

Устройство     Загрузка   Начало       Конец   Секторы   Размер Id Тип
/dev/sda1  *       2048   1026047   1024000   500M 83 Linux
/dev/sda2       1026048 250064895 249038848 118.8G 83 Linux

После sda2 остается около 380 ГБ неиспользуемого пространства.

Более актуальная информация:

[root@localhost ~]# vgs
  VG             #PV #LV #SN Attr   VSize   VFree
  fedora_chocbar   1   3   0 wz--n- 118.75g 4.00m

[root@localhost ~]# lvs
  LV   VG             Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home fedora_chocbar -wi-a----- 85.55g                                                    
  root fedora_chocbar -wi-a----- 29.30g                                                    
  swap fedora_chocbar -wi-a-----  3.89g

[root@localhost ~]# pvs
  PV                    VG             Fmt  Attr PSize   PFree
  /dev/mapper/encrypted fedora_chocbar lvm2 a--  118.75g 4.00m

Похоже, есть много информации о том, как это сделать, но очень мало объяснений. Буду признателен за любую помощь в этом вопросе.

Хорошо! Наконец-то окончательный ответ. Мои шаги для расширения зашифрованного объема LUKS…

  1. cryptsetup luksOpen /dev/sda2 crypt-volume, чтобы открыть зашифрованный объем.
  2. parted /dev/sda, чтобы расширить раздел. resizepart НОМЕР КОНЕЦ.
  3. vgchange -a n fedora_chocbar. Прекратите использовать VG, чтобы выполнить следующий шаг.
  4. cryptsetup luksClose crypt-volume. Закройте зашифрованный объем для следующих шагов.
  5. cryptsetup luksOpen /dev/sda2 crypt-volume. Откройте его снова.
  6. cryptsetup resize crypt-volume. Автоматически изменит размер объема LUKS до доступного пространства.
  7. vgchange -a y fedora_chocbar. Активируйте VG.
  8. pvresize /dev/mapper/crypt-volume. Измените размер PV.
  9. lvresize -l+100%FREE /dev/fedora_chocbar/home. Измените размер LV для /home до 100% свободного пространства.
  10. e2fsck -f /dev/mapper/fedora_chocbar-home. Выполните магию fsck на измененной файловой системе.
  11. resize2fs /dev/mapper/fedora_chocbar-home. Измените размер файловой системы в /home (автоматически использует 100% свободного пространства)

Надеюсь, что это будет полезно кому-то другому. Теперь у меня есть 300+ ГБ для тестовых виртуальных машин на моем ноутбуке!

Для тех, кто ищет ответ на вопрос, как просто изменить размер раздела LUKS до размера измененного контейнера, команды следующие:

  • с открытым зашифрованным объемом LUKS, который отображается как opened-volume, выполните

    sudo cryptsetup resize /dev/mapper/opened-volume
    

    чтобы изменить размер зашифрованного объема LUKS онлайн…

  • затем измените размер содержимого.

    • Например, если это файловая система Ext4, вы можете изменить ее размер даже если она смонтирована с помощью

      sudo resize2fs /dev/mapper/opened-volume
      
    • Или, если у вас был LVM физический объем внутри зашифрованного объема LUKS, просто используйте pvresize:

      sudo pvresize /dev/mapper/opened-volume
      

Я делал это с смонтированной файловой системой/активированным PV без перерыва; было возможно изменить размер контейнера без предварительного размонтирования, потому что зашифрованный объем находился на логическом объеме LVM (используя lvresize)/используя parted для изменения размера GPT-раздела, чтобы включить свободное пространство, которое шло сразу за ним!

Я нашел гораздо более простое решение. Запустите Xubuntu в режиме live, установите и запустите partitionmanager. Он прекрасно справляется с зашифрованными разделами.

Подробные инструкции можно найти здесь: http://e1z.ca/devlog/encrypted_partition_resize.html

У меня была такая же проблема с Ubuntu 20.04 LTS, и это решило ее для меня: https://help.ubuntu.com/community/ResizeEncryptedPartitions

Основные шаги:

  1. Загрузитесь с USB-накопителя в режим live

  2. Расшифруйте вашу файловую систему.

    sudo cryptsetup luksOpen /dev/sda5 crypt1
    
  3. Заставьте живой CD распознать (активировать) ваш LVM.

    sudo vgscan --mknodes
    sudo vgchange -ay
    
  4. Измените размер Crypt.

    sudo cryptsetup resize crypt1
    
  5. Измените размер (LVM) физического объема.

    sudo pvresize /dev/mapper/crypt1
    
  6. Измените размер вашего корневого (LVM) логического объема.

    1. Разблокируйте (LVM) физический объем.

      sudo pvchange -x y /dev/mapper/crypt1
      
    2. Измените размер (LVM) физического объема.

      sudo lvresize -l +4G /dev/ubuntu-vg/
      

    Примечание: Измените +4G на количество пространства, которое вы добавляете, или +100%FREE, чтобы использовать все доступное пространство.

    1. Снова заблокируйте физический объем.
      sudo pvchange -x n /dev/mapper/crypt1
      
  7. Измените размер файловой системы.

    sudo e2fsck -f /dev/mapper/ubuntu--vg-root
    sudo resize2fs -p /dev/mapper/ubuntu--vg-root
    
  8. Перезагрузите

Так как это, похоже, не конкретно вопрос LVM, хочу упомянуть, что мне удалось успешно перенести и расширить один из моих разделов LUKS на 100 ГиБ вперед (!) с GParted на Fedora 28. Однако это было невозможно сделать в Ubuntu 18.04, и каждое другое решение выглядело как морока с dd или резервным копированием и восстановлением (я все равно сделал резервное копирование). Контейнер LUKS автоматически расширяется – если мне не изменяет память, GParted сообщает об этом – единственное, что оставалось, это расширить файловую систему, так что мне пришлось выполнить fsck.ext4 -f и resize2fs в моем случае.

Большое спасибо разработчикам GParted.

Измените размер с помощью командной строки с parted без LVM (на таблице разделов ms-dos для дополнительного удовольствия).

Я расширил свой VPS с 50 ГБ до 150 ГБ.

Crypttab выглядит следующим образом:

# cat /etc/crypttab 
vda5_crypt UUID=c5e67d21-6af4-4d55-a4bc-2978e50c00c3 none luks
vda6_crypt /dev/vda6 /dev/urandom cipher=aes-xts-plain64,size=256,swap

Размеры:

# df -h
Файловая система              Размер  Использовано Доступно Использование% Смонтировано на
/dev/mapper/vda5_crypt   47G   12G   35G  26% /
/dev/vda1               641M   63M  532M  11% /boot

Разметка разделов выглядит следующим образом:

# parted /dev/vda print                                                        
Модель: Virtio Block Device (virtblk)
Диск /dev/vda: 161GB
Размер сектора (логический/физический): 512B/512B
Таблица разделов: msdos
Флаги диска: 

Номер  Начало   Конец     Размер    Тип      Файловая система  Флаги
 1      1049kB  700MB   699MB   primary   ext4         boot
 2      701MB   53.7GB  53.0GB  extended
 5      701MB   51.7GB  51.0GB  logical
 6      51.7GB  53.7GB  1985MB  logical

Как видите, мой раздел подкачки (раздел 6) мешает; мне нужно удалить его, чтобы расширить раздел. Сначала отключите своп:

swapoff -a && free -lm

Строка ‘Swap:’ должна содержать все нули.

Теперь головоломка состоит в том, чтобы изменить размеры разделов и восстановить их до перезагрузки, и (parted) будет жаловаться, что не может проинформировать ядро, я (я) игнорировал это несколько раз).

Сначала удалите раздел подкачки:

parted /dev/vda
(parted) rm 6
Ошибка: Раздел(ы) 6 на /dev/vda были записаны, но мы не смогли проинформировать ядро об изменении, вероятно, потому что оно/они используются.  В результате старые разделы останутся в использовании.  Вам следует перезагрузить сейчас перед внесением дальнейших изменений.
Игнорировать/Отменить? i 

Расширьте логический раздел (2), чтобы удерживать расширенные разделы, до конца диска (-1):

(parted) resizepart 2 -1

Измените размер логического раздела 5, оставив место для раздела подкачки (parted снова будет жаловаться, просто продолжайте и (i)игнорируйте:

(parted) resizepart 5 -4G

Воссоздайте раздел подкачки – как вы можете видеть из crypttab, он каждой загрузки рандомизируется, поэтому не будем беспокоиться о UUID – это не хорошо для сна – но для серверов и без сна это предпочтительный способ. Создайте его с конца предыдущего раздела (157G) до конца диска (-1):

(parted) mkpart                                                           
Тип раздела?  primary/logical? l                                       
Тип файловой системы?  [ext2]? linux-swap                                     
Начало? 157GB                                                              
Конец? -1    

Проверьте результаты:

(parted) print                                                            
Модель: Virtio Block Device (virtblk)
Диск /dev/vda: 161GB
Размер сектора (логический/физический): 512B/512B
Таблица разделов: msdos
Флаги диска: 

Номер  Начало   Конец    Размер    Тип      Файловая система     Флаги
 1      1049kB  700MB  699MB   primary   ext4            boot
 2      701MB   161GB  160GB   extended
 5      701MB   157GB  156GB   logical
 6      157GB   161GB  3998MB  logical   linux-swap(v1)  lba
(parted) quit

Теперь перезагрузите и вы сможете нормально загрузить систему, разблокировав раздел.

После перезагрузки проверьте ваше пространство подкачки:

# swapon
ИМЯ      ТИП      РАЗМЕР ИСПОЛЬЗОВАНО ПРИОРИТЕТ
/dev/dm-1 раздел 3.7G   0B   -1

Время расширить! Используйте ‘cryptsetup resize /dev/mapper/opened-volume’ и ‘resize2fs /dev/mapper/opened-volume’

cryptsetup resize /dev/mapper/vda5_crypt
resize2fs /dev/mapper/vda5_crypt

В результате, мой зашифрованный объем изменился на 132 ГБ:

# df -h
Файловая система              Размер  Использовано Доступно Использование% Смонтировано на
/dev/mapper/vda5_crypt  144G   12G  132G   9% /
/dev/vda1               641M   63M  532M  11% /boot

Предыстория:
Сначала я установил Linux Mint (как Ubuntu) с полным шифрованием, и он стер мою установку Windows для выполнения этих условий. Это привело к тому, что я получил раздел LUKS большого размера с LVM2 VG внутри, который занимал почти весь диск. Чтобы переустановить Windows на своем ноутбуке, мне понадобилось около 160 ГБ, и это означало, что нужно уменьшить раздел LUKS. Вот как я уменьшил LUKS, чтобы освободить нераспределенное дисковое пространство для Windows.

Уменьшение LUKS с LVM

  1. Сначала вам нужно загрузиться с живого диска. (У меня это была флешка.)
  2. Теперь установите Partition Manager. (Для меня это было sudo apt-get install partitionmanager.
  3. Запустите Partition Manager с помощью sudo partitionmanager.
  4. Щелкните правой кнопкой мыши на зашифрованном разделе LUKS и нажмите “расшифровать”. (Это лишь расшифровывает его в памяти и НИКАК не удаляет шифрование LUKS. Мы хотим сохранить LUKS в целом.)
  5. Щелкните на вновь расшифрованном разделе в меню слева. Теперь вы увидите разделы, вложенные в контейнер LVM. Щелкните правой кнопкой мыши на разделе внутри и измените его размер на желаемый размер.
  6. Теперь нажмите “Применить” в верхнем правом углу окна. Это гарантирует, что содержимое раздела LUKS имеет правильный размер.
  7. Теперь нам нужно изменить размер самого раздела LUKS. Для этого нажмите на устройство, указанное в левом меню, которое содержит раздел LUKS.
  8. Щелкните правой кнопкой мыши на разделе LUKS, который вам нужно изменить, затем снова нажмите “Изменить размер/Переместить” и измените его размер, перетаскивая правую сторону панели раздела выше внутрь, пока оно не будет двигаться дальше. Partition Manager знает, насколько далеко оно может сжаться, так что вам не нужно манипулировать числами, чтобы заставить это работать.
  9. Теперь снова нажмите “Применить” в верхнем левом углу, и вы все готовы!

Кредит за первоначальную идею: Как изменить размер зашифрованного раздела Linux

Чтобы уменьшить зашифрованный раздел LUKS, смотрите мой другой ответ здесь вместо этого: Разблокируйте зашифрованный внешний раздел LUKS, уменьшите и измените тома LVM внутри него, а затем уменьшите внешний раздел LUKS с помощью комбинации 3 GUI: Gnome “Disks”, “blivet-gui” и “GParted”.

Как клонировать ваш жесткий диск (SSD или HDD) и расширить ваш зашифрованный раздел LUKS, чтобы заполнить новое полное дисковое пространство:

Все, что мне не хватало, это 2 команды:

sudo e2fsck -f /dev/mapper/system-root 
sudo resize2fs -p /dev/mapper/system-root 

Я нашел эту проблему довольно сложной, но вот шаги, которые я предпринял сегодня вечером (25 октября 2021 года), чтобы ее решить.

Шаги ниже были определены благодаря информации здесь: https://help.ubuntu.com/community/ResizeEncryptedPartitions#Detailed_resizing_.2BAH4_Enlarging_an_encrypted_partition, а также благодаря большинству других ответов здесь, а также многим пробам и ошибкам, и простому пониманию.

Тестировалось с использованием образа live USB Ubuntu 20.04.3 LTS, созданного с помощью mkusb, как описано здесь: https://www.howtogeek.com/howto/14912/create-a-persistent-bootable-ubuntu-usb-flash-drive/.

Оборудование, которое я использовал:

  1. PNY CS2130 2TB M.2 PCIe NVMe Gen3 x4 Внутренний твердотельный накопитель (SSD), Чтение до 3,500 – M280CS2130-2TB-RB, $200
  2. Sabrent USB 3.2 Type-C Enclosure без инструмента для M.2 PCIe NVMe и SATA SSD (EC-SNVE), $27

Краткое резюме:

Во время работы с Linux с внешнего живого USB выполните следующее:

  1. Внимательно склонируйте ваш диск с помощью ddrescue (см. ниже для полных подробностей).
  2. Используйте gparted, чтобы разблокировать ваш зашифрованный раздел LUKS и увеличить (изменить размер) его. Оставьте ~10% пространства в конце SSD неразмеченным для избыточного резервирования.
  3. Сейчас, когда разблокированная/расшифрованная файловая система НЕ смонтирована, выполните e2fsck, чтобы проверить и исправить диск. В следующей команде system-root – это то, что я вижу как наиболее логичный вариант, когда я ввожу sudo e2fsck -f /dev/mapper/ и затем нажимаю Tab Tab, чтобы оно перечислило все действительные варианты автозаполнения:
    sudo e2fsck -f /dev/mapper/system-root 
    
  4. Теперь запустите команду resize2fs, чтобы расширить расшифрованную файловую систему, чтобы заполнить полный размер вашего вновь расширенного зашифрованного раздела LUKS:
    sudo resize2fs -p /dev/mapper/system-root 
    
  5. Смонтируйте вашу разблокированную и вновь измененную файловую систему LUKS, чтобы убедиться, что она действительно увеличилась
    cd ~
    mkdir mnt
    sudo mount /dev/mapper/system-root mnt
    df -h   # смотрите новый размер файловой системы `/dev/mapper/system-root`
    # при желании размонтируйте
    sudo umount ~/mnt
    
  6. Перезагрузите и используйте ваш новый диск как обычно. df -h теперь покажет ваш увеличенный размер! Все будет работать так же, как и раньше, до клонирования диска!

Подробности и полные шаги:

Как клонировать ваш жесткий диск (SSD или HDD) и расширить ваш зашифрованный раздел LUKS, чтобы заполнить новое полное дисковое пространство:

1. склонировать ваш диск

Я предполагаю, что вы только что склонировали свой диск на более крупный диск, используя dd или ddrescue, как я объясняю в своих шагах на статье на своем личном сайте здесь: https://www.electricrcaircraftguy.com/2018/01/how-to-clone-your-hard-drive.html.

Короче говоря, во время загрузки с USB-накопителя Ubuntu (создайте один с помощью mkusb), выполните:

# Установить GNU ddrescue (gddrescue)
sudo add-apt-repository universe
sudo apt update
sudo apt install gddrescue

# Выполните клон.
# ВНИМАНИЕ ВНИМАНИЕ ВНИМАНИЕ: не перепутайте эти диски, или вы
# СТЕРЕте ВСЕ ДАННЫЕ на вашем оригинальном диске!!
# Клонирование 500 ГБ займет:
#  1. ~3~6 часов, используя внешний вращающийся USB 2.0 HDD
#  2. ~2,5~3 часа, используя внешний вращающийся USB 3.0 HDD
#  3. ~20 минут с использованием совершенно нового m.2 SSD в USB C внешнем корпусе
time sudo ddrescue -f -n /dev/FROM_DRIVE /dev/TO_DRIVE dd_rescue.log
# Попробуйте скопировать поврежденные сектора еще 3 раза; обычно это занимает несколько секунд
time sudo ddrescue -d -f -r3 /dev/FROM_DRIVE /dev/TO_DRIVE dd_rescue.log

Пример вывода первой команды клонирования выше:

ubuntu@ubuntu:~$ time sudo ddrescue -f -n /dev/sda /dev/sdb dd_rescue.log
GNU ddrescue 1.23
Нажмите Ctrl-C, чтобы прервать
     ipos:  512110 MB, не обрезано:        0 B,  текущая скорость:    558 MB/s
     opos:  512110 MB, не очищенно:        0 B,  средняя скорость:    410 MB/s
непробуемое:        0 B,  плохая секция:        0 B,    скорость ошибок:       0 B/s
  спасено:  512110 MB,   плохих областей:        0,        время выполнения:     20m 46s
процент спасенных:  100.00%, ошибки чтения:        0,  оставшееся время:         н/д
                              время с последнего успешного чтения:         н/д
Закончено                                     

real    21m2.331s
user    0m6.264s
sys 8m24.021s

2. Используйте gparted, чтобы увеличить ваш раздел

В то время как вы все еще загружаетесь с установочного носителя Ubuntu (вероятно, живого USB), откройте gparted, который является графическим интерфейсом GNU Partition Editor. Выберите ваш внешний /dev/TO_DRIVE в выпадающем меню в правом верхнем углу. Например, мой это /dev/sdb. Вы увидите нечто подобное на целевом диске после выполнения клонирования:

введите описание изображения здесь

Обратите внимание, что ddrescue автоматически клонировал и разделы, так как он выполняет прямую байтовую копию, что является копией более низкого уровня, чем файловая система даже.

Как видно выше, /dev/sdb3 показывает, что он [Зашифрован]. Это то, как выглядит зашифрованный раздел LUKS в gparted.

Щелкните правой кнопкой мыши на зашифрованном разделе и выберите Открыть шифрование:
введите описание изображения здесь

Введите свой пароль LUKS для разблокировки:
введите описание изображения здесь

Имя этого раздела теперь изменится с [Зашифрован] на [Зашифрован] lvm2 pv, что указывает на то, что он разблокирован. Точка монтирования теперь будет показана как system, как показано здесь:

введите описание изображения здесь

Вы можете щелкнуть правой кнопкой мыши на разделе и перейти в “Информация” для получения дополнительной информации.

Далее Щелкните правой кнопкой мыши на разделе и выберите Изменить размер/Переместить.

Как показано ниже, перетащите правую сторону графического прямоугольника раздела вправо, чтобы увеличить раздел. Если это SSD, оставьте около 10% от общего пространства диска НЕИСПОЛЬЗУЕМЫМ на дальнем правом конце для динамического резервирования. См. здесь, что это значит:

  1. https://en.wikipedia.org/wiki/Write_amplification#Over-provisioning
  2. https://www.seagate.com/tech-insights/ssd-over-provisioning-benefits-master-ti/

По сути, это улучшает скорость чтения и записи SSD и уменьшает износ, поскольку SSD автоматически будет использовать это неразмеченное пространство в качестве некоторого вида пространства подкачки на уровне прошивки SSD.

введите описание изображения здесь

Нажмите “Изменить размер/Переместить”, когда закончите, затем нажмите зеленую галочку в верхней части окна gparted, чтобы применить эти изменения (наведение курсора на зеленую галочку покажет “Применить все операции”).

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

введите описание изображения здесь

Обратите внимание, что он выполнил cryptsetup -v resize 'sdb3_crypt' и lvm pvresize -v '/dev/mapper/sdb3_crypt' за вас.

ВАЖНО: После завершения изменения размера раздела, если в любой момент с этого момента появится это предупреждение, нажмите кнопку “Исправить”:

введите описание изображения здесь

Предупреждение Libparted

Не все пространство, доступное для /dev/sdb, похоже, используется, вы можете исправить GPT, чтобы использовать все пространство (дополнительные 2906813952 блока) или продолжить с текущими настройками?

Исправить
Игнорировать

Теперь, когда вы изменили размер раздела, вы увидите, что он увеличился:

введите описание изображения здесь

Если вы в это время смонтируете этот разблокированный раздел LUKS (у меня есть инструкции по монтированию далее, если вам интересно), и выполните df -h, чтобы увидеть использование диска, то оно покажет, что смонтированный и расшифрованный диск еще не увеличился. Мы исправим это в следующий раз.

3. Замените диски, чтобы избежать дублирования UUID дисков

Поскольку вы только что сделали байтовую копию старого диска на новый диск, ваш новый диск теперь имеет идентичный номер UUID старого диска. Это приведет к проблемам с программными инструментами, которые пытаются изменить диски (включая blivet-gui, который теперь выдаст следующую ошибку, если вы попробуете его открыть). Итак, чтобы решить эту проблему, уберите старый диск и вставьте вновь клонированный новый диск на его место.

Пример ошибки, которую вы увидите, если попробуете открыть blivet-gui, например, в это время, из-за дублирования UUID дисков:

Ошибка

Произошла неизвестная ошибка. Blivet-gui будет завершен.
Не удалось инициализировать blivet:
Обнаружен дублирующий UUID ‘abcdef01-abcd-0123-abcd-0123456789ab’ для устройств: ‘sda1’ и ‘sdb1’.

Таким образом, если вы хотите, чтобы ваш клонированный диск стал новым внутренним диском, внесите это аппаратное изменение сейчас. Выключите компьютер (выключите с живого USB), разберите компьютер, извлеките старый диск и вставьте вновь клонированный диск на его место в качестве основного диска внутри компьютера.

Если вы выберете не делать это в это время, вам следует изменить UUID нового диска, чтобы он не совпадал со старым диском (поскольку вы только что сделали точную копию). Я не помню эти детали, так что позволю вам погуглить, если вам действительно нужно использовать оба диска одновременно в одном компьютере. Однако, если вы, как и я, убираете старый диск совсем, сделайте это, поставьте новый на его место, затем продолжайте к следующему шагу.

4. Увеличьте расшифрованную файловую систему так, чтобы она соответствовала вновь измененному размеру раздела

Теперь, когда ваш вновь клонированный диск находится в вашем компьютере в качестве основного диска, и оригинальный диск вовсе не подключен, загрузитесь обратно с живого USB.

Теперь у вас есть 2 варианта:

Вариант 1. [Новый, добавленный с 16 марта 2023 года–что я теперь рекомендую] Используйте GUI, чтобы увеличить объем LVM внутри раздела LUKS

В живом USB Ubuntu установите blivet-gui, следуя моим инструкциям здесь. Кратко:

sudo apt update
sudo add-apt-repository universe
sudo apt --fix-broken install
sudo apt update

# по желанию, если вы хотите попробовать другой ответ здесь, который также рекомендует этот инструмент
sudo apt install partitionmanager

sudo apt install curl

# На живом USB Ubuntu 22.04
echo 'deb http://download.opensuse.org/repositories/home:/vtrefny/xUbuntu_22.04/ /' | sudo tee /etc/apt/sources.list.d/home:vtrefny.list
curl -fsSL https://download.opensuse.org/repositories/home:vtrefny/xUbuntu_22.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_vtrefny.gpg > /dev/null
sudo apt update
sudo apt install blivet-gui

Итак:

  1. Используйте Disks, чтобы разблокировать внешний зашифрованный раздел LUKS: нажмите клавишу Windows и введите “disks”, чтобы открыть инструмент графического интерфейса gnome-disks. Щелкните на диске, который вас интересует, содержащем зашифрованный раздел LUKS, затем найдите зашифрованный раздел LUKS. Это то, что я называю “внешним разделом”, так как он содержит защищенные внутренние объемы LVM. Щелкните на значке разблокировки (он выглядит как незаблокированный замок) и введите ваш пароль шифрования, чтобы разблокировать раздел. Это займет несколько секунд для завершения разблокировки. Вы увидите разблокированные внутренние объемы “LVM2 PV”, которые теперь отображаются в графическом интерфейсе Disks под этим внешним разделом “LUKS”. Напоминаю: только инструмент Disks может правильно разблокировать раздел, чтобы работать с следующим шагом. Не разблокируйте его с помощью blivet-gui или GParted, иначе blivet-gui выдаст ошибку на следующем шаге.
  1. [Адаптировано из моих инструкций здесь] Используйте blivet-gui, чтобы увеличить и изменить внутренние объемы LVM внутри внешнего зашифрованного раздела LUKS: нажмите клавишу Windows и введите “blivet”, чтобы открыть инструмент blivet-gui. Обратите внимание: blivet-gui не должен быть уже открыт! Вы должны выполнить шаг разблокировки выше в “Disks” прежде чем открывать blivet-gui. Под жирным заголовком “LVM” находится мой логический объем vgubuntu, который я только что разблокировал с помощью инструмента Disks выше. Я хочу увеличить этот LVM, чтобы заполнить все пространство внешнего зашифрованного раздела LUKS. Вот что я вижу в blivet-gui, когда щелкаю на LVM vgubuntu и затем на вкладку “Логический вид”:

    1. введите описание изображения здесь

    2. Вы можете увидеть раздел vgubuntu-root 474.75 GiB, который я только что клонировал на этот новый диск, используя ddrescue выше. Давайте удалим логический раздел подкачки 980 Мбайт в этом LVM и увеличим главный LVM, чтобы занять все (980 Мбайт + 1.3 ТиБ) пространство, как показано ниже:

    3. Щелкните правой кнопкой мыши на логическом разделе подкачки 980 Мбайт и выберите “Удалить”. Щелкните правой кнопкой мыши на главном логическом разделе 474.75 ГиБ и выберите –> Изменить –> Изменить размер –> перетащите ползунок полностью вправо, чтобы изменить его размер, чтобы заполнить весь контейнер LVM внутри раздела LUKS.

      Нажмите “Изменить размер”, затем нажмите маленькую галочку в верхней части главного окна blivet-gui –> вам нужно будет “Подтвердить запланированные действия”, нажав “Ок”, чтобы завершить операцию. Это займет примерно 20 секунд. Будьте терпеливы. Когда завершится, нажмите “ОК” в окне, которое говорит “Все очередные действия были обработаны.”

  2. Теперь закройте blivet-gui, Disks и gparted (если он также был открыт). Затем откройте файловый менеджер nautilus и перейдите в “Другие местоположения” в левой панели –> нажмите на “1.9 TB Volume”, чтобы автоматически смонтировать его. Как только ваш новый диск смонтирован, выполните df -h в терминале, чтобы увидеть его новый размер и доступное пространство. Ниже приведен вывод, который я вижу сейчас. Файловая система, которую я только что расширил с помощью blivet-gui, находится в самом последнем ряду этого вывода и называется Файловая система /dev/mapper/vgubuntu-root, смонтированная в пути /media/ubuntu/abcdef01-abcd-0123-abcd-0123456789ab. Вы можете видеть, что у меня 412 ГБ использовано и 1.3 ТБ доступно! Я только что склонировал мой почти полный диск на 512 ГБ на новый диск на 2 ТБ, так что это имеет смысл!

    ubuntu@ubuntu:~$ df -h
    Файловая система                   Размер  Использовано Доступно Использование% Смонтировано на
    tmpfs                        3.2G   11M  3.2G   1% /run
    /dev/sda1                    3.6G  3.6G     0 100% /cdrom
    /cow                          16G  581M   16G   4% /
    /dev/disk/by-label/writable   11G   18M   11G   1% /var/log
    tmpfs                         16G  432K   16G   1% /dev/shm
    tmpfs                         5.0M  8.0K  5.0M   1% /run/lock
    tmpfs                         16G  324K   16G   1% /tmp
    tmpfs                         3.2G  184K  3.2G   1% /run/user/999
    /dev/mapper/vgubuntu-root    1.8T  412G  1.3T  25% /media/ubuntu/abcdef01-abcd-0123-abcd-0123456789ab
    

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

В основном просто выключите компьютер, извлеките USB с Ubuntu и загрузитесь обратно на внутренний диск как обычно! Вот и все!

Вы введете свой пароль шифрования LUKS при загрузке, как обычно. Вы войдете в свою учетную запись пользователя, как обычно. Все будет точно так же, как вы оставили, до клонирования, за исключением того, что df -h покажет, что ваша корневая файловая система, смонтированная на пути /, теперь намного больше!

Готово.

Вариант 2. [Оригинальный ответ] Используйте командную строку, чтобы увеличить объем LVM внутри раздела LUKS

Снова откройте gparted, чтобы расшифровать/разблокировать диск, как описано ранее:

Щелкните правой кнопкой мыши на зашифрованном разделе –> Открыть шифрование –> введите пароль.

Теперь выполните это, где system-root – это то, что я вижу как наиболее логичный вариант, когда я ввожу sudo e2fsck -f /dev/mapper/ и затем нажимаю Tab Tab, чтобы оно перечислило все действительные варианты автозаполнения.

# ВНИМАНИЕ ВНИМАНИЕ ВНИМАНИЕ: не выполняйте эту команду, пока этот раздел смонтирован!
# Она говорит, что порча файловой системы ПРОИЗОЙДЕТ. 
sudo e2fsck -f /dev/mapper/system-root 

Этот шаг e2fsck ОБЯЗАТЕЛЕН перед шагом resize2fs, который идет следующим. e2fsck проверяет и исправляет новую клонированную и расшифрованную (разблокированную) файловую систему. Пример вывода:

ubuntu@ubuntu:~$ sudo e2fsck -f /dev/mapper/system-root 
e2fsck 1.45.5 (07-Jan-2020)
Проход 1: Проверка индексов, блоков и размеров
Индекс 27012476 деревьев диадных (на уровне 2) мог бы быть уже.  Оптимизировать<y>? да
Индекс 27013750 деревьев диадных (на уровне 2) мог бы быть уже.  Оптимизировать<y>? да
Индекс 27191704 деревьев диадных (на уровне 2) мог бы быть уже.  Оптимизировать<y>? да
Проход 1E: Оптимизация деревьев диадных
Проход 2: Проверка структуры каталога
Проход 3: Проверка связи каталогов
Проход 4: Проверка подсчетов ссылок
Проход 5: Проверка информации об итогах групп

/dev/mapper/system-root: ***** ФАЙЛОВАЯ СИСТЕМА БЫЛА ИЗМЕНЕНА *****
/dev/mapper/system-root: 4106785/31121408 файлов (0.5% несмежных), 114717248/124455936 блоков

Теперь выполните команду resize2fs, чтобы увеличить расшифрованную файловую систему, чтобы она соответствовала полному размеру вашего вновь расширенного зашифрованного раздела LUKS:

# Эта команда может быть выполнена с учетом того, что этот раздел смонтирован, но если вы следуете
# моим инструкциям точно сейчас, он *не* будет смонтирован в это время.
sudo resize2fs -p /dev/mapper/system-root 

Пример вывода, если вы действительно его смонтировали, когда запускали:

ubuntu@ubuntu:~$ sudo resize2fs -p /dev/mapper/system-root 
resize2fs 1.45.5 (07-Jan-2020)
Файловая система на /dev/mapper/system-root смонтирована на /home/ubuntu/mnt; требуется онлайн изменение размера
старые_desc_blocks = 60, новые_desc_blocks = 211
Файловая система на /dev/mapper/system-root теперь длиной 441932800 (4k) блоков.

Теперь файловая система расширена! Далее мы смонтируем ее и выполним df -h, чтобы доказать это.

5. Смонтируйте расшифрованный (разблокированный) раздел и выполните df -h, чтобы доказать, что его файловая система расширена

Мы все еще работаем в живом USB, и мы уже разблокировали раздел LUKS с помощью пароля, используя gparted. Давайте смонтируем его, чтобы мы могли его прочитать и получить доступ к нему, если захотим!

cd ~
mkdir mnt
# Смонтируйте `/dev/mapper/system-root` в локальный ~/mnt каталог
sudo mount /dev/mapper/system-root mnt

Теперь выполните df -h, и вы увидите это. Обратите внимание, что мой диск теперь используется только на 28%, с 1.2 ТБ доступных!

$ df -h
Файловая система               Размер  Использовано Доступно Использование% Смонтировано на
/dev/mapper/system-root  1.7T  430G  1.2T  28% /home/ubuntu/mnt

Ранее он использовал 97% при всего 14 ГБ доступных!

Файловая система               Размер  Использовано Доступно Использование% Смонтировано на
/dev/mapper/system-root  467G  430G   14G  97% /home/ubuntu/mnt

При желании, размонтируйте файловую систему, выполнив:

sudo umount ~/mnt

6. Перезагрузите и используйте ваш новый диск как обычно

Выключите живой USB и отключите его от компьютера. Включите компьютер, чтобы загрузиться с вновь клонированного и теперь расширенного нового внутреннего диска. Введите свой пароль LUKS, когда появится такой запрос, как часть раннего процесса загрузки. Войдите, как обычно. Вы увидите, что ваша операционная система и файлы компьютера все в порядке, и все работает так, как будто ничего не изменилось!

Однако df -h показывает, что ваша новая корневая точка монтирования (/) имеет гораздо больше места!:

новый df -h:
Обратите внимание, что я использую 28% с 1.2 ТБ доступными!

Файловая система               Размер  Использовано Доступно Использование% Смонтировано на
/dev/mapper/system-root  1.7T  430G  1.2T  28% /

старый df -h:
Обратите внимание, что я использую 97% при всего 14 ГБ доступных!

Файловая система               Размер  Использовано Доступно Использование% Смонтировано на
/dev/mapper/system-root  467G  430G   14G  97% /

Дополнительные заметки

Чтобы использовать gparted для “извлечения и удаления” файловой системы LUKS, после разблокировки ее с помощью вашего пароля, выполните следующее:

  1. В gparted щелкните правой кнопкой мыши на разделе и выберите –> Деактивировать.
  2. Затем снова щелкните правой кнопкой мыши на разделе и выберите “Закрыть шифрование”.
  3. Теперь, насколько я знаю, вы можете безопасно отключить его.

Я не знаю, что произошло или почему, но где-то на пути gparted перестал показывать истинное использование раздела, когда разблокирован, и теперь НЕ показывает истинное использование раздела, когда разблокирован. Он теперь показывает полное 100% использование, даже когда разблокирован. Я думаю, что я сделал что-то странное. См. изображение ниже. Хотя все кажется работающим, так что, думаю, я могу игнорировать это? Если кто-то знает, почему он больше не показывает мое истинное использование диска для этого раздела, дайте мне знать!

введите описание изображения здесь

Ключевые слова: расширение зашифрованного раздела LUKS: как клонировать вашу ОС Ubuntu или жесткий диск и расширить ваш зашифрованный жесткий диск / файловую систему, когда закончите! избыточное резервирование SSD; клонирование SSD; клонирование HDD

Чтобы проверить пространство диска в linux. Смотрите, что vg-data диск составляет 3.3TB, мы увеличим его до 3.7TB

root@fs1 ~ # sudo df -hT
Файловая система                         Тип            Размер  Использовано Доступно Использование% Смонтировано на
udev                               devtmpfs        3.8G     0  3.8G   0% /dev
tmpfs                              tmpfs           779M  836K  779M   1% /run
/dev/mapper/vg--system-root        ext4            9.8G  4.3G  5.2G  46% /
tmpfs                              tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs                              tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs                              tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/vg--data-data          ext4            3.3T  3.1T   18G 100% /data
tmpfs                              tmpfs           779M     0  779M   0% /run/user/1022

Так что используем parted, чтобы увидеть таблицу разделов.

root@fs1 ~ # sudo parted /dev/sdb
GNU Parted 3.2
Используя /dev/sdb
Добро пожаловать в GNU Parted! Введите 'help', чтобы просмотреть список команд.
(parted) print free
Предупреждение: Не все пространство, доступное для /dev/sdb, похоже, используется. Вы можете исправить GPT, чтобы использовать все пространство (дополнительные 939524096 блоков) или продолжить с текущими настройками?
Исправить/Игнорировать? Исправить
Модель: HC Volume (scsi)
Диск /dev/sdb: 4080GB
Размер сектора (логический/физический): 512B/512B
Таблица разделов: gpt
Флаги диска:

Номер  Начало   Конец     Размер    Файловая система  Имя  Флаги
        17.4kB  1049kB  1031kB  Свободное пространство
 1      1049kB  3599GB  3599GB                     lvm
        3599GB  4080GB  481GB   Свободное пространство

Вы также можете использовать MiB, чтобы видеть это в точном размере. Я увеличу его до 3.7T примерно: 3890990MiB

resizepart используется для увеличения размера раздела. Так что здесь я увеличиваю раздел 1.

(parted) resizepart
Номер раздела? 1
Конец?  [3432447MiB]? 3890990MiB
(parted) print
Модель: HC Volume (scsi)
Диск /dev/sdb: 3891200MiB
Размер сектора (логический/физический): 512B/512B
Таблица разделов: gpt
Флаги диска:

Номер  Начало    Конец         Размер        Файловая система  Имя  Флаги
 1      1.00MiB  3890990MiB  3890989MiB                     lvm

(parted) unit MiB print free
Модель: HC Volume (scsi)
Диск /dev/sdb: 3891200MiB
Размер сектора (логический/физический): 512B/512B
Таблица разделов: gpt
Флаги диска:

Номер  Начало       Конец         Размер        Файловая система  Имя  Флаги
        0.02MiB     1.00MiB     0.98MiB     Свободное пространство
 1      1.00MiB     3890990MiB  3890989MiB                     lvm
        3890990MiB  3891200MiB  210MiB      Свободное пространство

Теперь вы можете видеть, что resizepart увеличивает sdb1 (раздел 1)

root@fs1 ~ # lsblk
NAME                  MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda                     8:0    0 76.3G  0 disk
└─sda3                  8:3    0 76.3G  0 part
  └─pv-crypt          254:0    0 76.3G  0 crypt
    ├─vg--system-swap 254:1    0    2G  0 lvm   [SWAP]
    └─vg--system-root 254:2    0   10G  0 lvm   /
sdb                     8:16   0  3.7T  0 disk
└─sdb1                  8:17   0  3.7T  0 part
  └─pv-data-crypt     254:3    0  3.3T  0 crypt
    └─vg--data-data   254:4    0  3.3T  0 lvm   /data
sr0                    11:0    1 1024M  0 rom

Чтобы увеличить зашифрованный раздел, работает команда cryptsetup resize.

root@fs1 ~ # sudo cryptsetup resize pv-data-crypt
root@fs1 ~ # lsblk
NAME                  MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda                     8:0    0 76.3G  0 disk
└─sda3                  8:3    0 76.3G  0 part
  └─pv-crypt          254:0    0 76.3G  0 crypt
    ├─vg--system-swap 254:1    0    2G  0 lvm   [SWAP]
    └─vg--system-root 254:2    0   10G  0 lvm   /
sdb                     8:16   0  3.7T  0 disk
└─sdb1                  8:17   0  3.7T  0 part
  └─pv-data-crypt     254:3    0  3.7T  0 crypt
    └─vg--data-data   254:4    0  3.3T  0 lvm   /data
sr0                    11:0    1 1024M  0 rom

Смотрите, как pv-data-crypt увеличивается до 3.7T. Теперь вам нужно увеличить размер pv.

muhammadshakeeb@fs1:~$ sudo pvs
  PV                        VG        Fmt  Attr PSize  PFree
  /dev/mapper/pv-crypt      vg-system lvm2 a--  76.29g 69.29g
  /dev/mapper/pv-data-crypt vg-data   lvm2 a--   3.27t     0
muhammadshakeeb@fs1:~$ sudo pvresize /dev/mapper/pv-data-crypt
  Физический объем "/dev/mapper/pv-data-crypt" изменен
  1 физический объем(ов) изменены или обновлены / 0 физический объем(ов) не изменены
muhammadshakeeb@fs1:~$ sudo pvs
  PV                        VG        Fmt  Attr PSize  PFree
  /dev/mapper/pv-crypt      vg-system lvm2 a--  76.29g   69.29g
  /dev/mapper/pv-data-crypt vg-data   lvm2 a--   3.71t <447.80g

Вы можете видеть, что размер PV теперь PFree использует и увеличивается с помощью lvextend, УВЕЛИЧЬте размер и используйте resize2fs

muhammadshakeeb@fs1:~$ sudo lvextend -l +100%FREE /dev/vg-data/data
  Размер логического тома vg-data/data изменен с 3.27 TiB (858110 расширений) до 3.71 TiB (972746 расширений).
  Логический том vg-data/data успешно изменен.
muhammadshakeeb@fs2:~$ sudo resize2fs /dev/vg-data/data
resize2fs 1.44.5 (15-Dec-2018)
Файловая система на /dev/vg-data/data смонтирована на /data; требуется онлайн изменение размера
старые_desc_blocks = 419, новые_desc_blocks = 475
Файловая система на /dev/vg-data/data теперь длиной 996091904 (4k) блоков.

muhammadshakeeb@fs2:~$ sudo lsblk
NAME                  MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda                     8:0    0 76.3G  0 disk
└─sda3                  8:3    0 76.3G  0 part
  └─pv-crypt          254:0    0 76.3G  0 crypt
    ├─vg--system-swap 254:1    0    2G  0 lvm   [SWAP]
    └─vg--system-root 254:2    0   5G  0 lvm   /
sdb                     8:16   0  3.7T  0 disk
└─sdb1                  8:17   0  3.7T  0 part
  └─pv-data-crypt     254:3    0  3.7T  0 crypt
    └─vg--data-data   254:4    0  3.7T  0 lvm   /data
sr0                    11:0    1 1024M  0 rom

Чтобы расширить, используйте команду, чтобы изменить размер раздела cryptsetup resize.

sudo cryptsetup resize /dev/mapper/opened-volume

sudo pvresize /dev/mapper/pv

sudo lvresize /dev/mapper/lv

sudo e2fsck -f /dev/mapper/lv

sudo resize2fs /dev/mapper/lv

Это сработало для меня.

Ответ или решение

Для расширения LUKS-зашифрованного раздела и использования всего пространства на вашем новом диске, выполните следующие шаги. Данный процесс включает использование утилит для работы с LUKS и LVM, а также некоторых команд для изменения размера файловой системы. Перед началом убедитесь, что у вас есть резервная копия важных данных и у вас есть доступ к Live USB с дистрибутивом Linux (например, Ubuntu).

Основные шаги для расширения LUKS-зашифрованного раздела:

  1. Откройте LUKS-раздел:

    sudo cryptsetup luksOpen /dev/sda2 crypt-volume
  2. Используйте parted для изменения размера раздела:
    Запустите parted для вашего диска:

    sudo parted /dev/sda

    Определите номер раздела и измените его размер, чтобы он занимал все доступное место. Например, чтобы расширить второй раздел:

    (parted) resizepart 2 100% 

    Примечание: Убедитесь, что изменяете именно тот раздел, который нужно. После внесения изменений выйдите из parted:

    (parted) quit
  3. Затем деактивируйте группу Volume Group (VG):

    sudo vgchange -a n fedora_chocbar
  4. Закройте зашифрованный раздел:

    sudo cryptsetup luksClose crypt-volume
  5. Снова откройте LUKS-раздел:

    sudo cryptsetup luksOpen /dev/sda2 crypt-volume
  6. Измените размер LUKS-раздела:

    sudo cryptsetup resize crypt-volume
  7. Активируйте группу Volume Group (VG):

    sudo vgchange -a y fedora_chocbar
  8. Измените размер физического тома (PV):

    sudo pvresize /dev/mapper/crypt-volume
  9. Измените размер логического тома (LV):
    Для расширения определенного логического тома, например home:

    sudo lvresize -l +100%FREE /dev/fedora_chocbar/home

    Примечание: Вы можете заменить home на имя логического тома, который хотите изменить.

  10. Проверьте файловую систему:
    Прежде чем изменять размер файловой системы, необходимо запустить проверку:

    sudo e2fsck -f /dev/mapper/fedora_chocbar-home
  11. Измените размер файловой системы:
    Наконец, увеличьте размер файловой системы, чтобы она использовала доступное пространство:

    sudo resize2fs /dev/mapper/fedora_chocbar-home

Завершение:

После выполнения всех указанных шагов, ваш LUKS-зашифрованный раздел должен быть расширен до максимального размера, а логический том будет занимать все свободное место. Не забудьте перезагрузить систему и проверить размер вашей раздела с помощью команды df -h для подтверждения успешного выполнения операций.

Если в ходе выполнения возникли проблемы, рекомендуется перепроверить команды и убедиться в наличии резервных копий данных перед любыми операциями с разделами и файловыми системами.

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

Капча загружается...