Общее описание действий
- Для того, чтобы увеличить размер дискового раздела, на диске должно иметься свободное место, не занятое другими дисковыми разделами;
- Если свободного места на диске нет - то нужно либо удалить, либо уменьшить другие дисковые разделы;
- Для того, чтобы уменьшить размер дискового раздела в нём должно быть свободное место, не занятое файловыми системами. При этом свободное место не должно быть фрагментировано, и находиться в конце дискового разделе. Штатный инстре;
- Если свободного места в дисковом разеделе нет - то нужно либо удалить, либо уменьшить файловые системы;
- Для того чтобы уменьшить размер файловой системы в ней должно быть свободное место.
- Если в файловой системе свободного места нет (ненормальная ситуация) либо свободного места недостаточно, нужно удалить или заархивировать файлы, находящиеся в этой файловой системе.
Далее в качестве базовой расматривается умеренно-неудобная ситуация, возникающая при эксплуатации компьютера со стандартно установленной ОС:
- Свободного места на диске нет;
- Есть дисковый раздел подкачки (swap). В современных системах наличие выделенного дискового раздела для области подкачки является не более чем традицией, так как для подкачки можно в любой момент использовать файлы (см. Область подкачки (swap): особенности применения и обеспечения безопасности). Таким образом, раздел swap можно безболезненно удалить, однако в рассматриваемой конфигурации задача усложняется тем, что этот раздел находится на LVM-разделе;
- Предполачается, что на находящейся в эксплуатации машине свободного места в файловых системах мало, и уменьшать их размер нерационально. Возможность оптимизации процесса за счёт уменьшения файловых систем и, соответсвенно, дисковых разделов рассмотрена отдельно.
Исходная конфигурация
Для написания статьи использовался компьютер со следующими параметрами:
- Размер единственного жесткого диска 32ГБ;
- При установке ОС:
- Выбрано имя машины lvs (используется в именовании LVM-устройств);
- Была выбрана установка с использованием LVM;
- Была принята стандартная конфигурация разметки диска с вынесением каталога /home в отдельный дисковый раздел и с созданием области подкачки (swap);
В итоге получена следующая конфигурация:
Физические дисковые разделы
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 32G 0 disk
├─sda1 8:1 243M 0 part /boot
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 31,3G 0 part
где:
- sda1 - дисковый раздел с каталогом /boot, размер 243МБ
- sda2 - неиспользованное простанство для вырвнивания начала следующего дискового раздела;
- sda5 - дисковый раздел LVM, имеющий размер 31.3ГБ, на котором находятся дисковые разделы LVM, содержащие каталоги /root, /home и область подкачки (командой lsblk LVM-разделы не отображаются).
Физические тома LVS
Имеется один физический том LVS:
PV VG Fmt Attr PSize PFree
/dev/sda5 lvs-vg lvm2 a-- 31,76g 0
Имеется одна группа томов LVS:
VG #PV #LV #SN Attr VSize VFree
lvs-vg 1 3 0 wz--n- 31,76g 0
Имеется три логических тома LVS:
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home lvs-vg -wi-ao---- 16,68g
root lvs-vg -wi-ao---- 11,08g
swap_1 lvs-vg -wi-ao---- 4,00g
При этом более информативная команда просмотра информации о физических томах:
Wiping internal VG cache
Wiping cache of LVM-capable devices
PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges
/dev/sda5 lvs-vg lvm2 a-- 31,76g 0 0 2836 root 0 linear /dev/sda5:0-2835
/dev/sda5 lvs-vg lvm2 a-- 31,76g 0 2836 1023 swap_1 0 linear /dev/sda5:2836-3858
/dev/sda5 lvs-vg lvm2 a-- 31,76g 0 3859 4271 home 0 linear /dev/sda5:3859-8129
Сценарий действий
Если компьютер уже не загружается, все дальнейшие действия могут быть выполнены после загрузки с live-USB (см. статью Создание загрузочных носителей USB flash drive а также статью Создание собственных Live-CD/Live-USB в Astra Linux). Если компьютер работоспособен, некоторые предварительные действия лучше выполнить из обычной сессии.
Предварительные действия
Перед выполнением дальнейших действий сделать и проверить резервную копию данных.
Проверить и отключить область подкачки:
sudo swaponNAME TYPE SIZE USED PRIO
/dev/dm-1 partition 4G 0B -2
Или просто отключить все области подкачки:sudo swapoff /dev/dm-1
sudo swapoff -aУдалить раздел подкачки из таблицы монтирования (можно просто закомментировать соответствующую строчку в файле /etc/fstab):
#/dev/mapper/lvs--vg-swap_1 none swap sw 0 0
Удалить LVM-раздел swap_1:
sudo lvremove /dev/`hostname`-vg/swap_1Do you really want to remove active logical volume lvs-vg/swap_1? [y/n]: y
Logical volume "swap_1" successfully removed
Если всё сделано правильно, то команда pvs покажет наличие свободного места в "середине" дискового раздела:
Wiping internal VG cache
Wiping cache of LVM-capable devices
PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges
/dev/sda5 lvs-vg lvm2 a-- 31,76g 4,00g 0 2836 root 0 linear /dev/sda5:0-2835
/dev/sda5 lvs-vg lvm2 a-- 31,76g 4,00g 2836 1023 0 free
/dev/sda5 lvs-vg lvm2 a-- 31,76g 4,00g 3859 4271 home 0 linear /dev/sda5:3859-8129
Дефрагментация дискового LVM-раздела
Если ваш дисковый раздел не фрагментирован, этот шаг можно пропустить, и перейти к следующему.
Если ваши файловые системы не сильно заполнены, то дефрагментацию можно существенно ускорить уменьшив дисковые разделы.
В некоторых случаях дефрагментация может быть выполнена без использования live-USB и без перезагрузки машины. В частности, в рассматриваемом примере дефрагментация выполняется за счет перемещения дискового раздела /home, и для выполнения дефрагментации можно:
- Закрыть все пользовательские графические сессии;
- Войти в консольную сессию (Ctrl+Alt+F1);
Освободить домашний каталог, перейдя в коневой каталог:
cd /Отмонтировать раздел /home:
sudo umount /homeДалее работать в консольной сессии или вернуться в графическую сесиию (Ctrl+Alt+F7) (при этом будет выдано передупреждение, что работа выполняется во временном домашнем каталоге);
- Выполнить
По завершению работ снова примонтировать раздел:
sudo mount /home
Это может сохранить работоспособность сервисных служб во время выполнения рабоит, обеспечив непрерывность их работы.
Если требуется переместить разел /root использование live-USB обязательно.
Если размер свободного места больше, чем размер переносимого LVM-раздела, то устранить фрагментацию можно одной командой:
В рассматриваемом случае размер свободного места меньше размера переносимого LVM-раздела, и команда pvmove сообщит об этом:
Insufficient free space: 4271 extents needed, but only 1023 available
Unable to allocate mirror extents for lvs-vg/pvmove0.
Failed to convert pvmove LV to mirrored
sudo pvmove --alloc anywhere /dev/sda5:3859-4859 /dev/sda5:2836-3836
В итоге:
sudo pvs -v --segments /dev/sda5
Wiping internal VG cache
Wiping cache of LVM-capable devices
PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges
/dev/sda5 lvs-vg lvm2 a-- 31,76g 4,00g 0 2836 root 0 linear /dev/sda5:0-2835
/dev/sda5 lvs-vg lvm2 a-- 31,76g 4,00g 2836 1001 home 0 linear /dev/sda5:2836-3836
/dev/sda5 lvs-vg lvm2 a-- 31,76g 4,00g 3837 1023 0 free
/dev/sda5 lvs-vg lvm2 a-- 31,76g 4,00g 4860 3270 home 1001 linear /dev/sda5:4860-8129
Далее:
sudo pvmove --alloc anywhere /dev/sda5:5861-6861 /dev/sda5:4838-5838
sudo pvmove --alloc anywhere /dev/sda5:6862-7862 /dev/sda5:5839-6839
sudo pvmove --alloc anywhere /dev/sda5:7863- /dev/sda5:6840-
sudo pvs -v --segments /dev/sda5
Wiping internal VG cache
Wiping cache of LVM-capable devices
PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges
/dev/sda5 lvs-vg lvm2 a-- 31,76g 4,00g 0 2836 root 0 linear /dev/sda5:0-2835
/dev/sda5 lvs-vg lvm2 a-- 31,76g 4,00g 2836 4271 home 0 linear /dev/sda5:2836-7106
/dev/sda5 lvs-vg lvm2 a-- 31,76g 4,00g 7107 1023 0 free
Уменьшение размера физического дискового раздела
При наличии правильно выделенного свободного места дисковый раздел (в том числе - LVM) можно уменьшить используя входящий в состов live-USB графический инструмент gparted ("Пуск" - "Системные" - "Редактор разделов Gparted").