MyTetra Share
Делитесь знаниями!
Уменьшение размера Volume group LVM
Время создания: 31.08.2017 20:54
Текстовые метки: knowledge
Раздел: Linux - Разметка
Запись: xintrea/mytetra_db_mcold/master/base/1498811777x75mlegw7h/text.html на raw.githubusercontent.com

Уменьшение размера Volume group LVM

Менеджер логических томов (Logical Volume Manager), он же LVM — предоставляет собой дополнительный уровень абстракции между физическими/логическими дисками и файловой системой. LVM увеличивает гибкость файловой системы, позволяет изменять размеры логических томов, переносить данные между дисками «на лету», делать снимки дисков и т.д.

Для того, чтобы было понятно о чем идет речь, приведу краткий список терминов, который используется в LVM:

PV, Physical volume, физический том. Обычно это раздел на диске или весь диск. В том числе, устройства программного и аппаратного RAID (которые уже могут включать в себя несколько физических дисков). Физические тома входят в состав группы томов.
VG, Volume group, группа томов. Это самый верхний уровень абстрактной модели, используемой системой LVM. С одной стороны группа томов состоит из физических томов, с другой — из логических и представляет собой единую административную единицу.
LV, Logical volume, логический том. Раздел группы томов, эквивалентен разделу диска в не-LVM системе. Представляет собой блочное устройство и, как следствие, может содержать файловую систему.
PE, Physical extent, физический экстент. Каждый физический том делится на порции данных, называющиеся физическими экстентами.
LE, Logical extent, логический экстент. Каждый логический том делится на порции данных, называющиеся логическими экстентами. Размер логических экстентов не меняется в пределах группы томов. По умолчания, один логический экстент равняется одному физическому экстенту, это соотношение может быть изменено с помощью специальных опций.

Как правило, на диске рекомендуется создавать один раздел, на котором будет создан физический том. Но может возникнуть необходимость создания нескольких групп томов для административных целей.

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

Рассмотрим пример, когда у нас в системе имеется один жесткий диск, который разбит на два раздела: sda1 и sda2


1
2
3
4
[root@test ~]# fdisk -cul
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 1050623 524288 83 Linux
/dev/sda2 1050624 585871963 292410670 8e Linux LVM

В разделе /dev/sda2 соответственно создан один физический том, группа томов vg_testvas и несколько логических томов:

/dev/vg_testvas/LogVol00 — раздел /root
/dev/vg_testvas/LogVol01 — раздел /u01
/dev/vg_testvas/LogVol03 — раздел /space

Нам необходимо создать новую группу томов. Для этого следует последовательно уменьшить размер файловой системы, логического тома, физического тома и создать новый раздел.

Текущее состояние системы мы можем увидеть с помощью команд pvdisplay, vgdisplay, lvdisplay.

Если выполнить команду pvdisplay с ключом —maps, то можно увидеть сколько физических экстентов занимает каждый логический том:


01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@test ~]# pvdisplay --maps
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               vg_testvas
  PV Size               278.86 GiB / not usable 0
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              71389
  Free PE               1024
  Allocated PE          70365
  PV UUID               J4pUBP-QZ2p-66cF-N92r-CAH5-JeRF-ZwXL2u
 
  --- Physical Segments ---
  Physical extent 0 to 12799:
    Logical volume      /dev/vg_testvas/LogVol01
    Logical extents     0 to 12799
  Physical extent 12800 to 25599:
    Logical volume      /dev/vg_testvas/LogVol00
    Logical extents     0 to 12799
  Physical extent 25600 to 70364:
    Logical volume      /dev/vg_testvas/LogVol03
    Logical extents     0 to 44764
  Physical extent 70365 to 71388:
    FREE

И вывод соответственно vgdisplay и lvdisplay:


01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
[root@test ~]# vgdisplay
  --- Volume group ---
  VG Name               vg_testvas
  System ID
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  6
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               278.86 GiB
  PE Size               4.00 MiB
  Total PE              71389
  Alloc PE / Size       70365 / 274.86 GiB
  Free  PE / Size       1024 / 4.00 GiB
  VG UUID               stu8dy-b3Bh-asGz-l8fk-eELJ-OS2g-OU7rx2
 
