Linux LVM 虚拟机分区扩容(添加新硬盘并扩容至已有分区)
之前实验过同一块硬盘的扩容,参见
Linux LVM 虚拟机分区扩容(同一块硬盘),基于 zStack KVM
https://www.4wei.cn/archives/1003008
整体操作流程
- 创建 PV (物理卷, Physical volume)
- 创建/扩展 VG (逻辑卷组, Volume group)
- 创建/扩展 LV (逻辑卷, Logical volume)
- 扩展分区
旧的磁盘信息
vda
为200G磁盘
[root@dop-02 ~]# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
磁盘 /dev/vda:214.7 GB, 214748364800 字节,419430400 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: 35467CA6-33D5-4B2B-8204-018728026059
# Start End Size Type Name
1 2048 411647 200M EFI System EFI System Partition
2 411648 2508799 1G Microsoft basic
3 2508800 419428351 198.8G Linux LVM
磁盘 /dev/mapper/centos-root:182.5 GB, 182536110080 字节,356515840 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-swap:8589 MB, 8589934592 字节,16777216 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-home:22.3 GB, 22330474496 字节,43614208 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
添加新的磁盘
磁盘 /dev/vdb:536.9 GB, 536870912000 字节,1048576000 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
新磁盘分区操作,并创建物理卷
操作过程依次为 n-p-^-^-t-8e-w
pvcreate /dev/vdb1
[root@dop-02 ~]# fdisk /dev/vdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x13099513 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-1048575999,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-1048575999,默认为 1048575999):
将使用默认值 1048575999
分区 1 已设置为 Linux 类型,大小设为 500 GiB
命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@dop-02 ~]# fdisk -l
磁盘 /dev/vda:751.6 GB, 751619276800 字节,1468006400 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00000000
设备 Boot Start End Blocks Id System
/dev/vda1 1 419430399 209715199+ ee GPT
磁盘 /dev/mapper/centos-root:182.5 GB, 182536110080 字节,356515840 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-swap:8589 MB, 8589934592 字节,16777216 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-home:22.3 GB, 22330474496 字节,43614208 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/vdb:536.9 GB, 536870912000 字节,1048576000 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x13099513
设备 Boot Start End Blocks Id System
/dev/vdb1 2048 1048575999 524286976 8e Linux LVM
[root@dop-02 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vdb 252:16 0 500G 0 disk
└─vdb1 252:17 0 500G 0 part
sr0 11:0 1 1024M 0 rom
vda 252:0 0 700G 0 disk
├─vda2 252:2 0 1G 0 part /boot
├─vda3 252:3 0 198.8G 0 part
│ ├─centos-swap 253:1 0 8G 0 lvm [SWAP]
│ ├─centos-home 253:2 0 20.8G 0 lvm /home
│ └─centos-root 253:0 0 170G 0 lvm /
└─vda1 252:1 0 200M 0 part /boot/efi
[root@dop-02 ~]# pvcreate /dev/vdb1
Physical volume "/dev/vdb1" successfully created.
[root@dop-02 ~]# pvdisplay
--- Physical volume ---
PV Name /dev/vda3
VG Name centos
PV Size 198.80 GiB / not usable 2.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 50893
Free PE 1
Allocated PE 50892
PV UUID QwH9kW-Hu66-nYQM-GEYH-PHAO-35Qi-CV3hcs
"/dev/vdb1" is a new physical volume of "<500.00 GiB"
将物理卷PV加入卷组VG,并扩容分区
- 使用 vgdisplay 查看卷组情况
- 使用 vgextend 将磁盘分区加入卷组,将新的分区/dev/sdb1加入到卷组中,这里的卷组名为centos
- 使用 lvextend 扩容分区
- 使用 xfs_groupfs 进行在线调整xfs格式的文件系统大小
[root@dop-02 ~]# vgextend centos /dev/vdb1
Volume group "centos" successfully extended
[root@dop-02 ~]# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 2
Act PV 2
VG Size <698.80 GiB
PE Size 4.00 MiB
Total PE 178892
Alloc PE / Size 50892 / <198.80 GiB
Free PE / Size 128000 / 500.00 GiB
VG UUID Y90gF3-gsS1-yeo9-1ajp-Tchw-y4hU-A29qAA
[root@dop-02 ~]# lvextend -l +100%FREE /dev/mapper/centos-root
Size of logical volume centos/root changed from 170.00 GiB (43520 extents) to 670.00 GiB (171520 extents).
Logical volume centos/root successfully resized.
[root@dop-02 ~]# lvdisplay /dev/mapper/centos-root
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID 7fwPTx-Ic7T-fROA-rbxk-bi9Y-NPbm-PZaDhZ
LV Write Access read/write
LV Creation host, time localhost, 2022-07-22 16:49:39 +0800
LV Status available
# open 1
LV Size 670.00 GiB
Current LE 171520
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
[root@dop-02 ~]# xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=11141120 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=44564480, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=21760, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 44564480 to 175636480
因为分区的文件系统是 xfs,所以使用 xfs_growfs,如果是 ext4 则需要使用 resize2fs。