Оглавление |
---|
Предупреждение |
---|
Перед выполнением действий, описанных в настоящей статье настоятельно рекомендуется сделать и проверить резервную копию всех данных. Сделав резервную копию данных следует оценить трудозатраты, необходимые для выполнения описанных ниже действий и время, для этого необходимое, и подумать не проще ли применить альтернативный вариант: переразметить диск и восстановить систему из сделанной резервной копии. Если есть сомнения в надёжности электропитания лучше сразу перейти к восстановлению из резервных копий, так как отключение электропитания в процессе изменения дисковых разделов с высокой вероятностью приведёт к потере содержащихся там данных (см. также Средства восстановления повреждённых и удалённых данных). Альтернативы может не быть если действия должны быть выполнены на сервере, не допускающем прерывания обслуживания , однако применимость настоящей статьи в такой ситуации зависит от конкретной конфигурации сервера, и общего рецепта тут нет. |
Информация |
---|
Так как дисковый раздел boot не может находиться под управлением LVM настоящая статья применима только к физическим дисковым разделам. Для дисковых разделов (файловых систем), находящихся под управлением LVM см. статью Увеличение размера файловой системы, расположенной в логическом томе LVM. См. также: |
Информация | ||
---|---|---|
| ||
|
Предупреждение |
---|
Перед выполнением действий, описанных в настоящей статье настоятельно рекомендуется сделать и проверить резервную копию всех данных. Сделав резервную копию данных следует оценить трудозатраты, необходимые для выполнения описанных ниже действий и время, для этого необходимое, и подумать не проще ли применить альтернативный вариант: переразметить диск и восстановить систему из сделанной резервной копии. Если есть сомнения в надёжности электропитания лучше сразу перейти к восстановлению из резервных копий, так как отключение электропитания в процессе изменения дисковых разделов с высокой вероятностью приведёт к потере содержащихся там данных (см. также Средства восстановления поврежденных и удаленных данных). Альтернативы может не быть если действия должны быть выполнены на сервере, не допускающем прерывания обслуживания , однако применимость настоящей статьи в такой ситуации зависит от конкретной конфигурации сервера, и общего рецепта тут нет. |
Информация |
---|
Настоящая статья также может быть применена для изменения размеров не только загрузочного дискового раздела, но и любых дисковых разделов. |
Общее описание действий
- Уменьшить физический том LVM чтобы освободить место для нового раздела boot:
- Для того, чтобы создать новый физический раздел, на диске должно иметься свободное место, не занятое другими физическими дисковыми разделами.
- Если свободного места на диске нет - то нужно либо удалить, либо уменьшить другие физические дисковые разделы.
- Для того, чтобы уменьшить размер физического дискового раздела в нём должно быть свободное место, не занятое файловыми системами, а в случае разделов, являющихся физическими томами LVM — место, не занятое логическими томами LVM.
При этом свободное место не должно быть фрагментировано, и должно находиться в конце дискового раздела. В случае обычных дисковых разделов это не проблема, но на физическом томе LVM могут размещаться несколько логических томов, поэтому при использовании LVM может понадобиться дефрагментировать физический том LVM. - Если свободного места в физическом дисковом разделе нет — то нужно уменьшить размещенную там файловую систему (для LVM - уменьшить или удалить логические тома LVM).
- Для того чтобы уменьшить размер файловой системы (логического тома LVM) в ней (в нем) должно быть свободное место.
- Если в файловой системе свободного места нет (ненормальная ситуация) либо свободного места недостаточно (реальная ситуация для находящегося в эксплуатации компьютера), нужно удалить или заархивировать файлы, находящиеся в этой файловой системе. Если места нет в логическом томе LVM - нужно уменьшить находящуюся в нем файловую систему.
- Создать и настроить новый дисковый раздел boot.
Далее в качестве базовой рассматривается умеренно-неудобная ситуация, возникающая при эксплуатации компьютера со стандартно установленной ОС:
- Свободного места на физическом диске нет.
- Свободного места в дисковом разделе, который нужно уменьшить, тоже нет, но зато в нем есть логический том для вытеснения страниц (область подкачки, swap). В современных системах наличие выделенного дискового раздела для области подкачки является не более чем традицией, так как для этой цели можно в любой момент использовать файлы (см. Область подкачки (swap): особенности применения и обеспечения безопасности). Таким образом, логический том области подкачки можно безболезненно удалить, однако в рассматриваемой конфигурации задача усложняется тем, что в результате удаления логического тома подкачки возникает фрагментация физического тома LVM.
- Предполагается, что на находящейся в эксплуатации машине свободного места в файловых системах мало, и уменьшать их размер нерационально. Возможность оптимизации процесса за счет уменьшения файловых систем и, соответственно, уменьшения логических томов рассмотрена отдельно.
Исходная конфигурация
Для написания статьи использовался компьютер со следующими параметрами:
- Размер единственного жесткого диска 32ГБ.
- При установке ОС:
- Выбрано имя машины lvs (используется в именовании LVM-устройств).
- Выбрана установка с использованием LVM.
- Принят один из вариантов стандартной разметки диска со следующими параметрами, заданными при установке ОС:
- Каталог /boot размещен в отдельном дисковом разделе /dev/sda1 с файловой системой ext2 и размером 243МБ. С учётом того, что раздел boot не может находиться в томах LVM - наличие отдельного дискового раздела boot становится при использовании LVM обязательным.
- Все оставшееся место на диске занято расширенным (extended) дисковым разделом sda2, содержащим:
- Дисковый раздел sda5, он же физический том LVM. Дисковый раздел sda5 занимает все место в расширенном дисковом разделе sda2 и содержит все логические тома LVM, занимающие все место в этом разделе sda5:
- каталог /root размещен в отдельном логическом томе LVM (том root);
- каталог /home размещен в отдельном логическим томе LVM (том home);
- область подкачки (swap) размещена в отдельном логическом томе LVM (том swap_1).
- Дисковый раздел sda5, он же физический том LVM. Дисковый раздел sda5 занимает все место в расширенном дисковом разделе sda2 и содержит все логические тома LVM, занимающие все место в этом разделе sda5:
В итоге получена следующая конфигурация:
Физические дисковые разделы
Command | ||
---|---|---|
| ||
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, swap_1, содержащие, соответственно, каталоги /root, /home и область подкачки (в данном случае командой lsblk логические тома LVM не отображаются, но, в зависимости от используемой версии ОС, могут отображаться).
Физические тома LVS
Имеется один физический том LVS, он же физический дисковый раздел sda5:
Command | ||
---|---|---|
| ||
|
Группы томов LVS
Имеется одна группа томов LVS:
Command | ||
---|---|---|
| ||
VG #PV #LV #SN Attr VSize VFree lvs-vg 1 3 0 wz--n- 31,76g 0 |
Логические тома LVS
Имеется три логических тома LVS:
Command | ||
---|---|---|
| ||
|
При этом более информативная команда просмотра информации о физических томах:
Command | ||
---|---|---|
| ||
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 |
Показывает, что:
Предупреждение |
---|
Логический том swap_1 расположен между томами root и home, то есть просто удалив этот том уменьшить физический раздел не получится, так как свободное место будет находиться между существующими томами. |
Сценарий действий
Информация |
---|
Если компьютер уже не загружается, все дальнейшие действия могут быть выполнены после загрузки с live-USB (см. статью Создание загрузочных носителей USB flash drive а также статью Создание собственных ALP-live образов (Live-CD/Live-USB) в Astra Linux), а также статью Восстановление содержимого каталога /boot при невозможности нормальной загрузки. Если компьютер работоспособен, то большинство действий можно выполнить из обычной сессии, не останавливая работу компьютера. |
Предварительные действия
Предупреждение |
---|
Перед выполнением дальнейших действий сделать и проверить резервную копию данных. |
Проверить и отключить область подкачки:
Command Title sudo swapon NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 4G 0B -2
Command sudo swapoff /dev/dm-1
Или просто отключить все области подкачки:
Command sudo swapoff -a
Удалить раздел подкачки из таблицы монтирования (можно просто закомментировать соответствующую строчку в файле /etc/fstab):
Блок кода #/dev/mapper/lvs--vg-swap_1 none swap sw 0 0
Удалить логический том swap_1:
Command Title sudo lvremove /dev/`hostname`-vg/swap_1 Do you really want to remove active logical volume lvs-vg/swap_1? [y/n]: y
Logical volume "swap_1" successfully removed
Опционально, особенно если в дальнейшем не планируется использовать раздел подкачки, для того, чтобы при перезагрузках не выдавались задерживающие перезагрузку диагностические сообщения о не найденном разделе подкачки, в файле /etc/initramfs-tools/conf.d/resume закомментировать строчку:
Блок кода #RESUME=/dev/mapper/lvs--vg-swap_1
после чего выполнить команды:
Command sudo update-initramfs -t -u -k `uname -r`
sudo update-grubЕсли раздел подкачки будет восстановлен - то раскомментировать эту строчку и повторно выполнить указанные команды.
Если всё сделано правильно, то команда pvs покажет наличие свободного места в "середине" физического тома:
Command | ||
---|---|---|
| ||
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 |
То есть, том фрагментирован, свободное место имеет размер 1023 блока, логический том home имеет размер 4271 блок, соответственно, размер логического тома home больше, чем размер доступного свободного места.
Дефрагментация физического тома LVM
Если физический том LVM не фрагментирован, этот шаг можно пропустить, и перейти к следующему.
Если файловые системы не сильно заполнены, то дефрагментацию можно существенно ускорить уменьшив логические тома (см. далее "Оптимизация").
Информация | ||||||
---|---|---|---|---|---|---|
В некоторых случаях дефрагментация может быть выполнена без использования live-USB и без перезагрузки машины. В частности, в рассматриваемом примере дефрагментация выполняется за счет перемещения логического тома /home, и для выполнения дефрагментации можно:
Таким приёмом можно воспользоваться, чтобы сохранить функционирование сетевых сервисов, обеспечив непрерывность их работы. Однако таким способом невозможно переместить том root и, если требуется переместить том root, использование live-USB обязательно. |
Если размер свободного места больше, чем размер переносимого логического тома LVM, то устранить фрагментацию можно одной командой:
Command |
---|
sudo pvmove --alloc anywhere /dev/sda5:XXXX+YYY /dev/sda5:ZZZZ+YYY |
где ХХХХ+YYY - диапазон блоков переносимого тома (см. вывод команды sudo pvs -v --segmens выше), а ZZZZ+YYY - диапазон блоков, куда будет перемещён том (подробнее см. в разделе "Оптимизация").
В рассматриваемом случае размер свободного места меньше размера переносимого логического раздела LVM, и команда pvmove сообщит об этом:
Command | ||
---|---|---|
| ||
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 |
В таком случае перенос логического раздела можно выполнить по частям, указывая какие диапазоны блоков куда переносить. В рассматриваемом примере размер свободного места 1023 блока, и удобно переносить по тысяче блоков:
Command |
---|
sudo pvmove --alloc anywhere /dev/sda5:3859+1000 /dev/sda5:2836+1000 |
В итоге:
Информация | ||
---|---|---|
| ||
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 |
Информация | ||
---|---|---|
| ||
|
Общее описание действий
- Уменьшаем физический том LVM чтобы освободить место для нового раздела boot:
- Для того, чтобы увеличить размер физического дискового раздела, на диске должно иметься свободное место, не занятое другими физическими дисковыми разделами;
- Если свободного места на диске нет - то нужно либо удалить, либо уменьшить другие физические дисковые разделы;
- Для того, чтобы уменьшить размер физического дискового раздела в нём должно быть свободное место, не занятое файловыми системами, а в случае дисков LVM - не занятое логическими томами.
При этом свободное место не должно быть фрагментировано, и должно находиться в конце дискового разделе, поэтому при использовании LVM может понадобиться дефрагментировать физический том LVM; - Если свободного места в физическом дисковом разеделе нет - то нужно уменьшить размещённую там файловую систему (уменьшить или удалить логические тома LVM);
- Для того чтобы уменьшить размер файловой системы (логического тома LVM) в ней (в нём) должно быть свободное место.
- Если в файловой системе свободного места нет (ненормальная ситуация) либо свободного места недостаточно, нужно удалить или заархивировать файлы, находящиеся в этой файловой системе.
Если места нет в логическом томе LVM - нужно уменьшить находящуюся в нём файловую систему.
- Создаём и настраиваем новый дисковый раздел boot.
Далее в качестве базовой расматривается умеренно-неудобная ситуация, возникающая при эксплуатации компьютера со стандартно установленной ОС:
- Свободного места на диске нет;
- Есть дисковый раздел подкачки (swap). В современных системах наличие выделенного дискового раздела для области подкачки является не более чем традицией, так как для подкачки можно в любой момент использовать файлы (см. Область подкачки (swap): особенности применения и обеспечения безопасности). Таким образом, раздел swap можно безболезненно удалить, однако в рассматриваемой конфигурации задача усложняется тем, что этот раздел находится на LVM-разделе;
- Предполачается, что на находящейся в эксплуатации машине свободного места в файловых системах мало, и уменьшать их размер нерационально. Возможность оптимизации процесса за счёт уменьшения файловых систем и, соответсвенно, дисковых разделов рассмотрена отдельно.
Исходная конфигурация
Для написания статьи использовался компьютер со следующими параметрами:
- Размер единственного жесткого диска 32ГБ;
- При установке ОС:
- Выбрано имя машины lvs (используется в именовании LVM-устройств);
- Была выбрана установка с использованием LVM;
- Была принята стандартная конфигурация разметки диска:
- каталог /boot размещен в отдельном дисковом разделе /dev/sda1 с файловой системой etc2 и размером 243МБ;
- всё оставшееся место на диске занято расширенным (extended) дисковым разделом sda2, содержащим:
- дисковый раздел sda5, он же физический том LVM, занимающий всё место в расширенном дисковом разделе и содержащем все логические тома LVM, занимающие всё место в этом томе:
- каталог /root размещен в отдельном логическом томе LVM (том root);
- каталог /home размещен отдельный логическим томе LVM (том home);
- область подкачки (swap), которая тоже размещена в отдельном логическом томе LVM (том swap_1);
- дисковый раздел sda5, он же физический том LVM, занимающий всё место в расширенном дисковом разделе и содержащем все логические тома LVM, занимающие всё место в этом томе:
В итоге получена следующая конфигурация:
Физические дисковые разделы
Command | ||
---|---|---|
| ||
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, swap_1, содержащие, соответственно, каталоги /root, /home и область подкачки (в данном случае командой lsblk логические тома LVM не отображаются, но могут отображаться в зависимости от версии ОС).
Физические тома LVS
Имеется один физический том LVS, он же физический дисковы раздел:
Command | ||
---|---|---|
| ||
|
Группы томов LVS
Имеется одна группа томов LVS:
Command | ||
---|---|---|
| ||
VG #PV #LV #SN Attr VSize VFree lvs-vg 1 3 0 wz--n- 31,76g 0 |
Логические тома LVS
Имеется три логических тома LVS:
Command | ||
---|---|---|
| ||
|
При этом более информативная команда просмотра информации о физических томах:
Command | ||
---|---|---|
| ||
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 |
Показывает, что:
Предупреждение |
---|
Логичесуий том swap_1 расположен между томами root и home, то есть удалив этот том - уменьшить физический раздел не получится, так как свободное место будет находиться между существующими томами. |
Сценарий действий
Информация |
---|
Если компьютер уже не загружается, все дальнейшие действия могут быть выполнены после загрузки с live-USB (см. статью Создание загрузочных носителей USB flash drive а также статью Создание собственных Live-CD/Live-USB в Astra Linux). Если компьютер работоспособен, некоторые предварительные действия лучше выполнить из обычной сессии. |
Предварительные действия
Предупреждение |
---|
Перед выполнением дальнейших действий сделать и проверить резервную копию данных. |
Проверить и отключить область подкачки:
Command | ||
---|---|---|
| ||
|
Command |
---|
sudo swapoff /dev/dm-1 |
Или просто отключить все области подкачки:
Command |
---|
sudo swapoff -a |
Удалить раздел подкачки из таблицы монтирования (можно просто закомментировать соответствующую строчку в файле /etc/fstab):
Блок кода |
---|
#/dev/mapper/lvs--vg-swap_1 none swap sw 0 0 |
Удалить логический том swap_1:
Command | ||
---|---|---|
| ||
|
Опционально, особенно если в дальнейшем не планируется использовать раздел подкачки, для того, чтобы при перезагрузках не выдавались задерживающие перезагрузку диагностические собщения о ненайденном разделе подкачки, в файле /etc/initramfs-tools/conf.d/resume закомментировать строчку:
Блок кода |
---|
#RESUME=/dev/mapper/lvs--vg-swap_1 |
после чего выполнить команды
Command |
---|
sudo update-initramfs -t -u -k `uname -r` sudo update-grub |
Если всё сделано правильно, то команда pvs покажет наличие свободного места в "середине" физического тома:
Command | ||
---|---|---|
| ||
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 |
При этом видно, что свободное место имеет рамер 1023 блока, а логический том home имеет размер 4271 блоков, то есть размер логического тома home больше, чем размер доступного свободного места.
Дефрагментация дискового LVM-раздела
Если ваш дисковый раздел не фрагментирован, этот шаг можно пропустить, и перейти к следующему.
Если ваши файловые системы не сильно заполнены, то дефрагментацию можно существенно ускорить уменьшив логические тома (см. далее "Оптимизация").
В некоторых случаях дефрагментация может быть выполнена без использования live-USB и без перезагрузки машины. В частности, в рассматриваемом примере дефрагментация выполняется за счет перемещения логического тома /home, и для выполнения дефрагментации можно:
Освободить домашний каталог, перейдя в коневой каталог:
Command |
---|
cd / |
Отмонтировать каталог /home:
Command |
---|
sudo umount /home |
Далее работать в консольной сессии или вернуться в графическую сесиию (Ctrl+Alt+F7) (при этом будет выдано передупреждение, что работа выполняется во временном домашнем каталоге);
По завершению работ снова примонтировать каталог:
Command |
---|
sudo mount /home |
Таким приёмом можно воспользоваться, чтобы сохранить функционирование сетевых сервисов, обеспечив непрерывность их работы. Однако этот приём неприменим к перемещению тома root и, если требуется переместить том root, использование live-USB обязательно.
Если размер свободного места больше, чем размер переносимого LVM-раздела, то устранить фрагментацию можно одной командой вида (подробнее см. в разеле "Оптимизация"):
Command |
---|
sudo pvmove --alloc anywhere /dev/sda5:XXXX+YYY /dev/sda5:ZZZZ+YYY |
где ХХХХ+YYY - диапазон блоков переносимого тома (см. вывод команды sudo pvs -v --segmens выше), а ZZZZ+YYY - дапазон блоков, куда будет перемещён том.
В рассматриваемом случае размер свободного места меньше размера переносимого LVM-раздела, и команда pvmove сообщит об этом:
Command | ||
---|---|---|
| ||
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 |
В таком случае перенос дискового раздела можно выполнить по частям, указывая какие диапазоны блоков куда переносить. В рассматриваемом примере размер свободного места 1023 блока, и удобно переносить по тысяче блоков:
Command |
---|
sudo pvmove --alloc anywhere /dev/sda5:3859+1000 /dev/sda5:2836+1000 |
Информация | ||
---|---|---|
| ||
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 |
Далее:
Command |
---|
sudo pvmove --alloc anywhere /dev/sda5:4860+1000 /dev/sda5:3837+1000 sudo pvmove --alloc anywhere /dev/sda5:5861+1000 /dev/sda5:4838+1000 sudo pvmove --alloc anywhere /dev/sda5:6862+1000 /dev/sda5:5839+1000 sudo pvmove --alloc anywhere /dev/sda5:7863- /dev/sda5:6840- |
И в итоге раздел дефрагментирован, свободное пространство переместилось в конец раздела:
Command | |
---|---|
Title | sudo pvs -v --segments /dev/sda5 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 /dev/sda5 lvs-vg lvm2 a-- 31,76g 4,00g 4860 3270 home 1001 linear /dev/sda5:4860-8129 |
Далее:
Command |
---|
sudo pvmove --alloc anywhere /dev/sda5:4860+1000 /dev/sda5:3837+1000 sudo pvmove --alloc anywhere /dev/sda5:5861+1000 /dev/sda5:4838+1000 sudo pvmove --alloc anywhere /dev/sda5:6862+1000 /dev/sda5:5839+1000 sudo pvmove --alloc anywhere /dev/sda5:7863- /dev/sda5:6840- |
В итоге физический том должен быть дефрагментирован, а свободное пространство перемещено в конец раздела:
Command | ||
---|---|---|
| ||
sudo pvs -v --segments /dev/sda5 |
Предупреждение |
---|
Размер использованного в примере раздела около 32ГБ, что в десятки раз меньше реальных дисковых разделов. То есть, в реальной системе такая пошаговая дефрагментация потребует в десятки раз больше шагов и соответствующее количество времени. |
Уменьшение размера физического дискового раздела (физического тома)
При наличии правильно выделенного свободного места физический дисковый раздел (в том числе - являющийся физическим томом LVM) можно уменьшить используя входящий в состов live-USB графический инструмент gparted ("Пуск" - "Системные" - "Редактор разделов Gparted").
При работе из командной строки можно использовать команду pvresize:
Command |
---|
sudo pvresize -v --setphysicalvolumesize 32778240K /dev/sda5 |
однако при этом вычислять новый размер тома придётся самостоятельно.
Уменьшение размера расширенного дискового раздела и создание нового раздела boot
После уменьшения физического доскового раздела следует уменьшить расширенный дисковый раздел. Для этого необходимо загрузиться с live-USB, после чего использовать графический инструмент gparted. Перед изменением размера нужно отключить работу lvm с томом, находящемся на этом разделе, для чего нажать правой кнопкой мыши на изображение физического тома и выбрать пункт "Выключить". После этого в меню, открывающемся по нажатию правой кнопки мыши станет доступен пункт "Изменить размер или переместить", воспользовавшись которым нужно уменьшить размер раздела. Удобно сразу же создать на освободившемся месте новый раздел boot:
|
Предупреждение |
---|
Размер использованного в примере логического раздела около 16ГБ, что в десятки раз меньше реальных дисковых разделов. То есть, в реальной системе такая пошаговая дефрагментация потребует в десятки раз больше шагов и соответствующее количество времени. |
Уменьшение размера физического дискового раздела (физического тома)
При наличии правильно выделенного свободного места физический дисковый раздел (в том числе - являющийся физическим томом LVM) можно уменьшить используя входящий в состав live-USB графический инструмент gparted ("Пуск" - "Системные" - "Редактор разделов Gparted"). При работе из командной строки можно использовать команду pvresize:
Command |
---|
sudo pvresize -v --setphysicalvolumesize 32778240K /dev/sda5 |
однако при этом вычислять новый размер тома придется самостоятельно.
Уменьшение размера расширенного дискового раздела и создание нового раздела boot
После уменьшения физического дискового раздела следует уменьшить расширенный дисковый раздел. Для этого необходимо:
- Загрузиться с live-USB;
- Использовать графический инструмент gparted.
Некоторые live-USB (а том числе live-USB Astra Linux) при загрузке автоматически активируют LVM, поэтому перед изменением размера расширенного раздела может понадобиться отключить работу LVM, для чего нажать правой кнопкой мыши на изображение физического тома и выбрать пункт "Выключить".
В меню, открывающемся по нажатию правой кнопки мыши имеется пункт "Изменить размер или переместить", воспользовавшись которым нужно уменьшить размер раздела.
Удобно сразу же создать на освободившемся месте новый раздел boot:
Новый раздел следует разметить под файловую систему ext2, обязательно установить на него флаг boot, и желательно присвоить ему мнемоническую метку (boot в данном случае).
При работе в командной строке для изменения размера раздела следует:
Выполнить команду parted:
Command Title sudo parted GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
В диалоге команды определить номер изменяемого раздела с помощью команды print (раздел №2, extended):
Блок кода (parted) print Model: ATA VBOX HARDDISK (scsi) Disk /dev/sda: 34,4GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 256MB 255MB primary ext2 boot 2 257MB 34,4GB 34,1GB extended 5 257MB 33,8GB 33,6GB logical lvm
Изменить размер раздела командой :
Блок кода (print) resizepart 2 33.8G
Где:
2 - номер изменяемого раздела;
33.8G - новая граница раздела (можно принять равной границе ранее уменьшенного логического тома);
Создать новый раздел (нижняя и верхняя границы выбираются из ранее отображенных параметров):
Блок кода (print) mkpart primary ext2 33.8G 34.4G
Проверить номер нового раздела:
Блок кода (parted) print Model: ATA VBOX HARDDISK (scsi) Disk /dev/sda: 34,4GB Sector size (logical/physical): 512B/512B Partition Table: msdos Disk Flags: Number Start End Size Type File system Flags 1 1049kB 256MB 255MB primary ext2 2 257MB 33,8GB 33,6GB extended 5 257MB 33,8GB 33,6GB logical lvm 3 33,8GB 34,4GB 537MB primary ext2 boot
Установить на созданный раздел раздел флаг boot:
Блок кода (print) toggle 3 boot
Выйти из программы parted:
Блок кода q
Опционально:
Проверить список разделов:
Command Title lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 32G 0 disk
├─sda1 8:1 243M 0 part
├─sda3 8:3 512M 0 part /boot
└─sda5 8:5 0 31,3G 0 partУстановить на раздел метку "boot" (или иную метку):
Command sudo e2label /dev/sda5 boot
Настройка нового раздела boot
Дальнейшие действия не требуют загрузки с live-USB, и могут быть выполнены в обычном режиме работы, при этом после выполнения этих действий компьютер может оставатьмя оставаться в работе:
Проверить состав дисковых разделов:
Command Title lsblk 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
├─sda3 8:3 512M 0 part
└─sda5 8:5 0 31,3G 0 partК списку разделов добавился раздел sda3 с размером , имеющий размер 512MБ
Примонтировать новый раздел в любое удобное место, например:
Command sudo mount /dev/sda3 /mnt Скопировать в новый раздел boot содержимое старого раздела boot:
Command sudo cp -r R /boot/* /mnt - Изменить таблицу монтрованиямонтирования, чтобы вместо старого раздела boot монтировался новый, для чего:
Вывести идентификаторы разделов:
Command Title sudo blkid /dev/sda1: UUID="86418b1a-525a-4614-a600-749403a542b2" TYPE="ext2" PARTUUID="9326d1ae-01"
/dev/sda3: LABEL="boot" UUID="7fb61205-3f42-44ff-8886-a394991bfac0" TYPE="ext2" PARTUUID="9326d1ae-03"
/dev/sda5: UUID="Xqsuis-3sj7-VEHQ-uUXX-RzJu-lozK-OkbqN9" TYPE="LVM2_member" PARTUUID="9326d1ae-05"
/dev/mapper/lvs--vg-root: UUID="589855d1-25f5-4151-bfa4-8d1d1861a954" TYPE="ext4"
/dev/mapper/lvs--vg-home: UUID="88356e6b-7920-4357-a21e-733435f1aa72" TYPE="ext4"
В файле /etc/fstab заменить старую инструкцию в инструкции монтирования раздела boot, старый идентификатор на новый, полученный командой blkid:
Блок кода UUID=86418b1a7fb61205-525a3f42-461444ff-a6008886-749403a542b2a394991bfac0 /boot ext2 defaults 0 2
на новую, вставив новый идентификатор, полученный командой blkidили, что проще и понятнее, использовать метку раздела:
Блок кода UUID=7fb61205-3f42-44ff-8886-a394991bfac0 /boot ext2 defaults 0 2
или, что проще и понятнее, использовав метку диска:
Блок кода LABEL=boot /boot ext2 defaults 0 2
LABEL=boot /boot ext2 defaults 0 2
Отмонтировать старый раздел boot и примонтировать новый:
Command sudo umount /boot
sudo mount /bootЕсли в дальнейшем не планируется использовать раздел подкачки, для того, чтобы при перезагрузках не выдавались задерживающие перезагрузку диагностические сообщения о не найденном разделе подкачки, в файле /etc/initramfs-tools/conf.d/resume закомментировать строчку:
Command #RESUME=/dev/mapper/lvs--vg-swap_1 Если раздел подкачки будет использоваться - то строчка должна быть раскомментирована.
Выполнить команды:
Command sudo update-initramfs -t -u -k `uname -r`
sudo update-grubОтмонтировать старый раздел boot и примонтировать новый:
Command sudo umount /boot
sudo mount /boot
После выполнения этих действий компьютер может оставаться в работеэксплуатации, при необходимости немедленной проверки работы работоспособности после перезагрузки компьютер следует перезагрузить.
Удаление старого раздела boot
При необходимости удалить старый раздел boot после его удаления следует выполнить команду для восстановления загрузчика:
Command |
---|
sudo grub-install /dev/sda |
Оптимизация процесса
Уменьшение размера логического тома
Проверить наличие свободного места в файловых системах, и оценить до каких размеров можно их сокращать:
Command Title df -h Файловая система Размер Использовано Дост Использовано% Cмонтировано в
udev 2,0G 0 2,0G 0% /dev
tmpfs 395M 8,0M 387M 3% /run
/dev/mapper/lvs--vg-root 11G 3,9G 6,4G 38% /
tmpfs 2,0G 4,0K 2,0G 1% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 2,0G 0 2,0G 0% /sys/fs/cgroup
/dev/sda1 236M 126M 98M 57% /boot
/dev/mapper/lvs--vg-home 17G 57M 16G 1% /home
tmpfs 395M 0 395M 0% /run/user/999
tmpfs 395M 8,0K 395M 1% /run/user/1000
Из вывода команды видно, что в разделе /home, имеющем размер 17ГБ, данными занято всего 57МБ (что, конечно, нехарактерно для находящихся в реальной эксплуатации компьютеров).
- Загрузиться с live-USB или отмонтировать раздел /home описанным выше способом.
- Проверить целостность файловой системы:
Command sudo e2fsck -ff /dev/mapper/lvs--vg-home Сократить размер файловой системы до 2GB:
Command sudo resize2fs /dev/mapper/lvs--vg-home 2G Сократить размер логического тома до 2GB:
Command Title sudo lvreduce -L 2G /dev/mapper/lvs--vg-home WARNING: Reducing active logical volume to 2,00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lvs-vg/home? [y/n]: y
Size of logical volume lvs-vg/home changed from 16,68 GiB (4271 extents) to 2,00 GiB (512 extents).
Logical volume lvs-vg/home successfully resized.
- Опционально можно повторно проверить целостность файловой системы.
В итоге:
Command | ||
---|---|---|
| ||
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 18,68g 0 2836 root 0 linear /dev/sda5:0-2835 /dev/sda5 lvs-vg lvm2 a-- 31,76g 18,68g 2836 1023 0 free /dev/sda5 lvs-vg lvm2 a-- 31,76g 18,68g 3859 512 home 0 linear /dev/sda5:3859-4370 /dev/sda5 lvs-vg lvm2 a-- 31,76g 18,68g 4371 3759 0 free |
Видим, что логический том home стал меньше, чем свободное место перед ним, и может быть перемещён для дефрагметации дефрагментации одной командой и за разумное время:
Command |
---|
sudo pvmove --alloc anywhere /dev/sda5:3859+512 /dev/sda5:2836+512 |
Результат:
Command | ||
---|---|---|
| ||
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 18,68g 0 2836 root 0 linear /dev/sda5:0-2835 /dev/sda5 lvs-vg lvm2 a-- 31,76g 18,68g 2836 512 home 0 linear /dev/sda5:2836-3347 /dev/sda5 lvs-vg lvm2 a-- 31,76g 18,68g 3348 4782 0 free |
И, в итоге, можно уменьшить размер физического тома как описано выше.
После уменьшения размера физического тома:
Установить нужный размер логического тома home (для примера - том swap восстанавливать не предполагается, и home занимает всё свободное место):
Command sudo lvextend -l +4654 /dev/mapper/lvs--vg-home По желанию - восстановить том swap, например:
Command sudo lvcreate -n swap_1 -L 4G lvs-vg
Итог:
Command | ||
---|---|---|
| ||
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,26g 0 0 2836 root 0 linear /dev/sda5:0-2835 /dev/sda5 lvs-vg lvm2 a-- 31,26g 0 2836 5166 home 0 linear /dev/sda5:2836-8001 |
Если действия выполнялись без использования live-USB - теперь можно примонтировать /home:
Command |
---|
sudo mount /home |
И После чего можно перезапустить графическую пользовательскую сессию, чтобы вернуть привычное домашнее окружение.