Расширение LVM разделов

2017-08-02

Расширение LVM разделов

Содержание

Постановка задачи

Задача: расширить доступное дисковое пространство на LVM разделах в виртуальной машине.

Исходная система

[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   50G  2.6G   48G   6% /
devtmpfs                 1.4G     0  1.4G   0% /dev
tmpfs                    1.4G     0  1.4G   0% /dev/shm
tmpfs                    1.4G  8.5M  1.4G   1% /run
tmpfs                    1.4G     0  1.4G   0% /sys/fs/cgroup
/dev/xvda1               497M  171M  326M  35% /boot
/dev/mapper/centos-home  147G   33M  147G   1% /home
tmpfs                    284M     0  284M   0% /run/user/0
[root@localhost ~]# fdisk -l

Disk /dev/xvda: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000994ed

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *        2048     1026047      512000   83  Linux
/dev/xvda2         1026048   419430399   209202176   8e  Linux LVM

Disk /dev/mapper/centos-root: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-swap: 3221 MB, 3221225472 bytes, 6291456 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-home: 157.2 GB, 157244456960 bytes, 307118080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Шаги

1. Расширение доступного для виртуальной машины дискового пространства.

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

1.1) Выбрать требуемую виртуальную машину. Отключить её.

1.2) Перейти на вкладку Storage, выбрать нужный для расширения дискового пространства

1.3) Выбрать меню Properties, расширить диск. В данном примере мы расширим диск на 60G

Проверяем результат:

[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   50G  2.6G   48G   6% /
devtmpfs                 1.4G     0  1.4G   0% /dev
tmpfs                    1.4G     0  1.4G   0% /dev/shm
tmpfs                    1.4G  8.4M  1.4G   1% /run
tmpfs                    1.4G     0  1.4G   0% /sys/fs/cgroup
/dev/xvda1               497M  171M  326M  35% /boot
/dev/mapper/centos-home  147G   33M  147G   1% /home
tmpfs                    284M     0  284M   0% /run/user/0

Здесь как и ожидалось ничего не изменилось.

[root@localhost ~]# fdisk -l

Disk /dev/xvda: 279.2 GB, 279172874240 bytes, 545259520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000994ed

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *        2048     1026047      512000   83  Linux
/dev/xvda2         1026048   419430399   209202176   8e  Linux LVM

Disk /dev/mapper/centos-root: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-swap: 3221 MB, 3221225472 bytes, 6291456 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-home: 157.2 GB, 157244456960 bytes, 307118080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Было: Disk /dev/xvda: 214.7 GB Стало: Disk /dev/xvda: 279.2 GB

2. Изменение разметки диска.

Теперь нужно изменить разметку диска, чтобы она учитывала новое неаллоцированное пространство. Этот шаг выполнен на основе следующего обсуждения

2.1) запускаем утилиту fdisk на диске /dev/xvda [root@localhost ~]# fdisk /dev/xvda

2.2) Проверяем имеющуюся разметку

Command (m for help): p

Disk /dev/xvda: 279.2 GB, 279172874240 bytes, 545259520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000994ed

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *        2048     1026047      512000   83  Linux
/dev/xvda2         1026048   419430399   209202176   8e  Linux LVM

2.3) Удаляем раздел /dev/xvda2

Command (m for help): d
Partition number (1,2, default 2): 2
Partition 2 is deleted

2.4) Создаём новый раздел на всё свободное пространство

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (2-4, default 2):
First sector (1026048-545259519, default 1026048):
Using default value 1026048
Last sector, +sectors or +size{K,M,G} (1026048-545259519, default 545259519):
Using default value 545259519
Partition 2 of type Linux and of size 259.5 GiB is set

2.5) Записываем изменения на диск

Command (m for help): w
The partition table has been altered!

2.6) Перезапускаем

2.7) Результаты

