Расширение 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 разделом на стеке