Дерево страниц

Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 4 Следующий »


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

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

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

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

Данная статья применима к:

  • ОС ОН Орел 2.12
  • ОС СН Смоленск 1.6

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

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

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

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

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

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

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

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

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

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  
└─sda5   8:5    0 31,3G  0 part

где:

  • sda1 - дисковый раздел с каталогом /boot, размер 243МБ
  • sda2 - неиспользованное простанство для вырвнивания начала следующего дискового раздела;
  • sda5 - дисковый раздел LVM, имеющий размер 31.3ГБ, на котором находятся дисковые разделы LVM, содержащие каталоги /root, /home и область подкачки (командой lsblk LVM-разделы не отображаются).

Физические тома LVS

Имеется один физический том LVS:

sudo pvs

 PV         VG     Fmt  Attr PSize  PFree
 /dev/sda5  lvs-vg lvm2 a--  31,76g    0
Группы томов LVS

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

sudo vgs

 VG     #PV #LV #SN Attr   VSize  VFree
 lvs-vg   1   3   0 wz--n- 31,76g    0
Логические тома LVS

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


sudo 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 

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

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. Проверить и отключить область подкачки:

    sudo swapon

    NAME      TYPE      SIZE USED PRIO
    /dev/dm-1 partition   4G   0B   -2
    sudo swapoff /dev/dm-1
    Или просто отключить все области подкачки:
    sudo swapoff -a

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

    #/dev/mapper/lvs--vg-swap_1 none swap sw 0 0
  3. Удалить LVM-раздел swap_1:

    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

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

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  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. Освободить домашний каталог, перейдя в коневой каталог:

    cd /

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

    sudo umount /home

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

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

    sudo mount /home

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

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

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

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

sudo 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
В итоге:

 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: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-
И в итоге раздел дефрагментирован, свободное пространство переместилось в конец раздела:
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                                        

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

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

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

Оптимизация

Уменьшение размера файловой системы



  • Нет меток