Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление


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

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

Сделав резервную копию данных следует оценить трудозатраты, необходимые для вполнения описанных ниже действий, и время, для этого необходимое, и решить, не проще ли применить альтернативный вариант: переразметить диск и восстановить систему из сделанной резервной копии.

Если есть сомнения в надёжности электропитания лучше сразу перейти к восстановлению из резервных копий, так как отключение электропитания в процессе изменения дисковых разделов с высокой вероятностью приведёт к потере содержащихся там данных (см. также Средства восстановления повреждённых и удалённых данных).

Альтернативы может не быть если действия должны быть выполнены на сервере, не допускающем прерывания обслуживания , однако применимость настоящей статьи в такой ситуации зависит от конкретной конфигурации сервера, и общего рецепта тут нет.



Информация
titleДанная статья применима к:
  • ОС ОН Орел 2.12
  • ОС СН Смоленск 1.6


Общее описание действий

  1. Для того, чтобы увеличить размер дискового раздела, на диске должно иметься свободное место, не занятое другими дисковыми разделами;
  2. Если свободного места на диске нет - то нужно либо удалить, либо уменьшить другие дисковые разделы;
  3. Для того, чтобы уменьшить размер дискового раздела в нём должно быть свободное место, не занятое файловыми системами. При этом свободное место не должно быть фрагментировано, и находиться в конце дискового разделе. Штатный инстре;
  4. Если свободного места в дисковом разеделе нет - то нужно либо удалить, либо уменьшить файловые системы;
  5. Для того чтобы уменьшить размер файловой системы в ней должно быть свободное место.
  6. Если в файловой системе свободного места нет (ненормальная ситуация) либо свободного места недостаточно, нужно удалить или заархивировать файлы, находящиеся в этой файловой системе.

Далее в качестве базовой расматривается умеренно-неудобная ситуация, возникающая при эксплуатации компьютера со стандартно установленной ОС:

  • Свободного места на диске нет;
  • Есть дисковый раздел подкачки (swap). В современных системах наличие выделенного дискового раздела для области подкачки является не более чем традицией, так как для подкачки можно в любой момент использовать файлы (см. Область подкачки (swap): особенности применения и обеспечения безопасности). Таким образом, раздел swap можно безболезненно удалить, однако в рассматриваемой конфигурации задача усложняется тем, что этот раздел находится на LVM-разделе;
  • Предполачается, что на находящейся в эксплуатации машине свободного места в файловых системах мало, и уменьшать их размер нерационально. Возможность оптимизации процесса за счёт уменьшения файловых систем и, соответсвенно, дисковых разделов рассмотрена отдельно.

Исходная конфигурация

Для написания статьи использовался компьютер со следующими параметрами:

  • Размер единственного жесткого диска 32ГБ;
  • При установке ОС:
    • Выбрано имя машины lvs (используется в именовании LVM-устройств);
    • Была выбрана установка с использованием LVM;
    • Была принята стандартная конфигурация разметки диска с вынесением каталога /home в отдельный дисковый раздел и с созданием области подкачки (swap);

В итоге получена следующая конфигурация:

Физические дисковые разделы

Command
Titlelsblk
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:

Command
Titlesudo pvs

 PV         VG     Fmt  Attr PSize  PFree
 /dev/sda5  lvs-vg lvm2 a--  31,76g    0

Группы томов LVS

Имеется одна группа томов LVS:

Command
Titlesudo vgs
 VG     #PV #LV #SN Attr   VSize  VFree
 lvs-vg   1   3   0 wz--n- 31,76g    0

Логические тома LVS

Имеется три логических тома LVS:


Command
Titlesudo 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 

При этом более информативная команда просмотра информации о физических томах:

Command
Title 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    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

Показывает, что:

Предупреждение
дисковый LVM-раздел swap_1 расположен между разделами root и home, то есть удалив этот раздел - уменьшить физический раздел не получится, так как свободное место будет находиться между существующими разделами.

Сценарий действий


Информация

Если компьютер уже не загружается, все дальнейшие действия могут быть выполнены после загрузки с live-USB (см. статью Создание загрузочных носителей USB flash drive а также статью Создание собственных Live-CD/Live-USB в Astra Linux). Если компьютер работоспособен, некоторые предварительные действия лучше выполнить из обычной сессии.

Предварительные действия

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

Перед выполнением дальнейших действий сделать и проверить резервную копию данных.

  1. Проверить и отключить область подкачки:

    Command
    Titlesudo swapon

    NAME      TYPE      SIZE USED PRIO
    /dev/dm-1 partition   4G   0B   -2


    Command
    sudo swapoff /dev/dm-1

    Или просто отключить все области подкачки:

    Command

    sudo swapoff -a


  2. Удалить раздел подкачки из таблицы монтирования (можно просто закомментировать соответствующую строчку в файле /etc/fstab):

    Блок кода
    #/dev/mapper/lvs--vg-swap_1 none swap sw 0 0


  3. Удалить LVM-раздел swap_1:

    Command
    Titlesudo lvremove /dev/lvs`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


Если всё сделано правильно, то команда pvs покажет наличие свободного места в "середине" дискового раздела:

Command
Titlesudo 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  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, перед операцией можно:

  1. Закрыть все пользовательские графические сессии;
  2. Перейти Войти в консольную сессию (Ctrl+Alt+F1);
  3. Перейти

    Освободить домашний каталог, перейдя в коневой каталог:

    Command
    cd /


  4. Отмонтировать раздел /home:

    Command
    sudo umount /home
а по завершению снова примонтировать

  1. Далее работать в консольной сессии или вернуться в графическую сесиию (Ctrl+Alt+F7) (при этом будет выдано передупреждение, что работа выполняется во временном домашнем каталоге);

  2. По завершению работ снова примонтировать раздел:

    Command
    sudo mount /home


Это может сохранить работоспособность сервисных служб во время выполнения рабоит, обеспечив непрерывность их работы.
Если требуется переместить разел /root использование live-USB обязательно

.

Если ваш дисковый раздел не фрагментирован, этот шаг можно пропустить, и перейти к следующему.

Если ваши файловые системы не сильно заполнены, то дефрагментацию можно существенно ускорить уменьшив дисковые разделы

.

Если размер свободного места больше, чем размер переносимого LVM-раздела, то устранить фрагментацию можно одной командой:

Command
sudo pvmove --alloc anywhere /dev/sda5:3859-8129

где 3859-8129 - диапазон блоков переносимого раздела (см. вывод команды sudo pvs -v --segmens выше).

В рассматриваемом случае размер свободного места меньше размера переносимого LVM-раздела, и команда pvmove сообщит об этом:

Command
Titlesudo pvmove --alloc anywhere /dev/sda5:3859-8129
  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 блока, и удобно переносить по тысяче блоков:
sudo pvmove --alloc anywhere /dev/sda5:3859-4859 /dev/sda5:2836-3836
В итоге:

Информация
title 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

Далее:

Command
sudo pvmove --alloc anywhere /dev/sda5:4860-5860 /dev/sda5:3837-4837
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-

И в итоге раздел дефрагментирован:

Command
Titlesudo 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   
  le  /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                      


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

Уменьшение размера физического дискового раздела

При наличии правильно выделенного свободного места дисковый раздел (в том числе - LVM) можно уменьшить используя входящий в состов live-USB графический инструмент gparted ("Пуск" - "Системные" - "Редактор разделов Gparted").