[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   50G  2.6G   48G   6% /
devtmpfs                 1.4G     0  1.4G   0% /dev
tmpfs                    1.4G     0  1.4G   0% /dev/shm
tmpfs                    1.4G  8.4M  1.4G   1% /run
tmpfs                    1.4G     0  1.4G   0% /sys/fs/cgroup
/dev/xvda1               497M  171M  326M  35% /boot
/dev/mapper/centos-home  147G   33M  147G   1% /home
tmpfs                    284M     0  284M   0% /run/user/0

Здесь всё ещё без изменений.

[root@localhost ~]# fdisk -l

Disk /dev/xvda: 279.2 GB, 279172874240 bytes, 545259520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000994ed

    Device Boot      Start         End      Blocks   Id  System
/dev/xvda1   *        2048     1026047      512000   83  Linux
/dev/xvda2         1026048   545259519   272116736   83  Linux

Disk /dev/mapper/centos-root: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-swap: 3221 MB, 3221225472 bytes, 6291456 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-home: 157.2 GB, 157244456960 bytes, 307118080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Заметим, что раздел /dev/xvda2 расширился с 1026048 - 419430399 до 1026048 - 545259519.

Теперь следует расширить /dev/mapper/centos-home и /dev/mapper/centos-root

3. Расширение физического уровня системы.

В дальнейшем будем использовать информацию представленную в статье .

[root@localhost ~]# pvdisplay /dev/xvda2
  --- Physical volume ---
  PV Name               /dev/xvda2
  VG Name               centos
  PV Size               199.51 GiB / not usable 3.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              51074
  Free PE               16
  Allocated PE          51058
  PV UUID               UMkD2q-wLSk-WAyE-CzHU-z8Rs-7UKn-UeQiL8

Проверяем физический уровень файловой системы, как мы видим нам всё ещё доступно только 199.51 GiB.

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

[root@localhost ~]# pvresize /dev/xvda2
  Physical volume "/dev/xvda2" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized

Ещё раз проверим состояние физического уровня файловой системы.

[root@localhost ~]# pvdisplay /dev/xvda2
  --- Physical volume ---
  PV Name               /dev/xvda2
  VG Name               centos
  PV Size               259.51 GiB / not usable 2.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              66434
  Free PE               15376
  Allocated PE          51058
  PV UUID               UMkD2q-wLSk-WAyE-CzHU-z8Rs-7UKn-UeQiL8

Итак, прошлые доступные 199.51 GiB превратились в 259.51 GiB.

4. Расширение логических уровней системы.

Теперь необходимо заняться расширением логических уровней файловой системы

Проверим состояние логического уровня файловой системы. (логической группы)

[root@localhost ~]# vgdisplay
  --- Volume group ---
  VG Name               centos
  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               3
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               259.51 GiB
  PE Size               4.00 MiB
  Total PE              66434
  Alloc PE / Size       51058 / 199.45 GiB
  Free  PE / Size       15376 / 60.06 GiB
  VG UUID               qyRB30-ZIA7-Wxlv-vyMs-Bnhx-9sp1-sA3K7K

Теперь нам доступны 60.06 GiB для распределения между логическими разделами.

4.1) Проверим доступные логические разделы.

[root@localhost ~]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap
  VG Name                centos
  LV UUID                cI6LgS-5Ky5-3u4M-FvQp-VoZk-ZJ0D-oE8gbo
  LV Write Access        read/write
  LV Creation host, time localhost, 2017-07-25 17:16:04 +0500
  LV Status              available
  # open                 2
  LV Size                3.00 GiB
  Current LE             768
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1

  --- Logical volume ---
  LV Path                /dev/centos/home
  LV Name                home
  VG Name                centos
  LV UUID                EchNY3-nZXI-J3mb-koJs-Kmyk-zpSN-Qgouqv
  LV Write Access        read/write
  LV Creation host, time localhost, 2017-07-25 17:16:04 +0500
  LV Status              available
  # open                 1
  LV Size                146.45 GiB
  Current LE             37490
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

  --- Logical volume ---
  LV Path                /dev/centos/root
  LV Name                root
  VG Name                centos
  LV UUID                GXgTku-JgN2-fPoa-tN2p-VQjW-Pg3Y-e9EYwm
  LV Write Access        read/write
  LV Creation host, time localhost, 2017-07-25 17:16:05 +0500
  LV Status              available
  # open                 1
  LV Size                50.00 GiB
  Current LE             12800
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0

Теперь расширим на 30GiB логические разделы /dev/centos/home и /dev/centos/root

[root@localhost ~]# lvextend -L +30G /dev/centos/home
  Size of logical volume centos/home changed from 146.45 GiB (37490 extents) to 176.45 GiB (45170 extents).
  Logical volume centos/home successfully resized.
[root@localhost ~]# lvextend -L +30G /dev/centos/root
  Size of logical volume centos/root changed from 50.00 GiB (12800 extents) to 80.00 GiB (20480 extents).
  Logical volume centos/root successfully resized.

Проверим результаты прошлых шагов