root@test ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/vg_testvas/LogVol01
  LV Name                LogVol01
  VG Name                vg_testvas
  LV UUID                D0cCil-W121-p2MU-cJnw-ohxl-ZqzD-fEC51B
  LV Write Access        read/write
  LV Creation host, time test, 2013-09-22 01:03:07 +0300
  LV Status              available
  # open                 1
  LV Size                50.00 GiB
  Current LE             12800
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:2
 
  --- Logical volume ---
  LV Path                /dev/vg_testvas/LogVol00
  LV Name                LogVol00
  VG Name                vg_testvas
  LV UUID                CTv7G6-dc8m-J9OE-ucLI-alC2-jgi0-6gx7YO
  LV Write Access        read/write
  LV Creation host, time test, 2013-09-22 01:03:09 +0300
  LV Status              available
  # open                 1
  LV Size                50.00 GiB
  Current LE             12800
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0
 
  --- Logical volume ---
  LV Path                /dev/vg_testvas/LogVol03
  LV Name                LogVol03
  VG Name                vg_testvas
  LV UUID                Wmfhll-LYel-4a28-N3fv-gkIm-Iibq-3RXdO4
  LV Write Access        read/write
  LV Creation host, time test, 2013-09-22 01:03:16 +0300
  LV Status              available
  # open                 0
  LV Size                174.86 GiB
  Current LE             34525
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:3

Логический том /dev/vg_testvas/LogVol03, который соответствует /space является самым большим, находится в конце раздела и в нем много свободного места. Поэтому удобнее всего уменьшать его размер.
Для начала размонтируем раздел:


1
[root@test ~]# umount /space

Для безопасности проверим целостность файловой системы:


1
2
3
4
5
6
7
8
[root@test ~]# e2fsck -f /dev/vg_testvas/LogVol03
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/vg_testvas/LogVol03: 63149/8839168 files (0.6% non-contiguous), 2439381/35353600 blocks

Перед уменьшением размера логического тома необходимо соответственно уменьшить размер файловой системы.
Произвести это можно двумя способами: с помощью команды resize2fs или используя опцию «-r» команды lvresize, в последнем случае размер файловой системы будет автоматически уменьшен одновременно с логическим томом:


1
2
3
4
5
6
7
8
9
[root@test ~]# lvresize -r -L -40G /dev/vg_testvas/LogVol03
fsck from util-linux-ng 2.17.2
/dev/mapper/vg_testvas-LogVol03: clean, 63148/11460608 files, 2603851/45839360 blocks
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/vg_testvas-LogVol03 to 35353600 (4k) blocks.
The filesystem on /dev/mapper/vg_testvas-LogVol03 is now 35353600 blocks long.
 
  Reducing logical volume LogVol03 to 134.86 GiB
  Logical volume LogVol03 successfully resized

Результат выполнения операции мы можем проверить с помощью команд pvdisplay —maps, lvdisplay или таким способом:


1
2
3
4
5
6
7
[root@test ~]# pvs -v --segments /dev/sda2
    Using physical volume(s) on command line
  PV         VG         Fmt  Attr PSize   PFree  Start SSize LV       Start Type   PE Ranges
  /dev/sda2  vg_testvas lvm2 a--  278.86g 44.00g     0 12800 LogVol01     0 linear /dev/sda2:0-12799
  /dev/sda2  vg_testvas lvm2 a--  278.86g 44.00g 12800 12800 LogVol00     0 linear /dev/sda2:12800-25599
  /dev/sda2  vg_testvas lvm2 a--  278.86g 44.00g 25600 34525 LogVol03     0 linear /dev/sda2:25600-60124
  /dev/sda2  vg_testvas lvm2 a--  278.86g 44.00g 60125 11264              0 free

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


1
[root@test ~]# pvmove --alloc anywhere /dev/sda2

Теперь можно уменьшить размер физического тома и соответственно группы томов до желаемого размера:


01
02
03
04
05
06
07
08
09
10
[root@test ~]# pvresize -v --setphysicalvolumesize 238.86G /dev/sda2
Using physical volume(s) on command line
    Archiving volume group "vg_testvas" metadata (seqno 7).
    /dev/sda2: Pretending size is 500925726 not 584820736 sectors.
    Resizing volume "/dev/sda2" to 584820736 sectors.
    Resizing physical volume /dev/sda2 from 0 to 61147 extents.
    Updating physical volume "/dev/sda2"
    Creating volume group backup "/etc/lvm/backup/vg_testvas" (seqno 8).
  Physical volume "/dev/sda2" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized

После этого с помощью утилиты fdisk удаляем старый раздел /dev/sda2, на его месте создаем раздел sda2 согласно размеру нашего нового физического тома. Во избежания проблем рекомендуется этот раздел сделать на несколько мегабайт больше, чем наш физический том.

На физическом диске появилась неразмеченная область. Создаем новый раздел /dev/sda3 с помощью утилиты fdisk:


1
[root@test~]# fdisk -cu /dev/sda

Создаем физический том в группу томов vg_new:


1
2
[root@test ~]# pvcreate /dev/sda3
[root@test ~]# vgcreate vg_new /dev/sda3

После выполнения всех операций в новой группе томов мы можем создать необходимое количество логических томов.

Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования