Вопрос или проблема
Мне нужно изменить размер LVM на LUKS на Debian, чтобы забрать место из /home
и отдать его /var
.
└─sda5 8:5 0 931G 0 part
└─sda5_crypt 253:0 0 931G 0 crypt
├─my-vg-root 253:1 0 23.3G 0 lvm /
├─my-vg-var 253:2 0 9.3G 0 lvm /var
├─my-vg-swap_1 253:3 0 976M 0 lvm [SWAP]
├─my-vg-tmp 253:4 0 1.9G 0 lvm /tmp
└─my-vg-home 253:5 0 802.8G 0 lvm /home
Я следую учебнику ResizeEncryptedPartitions:
- Загрузите рабочий стол, Live CD. Установите и настройте инструменты (
lvm2
иcryptsetup
). - Уменьшите файловую систему (root) с помощью
resize2fs
. - Уменьшите (root) (LVM) логический том с помощью
lvreduce
. - Уменьшите (LVM) физический том с помощью
pvresize
. - Уменьшите криптографический том с помощью
cryptsetup
. - Перезагрузите компьютер, чтобы уменьшить раздел, хранящий криптографический том с помощью
fdisk
.
Учебник продолжается, инструктируя наоборот,
Детальное изменение размера ~ Увеличение зашифрованного раздела Этот раздел будет короче, фактически он является обратным вышеописанному.
Мой вопрос. Нужно ли мне уменьшать (LVM) физический том #4 и уменьшать криптографический том #5, если я передаю это пространство другой секции?
Учебник дает причину для изменения размера LVM физического тома
Измените размер вашего (LVM) физического тома. Физический том, используемый LVM, может стать “фрагментированным”, потому что (LVM) логические тома внутри (LVM) физического тома не всегда находятся в порядке. Инструмента дефрагментации не существует, поэтому, возможно, вам придется вручную перемещать логические разделы (резервное копирование данных, удаление (LVM) логического тома, повторное создание заменяющего (LVM) логического тома, восстановление данных из резервной копии).
Я думаю уменьшить /home
до 800г-200г, а /var
увеличить до 9-200г и оставить 400г свободными, чтобы можно было переместиться позже в зависимости от того, как они обе заполнятся.
Я понял идею — удалить мои swap и /tmp
LVM разделы, затем изменить размер var. Думаю, статья кажется более общей, поэтому я спрашиваю здесь о моем конкретном случае.
Также на SE: Изменение размера существующего LVM раздела и добавление пространства к другому LVM разделу
Вам не нужно изменять размер физического тома LVM или устройства LUKS или раздела, если все, что вы хотите, — это “переместить” немного пространства из логического тома /home
в логический том /var
, вы будете работать только на уровне логических томов.
Ваши шаги будут следующими (с LiveCD, сначала нужно будет разблокировать зашифрованный диск либо из файлового менеджера, либо вручную с помощью cryptsetup):
lvreduce --resizefs -L 200g my-vg/home
чтобы уменьшить /home
до 200 GiB, --resizefs
позаботится о изменении размера файловой системы и
lvextend --resizefs -L 200g my-vg/var
чтобы увеличить /var
до 200 GiB. И всё.
Как всегда, что-то может пойти не так при операции с хранилищем, поэтому рекомендуется делать резервное копирование ваших данных.
Ответ или решение
Для успешного решения задачи по переносу пространства между разделами LVM, зашифрованными с помощью LUKS, необходимо строго следовать последовательности действий, которая не только обеспечит безопасность данных, но и позволит избежать ошибок, которые могут возникнуть при работе с чувствительной информацией. В данной ситуации ваша задача заключается в уменьшении объема логического раздела /home
и увеличении объема логического раздела /var
на вашей Debian системе.
Теория
Сначала разберемся с теорией: LVM (Logical Volume Manager) позволяет динамически изменять размеры логических томов на физических томах. LUKS (Linux Unified Key Setup) обеспечивает шифрование данных. При выполнении задач изменения объема разделов данных, зашифрованных с помощью LUKS, требуется предварительное расшифровывание томов. Вам необходимо понимать слойность файловой системы: физический том содержит шифрованный раздел LUKS, поверх которого создаются логические тома LVM, где располагаются файловые системы.
Цель состоит в уменьшении /home
и увеличении /var
, не затрагивая физический том и зашифрованный контейнер. Теоретически, изменения выполняются только на уровне логических томов, что означает, что физический размер раздела LVM и самого контейнера LUKS остается прежним и не требует изменений.
Пример
Рассмотрим, как бы выглядел процесс в реальной жизни. У вас есть следующие шаги:
-
Загрузитесь с LiveCD: Это необходимо, чтобы избежать монтирования системных разделов во время выполнения операций. Используйте Live-систему, которая поддерживает LVM и LUKS, например Live-дистрибутив на базе Debian или Ubuntu.
-
Расшифруйте диск: Используйте
cryptsetup
для расшифровки зашифрованного тома. Команды будут выглядеть следующим образом:sudo cryptsetup open /dev/sda5 sda5_crypt
-
Уменьшение размера файловой системы и логического тома
/home
:- Перед выполнением любых операций рекомендуется создать резервные копии данных. Вы можете воспользоваться командами
rsync
илиtar
. - Убедитесь, что
/home
отмонтирован, если он был смонтирован:sudo umount /dev/my-vg/home
- Затем уменьшите размер файловой системы с помощью
resize2fs
:sudo resize2fs /dev/my-vg/home 200G
Убедитесь, что размер, на который вы уменьшаете, не меньше текущего использования диск.
- После этого уменьшите логический том:
sudo lvreduce -L 200G /dev/my-vg/home
- Перед выполнением любых операций рекомендуется создать резервные копии данных. Вы можете воспользоваться командами
-
Увеличение размера логического тома и файловой системы
/var
:- Увеличьте размер логического тома до желаемого размера:
sudo lvextend -L +desired_size /dev/my-vg/var
Не забудьте указать нужный размер в параметре
desired_size
. - Затем измените размер файловой системы:
sudo resize2fs /dev/my-vg/var
- Увеличьте размер логического тома до желаемого размера:
Применение
Такой подход позволяет избежать ненужных рисков, связанных с изменением физических границ LUKS-контейнера и физического тома LVM. Поскольку вся операция осуществляется на уровне логических томов, вы можете свободно перераспределять пространство между различными разделами файловой системы.
Кроме того, технологии LVM и LUKS обеспечивают достаточную гибкость для системных администраторов, управляя дисковым пространством без отключения сервера или перерывов в обслуживании, что особенно актуально в корпоративной среде.
Постоянно помните, что в случае работы с данными важна их безопасность, и прежде чем проводить операции, всегда необходимо создавать актуальные резервные копии. Это позволит минимизировать потенциальные потери данных в случае сбоев в процессе управления дисковыми ресурсами.
В заключение, необходимо отметить важность тестирования всех действий в вашей тестовой среде, прежде чем применять их в рабочей. Это поможет избежать критических ошибок, которые могут возникнуть из-за специфических особенностей вашего окружения.