[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   50G  2.6G   48G   6% /
devtmpfs                 1.4G     0  1.4G   0% /dev
tmpfs                    1.4G     0  1.4G   0% /dev/shm
tmpfs                    1.4G  8.4M  1.4G   1% /run
tmpfs                    1.4G     0  1.4G   0% /sys/fs/cgroup
/dev/xvda1               497M  171M  326M  35% /boot
/dev/mapper/centos-home  147G   33M  147G   1% /home
tmpfs                    284M     0  284M   0% /run/user/0

Как видно всё ещё ничего не изменилось. Причина в том, что мы расширили логические разделы, но не соотвествующие им файловые системы.

5. Расширение лежащих на логических уровнях файловых систем.

Расширим лежашие в логических разделах файловые системы. Так как в примере используется CentOS, то в последнем шаге используем xfs_growfs. В случае Ubuntu вместо xfs_growfs нужно использовать resize2fs

[root@localhost ~]# xfs_growfs /dev/centos/root
meta-data=/dev/mapper/centos-root isize=256    agcount=4, agsize=3276800 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=13107200, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=6400, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 13107200 to 20971520
[root@localhost ~]# xfs_growfs /dev/centos/home
meta-data=/dev/mapper/centos-home isize=256    agcount=4, agsize=9597440 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=38389760, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=18745, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 38389760 to 46254080

6. Проверка результатов. Проверяем результаты проделанных шагов
[root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   80G  2.6G   78G   4% /
devtmpfs                 1.4G     0  1.4G   0% /dev
tmpfs                    1.4G     0  1.4G   0% /dev/shm
tmpfs                    1.4G  8.4M  1.4G   1% /run
tmpfs                    1.4G     0  1.4G   0% /sys/fs/cgroup
/dev/xvda1               497M  171M  326M  35% /boot
/dev/mapper/centos-home  177G   33M  177G   1% /home
tmpfs                    284M     0  284M   0% /run/user/0

Итак, теперь в root разделе 80G доступного пространства вместо 50G, а в home разделе 177G доступного пространства вместо 147G.


Примечания:

Extended раздел в debian системах

В debian системах (например в Ubuntu) наряду с LVM разделом встречаются также Extended разделы. Этот случай подробно рассматривается в обсуждении . Ниже будет приведена выдержка из него. Здесь главное внимательно следить за номерами секторов, так как один раздел записывается поверх другого со смещением.

$ sudo fdisk /dev/sda

Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): p
Disk /dev/sda: 9.8 GiB, 10485760000 bytes, 20480000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0cd7105f

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sda1  *       2048   999423   997376  487M 83 Linux
/dev/sda2       1001470 16775167 15773698  7.5G  5 Extended
/dev/sda5       1001472 16775167 15773696  7.5G 83 Linux

Command (m for help): d
Partition number (1,2,5, default 5): 2

Partition 2 has been deleted.

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): e
Partition number (2-4, default 2):
First sector (999424-20479999, default 999424): 1001470
Last sector, +sectors or +size{K,M,G,T,P} (1001470-20479999, default 20479999):

Created a new partition 2 of type 'Extended' and of size 9.3 GiB.

Command (m for help): n
All space for primary partitions is in use.
Adding logical partition 5
First sector (1003518-20479999, default 1003520):
Last sector, +sectors or +size{K,M,G,T,P} (1003520-20479999, default 20479999):

Created a new partition 5 of type 'Linux' and of size 9.3 GiB.

Command (m for help): x


Expert command (m for help): b
Partition number (1,2,5, default 5):
New beginning of data (1001471-20479999, default 1003520): 1001472

Expert command (m for help): p

Disk /dev/sda: 9.8 GiB, 10485760000 bytes, 20480000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0cd7105f

Device     Boot   Start      End  Sectors Id Type    Start-C/H/S  End-C/H/S Attrs
/dev/sda1  *       2048   999423   997376 83 Linux       0/33/32   62/55/53    80
/dev/sda2       1001470 20479999 19478530  5 Extende    62/23/86 250/23/209
/dev/sda5       1001472 20479999 19478528 83 Linux     62/57/118 250/23/209

resize2fs: Bad magic number in super-block

При встрече со следующей ошибкой

[root@localhost ~]# resize2fs /dev/centos/root
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block while trying to open /dev/centos/root
Couldn't find valid filesystem superblock.

Нужно проверить какой утилитой необходимо пользоваться на текущей файловой системе. Например в CentOS такая ошибка возникнет при попытке использовать resize2fs вместо xfs_growfs

xfs_growfs: smt: is not a mounted XFS filesystem

При встрече со следующей ошибкой

[root@localhost ~]# xfs_growfs /dev/mapper/centos-root:
xfs_growfs: /dev/mapper/centos-root: is not a mounted XFS filesystem

нужно удостовериться в правильности указания файловой системы для приращения. Здесь должна быть файловая система из LV Path, а не то, что выдает df -h

Ссылки

[1]: Обсуждение работы с Extended разделом на стеке

[2]: Статья про расширение LVM разделов

[3]: resize2fs man

[4]: xfs_growfs man

[5]: fdisk man

[6]: lvdisplay man

[7]: lvextend man

[8]: vgdisplay man

[9]: pvresize man

[10]: pvdisplay man

linuxlvmextendfilesystems
License: MIT

О бенчмарках

Паттерн "Стратегия"

comments powered by Disqus