linux虚拟机基础-磁盘扩容详细版本模拟实验
本实验仅供测试环境学习使用,请勿用于生产环境
扩容实验参考上一篇博客:
https://blog.csdn.net/wenxiaocsdn/article/details/141932877?spm=1001.2014.3001.5502
LVM基础知识附录红帽官方文档
配置和管理逻辑卷 | Red Hat Enterprise Linux | 8 | Red Hat Documentation
LVM逻辑结构图

LVM 管理命令速查表(中英文对照)
LVM 管理命令速查表(中英文对照)
|
操作分类 |
命令 |
英文说明 |
中文说明 |
|---|---|---|---|
|
创建 PV |
pvcreate /dev/sdX1 |
Initialize a physical volume |
初始化物理卷 |
|
查看 PV |
pvdisplay / pvs |
Show physical volume details / summary |
查看物理卷详情 / 摘要 |
|
删除 PV |
pvremove /dev/sdX1 |
Remove a physical volume |
删除物理卷 |
|
创建 VG |
vgcreate vg_name /dev/sdX1 |
Create a volume group |
创建卷组 |
|
添加 PV 到 VG |
vgextend vg_name /dev/sdY1 |
Add physical volume to volume group |
向卷组添加物理卷 |
|
从 VG 删除 PV |
vgreduce vg_name /dev/sdY1 |
Remove physical volume from VG |
从卷组移除物理卷 |
|
查看 VG |
vgdisplay / vgs |
Show volume group info |
查看卷组信息 |
|
删除 VG |
vgremove vg_name |
Delete a volume group |
删除卷组 |
|
创建 LV |
lvcreate -L 10G -n lv_name vg_name |
Create logical volume |
创建逻辑卷 |
|
查看 LV |
lvdisplay / lvs |
Show logical volume info |
查看逻辑卷信息 |
|
扩容 LV |
lvextend -L +5G /dev/vg_name/lv_name |
Extend logical volume |
扩展逻辑卷大小 |
|
缩容 LV |
lvreduce -L 5G /dev/vg_name/lv_name |
Reduce logical volume |
缩小逻辑卷 |
|
删除 LV |
lvremove /dev/vg_name/lv_name |
Delete logical volume |
删除逻辑卷 |
|
检查文件系统(ext4) |
e2fsck -f /dev/vg/lv |
Check ext4 filesystem |
检查 ext4 文件系统一致性 |
|
扩展 ext4 |
resize2fs /dev/vg/lv |
Resize ext4 filesystem |
扩展 ext4 文件系统 |
|
扩展 xfs |
xfs_growfs /mountpoint |
Grow xfs filesystem |
扩展 xfs 文件系统 |
|
格式化 ext4 |
mkfs.ext4 /dev/vg/lv |
Format LV as ext4 |
格式化为 ext4 |
|
格式化 xfs |
mkfs.xfs /dev/vg/lv |
Format LV as xfs |
格式化为 xfs |
|
创建快照 |
lvcreate -L 1G -s -n lv_snap /dev/vg/lv |
Create snapshot |
创建逻辑卷快照 |
|
删除快照 |
lvremove /dev/vg/lv_snap |
Remove snapshot |
删除快照 |
|
查看挂载情况 |
lsblk / df -hT |
Show block devices / mount info |
查看磁盘与挂载信息 |
|
刷新分区表 |
partprobe / udevadm settle |
Reload partition table |
刷新分区表 |
|
重命名 LV |
lvrename vg old_lv new_lv |
Rename LV |
重命名逻辑卷 |
|
重命名 VG |
vgrename old_vg new_vg |
Rename VG |
重命名卷组 |
适用于虚拟机linux磁盘调整大小步骤,这里介绍几种案例
实验环境:
vmware workstation 17

centos7.9 版本

场景分类
| 类型 | 文件系统 | 是否支持在线扩容 | 是否需重启 | 备注 |
|---|---|---|---|---|
| 非LVM 分区磁盘 | ext4 | ✅ 是 | ❌ 否 | 常见于直接分区使用场景 |
| 非LVM 分区磁盘 | xfs | ✅ 是 | ❌ 否 | xfs 不支持缩容 |
| LVM 分区磁盘 | ext4 | ✅ 是 | ❌ 否 | 支持弹性扩容 |
| LVM 分区磁盘 | xfs | ✅ 是 | ❌ 否 | 建议用于大数据场景 |
场景命令示例
| 类型 | 文件系统 | 命令示例 |
|---|---|---|
| 非LVM + ext4 | ext4 | fdisk → resize2fs /dev/sdX1 |
| 非LVM + xfs | xfs | fdisk → xfs_growfs /mountpoint |
| LVM + ext4 | ext4 | lvextend → resize2fs |
| LVM + xfs | xfs | lvextend → xfs_growfs /mountpoint |
🧾关键区别:MBR vs GPT
| 分区类型 | 最大支持容量 | 最大主分区数 | 推荐使用场景 |
|---|---|---|---|
| MBR(msdos) | 2TB | 4(主分区) | 小磁盘(≤2TB) |
| GPT(gpt) | 理论 18EB | 128(主分区) | 大磁盘(>2TB) |
小于2T环境
实验准备:
初始磁盘大小为80G,未划分逻辑卷,默认安装分区类型为xfs,远程登录命令示例如下
[root@test ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
sda 8:0 0 80G 0 disk
├─sda2 8:2 0 3.9G 0 part [SWAP]
├─sda3 8:3 0 75.9G 0 part /
└─sda1 8:1 0 300M 0 part /boot
sr1 11:1 1 1024M 0 rom
[root@test ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 9.5M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda3 xfs 76G 5.6G 71G 8% /
/dev/sda1 xfs 297M 204M 94M 69% /boot
tmpfs tmpfs 392M 0 392M 0% /run/user/0
[root@test ~]# pvs
[root@test ~]# vgs
[root@test ~]# lvs
[root@test ~]#
分别新增四块盘分别为100G,分区按照非LVM + ext4,非LVM + xfs,LVM + ext4,LVM + xfs,分别挂在data1,data2,data3,data4,挂载分区后,再次修改虚拟磁盘为200G ,如下:
[root@test ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdd 8:48 0 200G 0 disk
└─data3-lv0 253:1 0 100G 0 lvm /data3
sdb 8:16 0 200G 0 disk
└─sdb1 8:17 0 100G 0 part /data1
sr0 11:0 1 1024M 0 rom
sde 8:64 0 200G 0 disk
└─data4-lv0 253:0 0 100G 0 lvm /data4
sdc 8:32 0 200G 0 disk
└─sdc1 8:33 0 100G 0 part /data2
sda 8:0 0 80G 0 disk
├─sda2 8:2 0 3.9G 0 part [SWAP]
├─sda3 8:3 0 75.9G 0 part /
└─sda1 8:1 0 300M 0 part /boot
[root@test ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 9.5M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda3 xfs 76G 5.6G 71G 8% /
/dev/sda1 xfs 297M 204M 94M 69% /boot
tmpfs tmpfs 392M 0 392M 0% /run/user/0
/dev/sdb1 ext4 99G 61M 94G 1% /data1
/dev/sdc1 xfs 100G 33M 100G 1% /data2
/dev/mapper/data3-lv0 ext4 99G 61M 94G 1% /data3
/dev/mapper/data4-lv0 xfs 100G 33M 100G 1% /data4
[root@test ~]#
非LVM + ext4操作步骤 (小于2T磁盘环境)
# 删除原分区(不丢数据,别格式化)
# 重建新的分区起始扇区必须与原来相同
# 类型为 Linux (83)
[root@test ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdd 8:48 0 200G 0 disk
└─data3-lv0 253:1 0 100G 0 lvm /data3
sdb 8:16 0 200G 0 disk
└─sdb1 8:17 0 100G 0 part /data1
sr0 11:0 1 1024M 0 rom
sde 8:64 0 200G 0 disk
└─data4-lv0 253:0 0 100G 0 lvm /data4
sdc 8:32 0 200G 0 disk
└─sdc1 8:33 0 100G 0 part /data2
sda 8:0 0 80G 0 disk
├─sda2 8:2 0 3.9G 0 part [SWAP]
├─sda3 8:3 0 75.9G 0 part /
└─sda1 8:1 0 300M 0 part /boot
[root@test ~]#
[root@test ~]# umount /data1
[root@test ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
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/sdb: 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: 0xf87f8475
Device Boot Start End Blocks Id System
/dev/sdb1 2048 419430399 209714176 83 Linux
Command (m for help): d
Selected partition 1
Partition 1 is deleted
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-419430399, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-419430399, default 419430399):
Using default value 419430399
Partition 1 of type Linux and of size 200 GiB is set
Command (m for help): p
Disk /dev/sdb: 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: 0xf87f8475
Device Boot Start End Blocks Id System
/dev/sdb1 2048 419430399 209714176 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@test ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdd 8:48 0 200G 0 disk
└─data3-lv0 253:1 0 100G 0 lvm /data3
sdb 8:16 0 200G 0 disk
└─sdb1 8:17 0 200G 0 part
sr0 11:0 1 1024M 0 rom
sde 8:64 0 200G 0 disk
└─data4-lv0 253:0 0 100G 0 lvm /data4
sdc 8:32 0 200G 0 disk
└─sdc1 8:33 0 100G 0 part /data2
sda 8:0 0 80G 0 disk
├─sda2 8:2 0 3.9G 0 part [SWAP]
├─sda3 8:3 0 75.9G 0 part /
└─sda1 8:1 0 300M 0 part /boot
[root@test ~]# resize2fs /dev/sdb1
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/sdb1 is mounted on /data1; on-line resizing required
old_desc_blocks = 13, new_desc_blocks = 25
The filesystem on /dev/sdb1 is now 52428544 blocks long.
[root@test ~]# umount /dev/sdb1
[root@test ~]# resize2fs /dev/sdb1
resize2fs 1.42.9 (28-Dec-2013)
Please run 'e2fsck -f /dev/sdb1' first.
[root@test ~]# e2fsck -f /dev/sdb1
e2fsck 1.42.9 (28-Dec-2013)
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/sdb1: 12/13107200 files (0.0% non-contiguous), 870745/52428544 blocks
[root@test ~]# mount /dev/sdb1 /data1
[root@test ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 9.4M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda3 xfs 76G 5.6G 71G 8% /
/dev/sda1 xfs 297M 204M 94M 69% /boot
tmpfs tmpfs 392M 0 392M 0% /run/user/0
/dev/sdc1 xfs 100G 33M 100G 1% /data2
/dev/mapper/data3-lv0 ext4 99G 61M 94G 1% /data3
/dev/mapper/data4-lv0 xfs 100G 33M 100G 1% /data4
/dev/sdb1 ext4 197G 60M 188G 1% /data1
[root@test ~]#
扩容完毕
非LVM + xfs操作步骤 (小于2T磁盘环境))
步骤同上
# 删除原分区(不丢数据,别格式化)
# 重建新的分区起始扇区必须与原来相同
# 类型为 Linux (83)
xfs分区执行xfs_growfs ,xfs_growfs需要设备是挂载才可以执行扩容
[root@test ~]# umount /dev/sdc1
[root@test ~]# fdisk /dev/sdc
Welcome to fdisk (util-linux 2.23.2).
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/sdc: 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: 0xa9790030
Device Boot Start End Blocks Id System
/dev/sdc1 2048 209715199 104856576 83 Linux
Command (m for help): d
Selected partition 1
Partition 1 is deleted
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-419430399, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-419430399, default 419430399):
Using default value 419430399
Partition 1 of type Linux and of size 200 GiB is set
Command (m for help): p
Disk /dev/sdc: 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: 0xa9790030
Device Boot Start End Blocks Id System
/dev/sdc1 2048 419430399 209714176 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@test ~]#
[root@test ~]# xfs_growfs /dev/sdc1
xfs_growfs: /dev/sdc1 is not a mounted XFS filesystem
[root@test ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdd 8:48 0 200G 0 disk
└─data3-lv0 253:1 0 100G 0 lvm /data3
sdb 8:16 0 200G 0 disk
└─sdb1 8:17 0 200G 0 part /data1
sr0 11:0 1 1024M 0 rom
sde 8:64 0 200G 0 disk
└─data4-lv0 253:0 0 100G 0 lvm /data4
sdc 8:32 0 200G 0 disk
└─sdc1 8:33 0 200G 0 part
sda 8:0 0 80G 0 disk
├─sda2 8:2 0 3.9G 0 part [SWAP]
├─sda3 8:3 0 75.9G 0 part /
└─sda1 8:1 0 300M 0 part /boot
[root@test ~]# mount /dev/sdc1 /data2
[root@test ~]# xfs_growfs /dev/sdc1
meta-data=/dev/sdc1 isize=512 agcount=4, agsize=6553536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=26214144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=12799, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 26214144 to 52428544
[root@test ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 9.4M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda3 xfs 76G 5.6G 71G 8% /
/dev/sda1 xfs 297M 204M 94M 69% /boot
tmpfs tmpfs 392M 0 392M 0% /run/user/0
/dev/mapper/data3-lv0 ext4 99G 61M 94G 1% /data3
/dev/mapper/data4-lv0 xfs 100G 33M 100G 1% /data4
/dev/sdb1 ext4 197G 60M 188G 1% /data1
/dev/sdc1 xfs 200G 33M 200G 1% /data2
[root@test ~]#
扩容完毕
LVM + ext4操作步骤(小于2T磁盘环境))
[root@test ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdd data3 lvm2 a-- <100.00g 0
/dev/sde data4 lvm2 a-- <100.00g 0
[root@test ~]# vgs
VG #PV #LV #SN Attr VSize VFree
data3 1 1 0 wz--n- <100.00g 0
data4 1 1 0 wz--n- <100.00g 0
[root@test ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv0 data3 -wi-ao---- <100.00g
lv0 data4 -wi-ao---- <100.00g
[root@test ~]# pvresize /dev/sdd
Physical volume "/dev/sdd" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
[root@test ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdd data3 lvm2 a-- <200.00g 100.00g
/dev/sde data4 lvm2 a-- <100.00g 0
[root@test ~]# vgs
VG #PV #LV #SN Attr VSize VFree
data3 1 1 0 wz--n- <200.00g 100.00g
data4 1 1 0 wz--n- <100.00g 0
[root@test ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv0 data3 -wi-ao---- <100.00g
lv0 data4 -wi-ao---- <100.00g
[root@test ~]# lvextend -l +100%free /dev/mapper/data3-lv0
Size of logical volume data3/lv0 changed from <100.00 GiB (25599 extents) to <200.00 GiB (51199 extents).
Logical volume data3/lv0 successfully resized.
[root@test ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv0 data3 -wi-ao---- <200.00g
lv0 data4 -wi-ao---- <100.00g
[root@test ~]# resize2fs /dev/mapper/data3-lv0
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/data3-lv0 is mounted on /data3; on-line resizing required
old_desc_blocks = 13, new_desc_blocks = 25
The filesystem on /dev/mapper/data3-lv0 is now 52427776 blocks long.
[root@test ~]# umount /dev/mapper/data3-lv0
[root@test ~]# resize2fs /dev/mapper/data3-lv0
resize2fs 1.42.9 (28-Dec-2013)
Please run 'e2fsck -f /dev/mapper/data3-lv0' first.
[root@test ~]# e2fsck -f /dev/mapper/data3-lv0
e2fsck 1.42.9 (28-Dec-2013)
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/mapper/data3-lv0: 12/13107200 files (0.0% non-contiguous), 870745/52427776 blocks
[root@test ~]# resize2fs /dev/mapper/data3-lv0
resize2fs 1.42.9 (28-Dec-2013)
The filesystem is already 52427776 blocks long. Nothing to do!
[root@test ~]# mount /dev/mapper/data3-lv0 /data3
[root@test ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 9.4M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda3 xfs 76G 5.6G 71G 8% /
/dev/sda1 xfs 297M 204M 94M 69% /boot
tmpfs tmpfs 392M 0 392M 0% /run/user/0
/dev/mapper/data4-lv0 xfs 100G 33M 100G 1% /data4
/dev/sdb1 ext4 197G 60M 188G 1% /data1
/dev/sdc1 xfs 200G 33M 200G 1% /data2
/dev/mapper/data3-lv0 ext4 197G 60M 188G 1% /data3
[root@test ~]#
扩容完毕
LVM + xfs操作步骤 (小于2T磁盘环境)
[root@test ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdd data3 lvm2 a-- <200.00g 0
/dev/sde data4 lvm2 a-- <100.00g 0
[root@test ~]# vgs
VG #PV #LV #SN Attr VSize VFree
data3 1 1 0 wz--n- <200.00g 0
data4 1 1 0 wz--n- <100.00g 0
[root@test ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv0 data3 -wi-ao---- <200.00g
lv0 data4 -wi-ao---- <100.00g
[root@test ~]# pvresize /dev/sde
Physical volume "/dev/sde" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
[root@test ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdd data3 lvm2 a-- <200.00g 0
/dev/sde data4 lvm2 a-- <200.00g 100.00g
[root@test ~]# vgs
VG #PV #LV #SN Attr VSize VFree
data3 1 1 0 wz--n- <200.00g 0
data4 1 1 0 wz--n- <200.00g 100.00g
[root@test ~]# lvextend -l +100%free /dev/mapper/data4-lv0
Size of logical volume data4/lv0 changed from <100.00 GiB (25599 extents) to <200.00 GiB (51199 extents).
Logical volume data4/lv0 successfully resized.
[root@test ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv0 data3 -wi-ao---- <200.00g
lv0 data4 -wi-ao---- <200.00g
[root@test ~]# xfs_growfs /dev/mapper/data4-lv0
meta-data=/dev/mapper/data4-lv0 isize=512 agcount=4, agsize=6553344 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=26213376, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=12799, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 26213376 to 52427776
[root@test ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 9.4M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda3 xfs 76G 5.6G 71G 8% /
/dev/sda1 xfs 297M 204M 94M 69% /boot
tmpfs tmpfs 392M 0 392M 0% /run/user/0
/dev/mapper/data4-lv0 xfs 200G 33M 200G 1% /data4
/dev/sdb1 ext4 197G 60M 188G 1% /data1
/dev/sdc1 xfs 200G 33M 200G 1% /data2
/dev/mapper/data3-lv0 ext4 197G 60M 188G 1% /data3
[root@test ~]#
大于2T环境
注意:
✅对于 大于 2TB 的磁盘,如果你使用的是 非 LVM + ext4/xfs 分区,在扩容时需要特别注意:MBR 分区表的限制 —— 最大只支持到 2TB
✅磁盘原本为 MBR,需要重新分区为 GPT(数据会清除)
✅ 大于 2TB 的磁盘必须使用 GPT 分区表
✅LVM 下的扩容,LVM 的核心机制不依赖分区表,但在你用分区做 PV 或操作大于 2TB 磁盘时,分区表就变得相关了
关键区别:MBR vs GPT
| 分区类型 | 最大支持容量 | 最大主分区数 | 推荐使用场景 |
|---|---|---|---|
| MBR(msdos) | 2TB | 4(主分区) | 小磁盘(≤2TB) |
| GPT(gpt) | 理论 18EB | 128(主分区) | 大磁盘(>2TB) ✅ |
实验准备
将实验环境磁盘修改大小为4T
[root@test ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdd 8:48 0 4T 0 disk
└─data3-lv0 253:1 0 200G 0 lvm
sdb 8:16 0 4T 0 disk
└─sdb1 8:17 0 200G 0 part
sr0 11:0 1 1024M 0 rom
sde 8:64 0 4T 0 disk
└─data4-lv0 253:0 0 200G 0 lvm
sdc 8:32 0 4T 0 disk
└─sdc1 8:33 0 200G 0 part
sda 8:0 0 80G 0 disk
├─sda2 8:2 0 3.9G 0 part [SWAP]
├─sda3 8:3 0 75.9G 0 part /
└─sda1 8:1 0 300M 0 part /boot
[root@test ~]#
非LVM + ext4操作步骤(4T磁盘环境)
扩容采用的分区表是mbr,最大支持2T,多余的空间则无法使用,如需要全部空间投入使用,则需要备份原有数据,清除原有分区,重建gpt分区表。重新执行扩容,可考虑新增磁盘扩容方案。
fdisk 查看分区表命令如下
[root@test ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 4398.0 GB, 4398046511104 bytes, 8589934592 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: 0xf87f8475
Device Boot Start End Blocks Id System
/dev/sdb1 2048 4294967294 2147482623+ 83 Linux
[root@test ~]#
parted查看分区表如下
[root@test ~]# parted -l
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 4398GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 2199GB 2199GB primary ext4
非LVM + xfs操作步骤(4T磁盘环境)
同上,大于2T的空间需要重建分区表才可以使用,可考虑新增磁盘扩容方案。
LVM + ext4操作步骤(4T磁盘环境)
由于我们使用整块磁盘做pv,此时,分区表完全无关,扩容步骤同上
命令输出示例:
[root@test ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdd data3 lvm2 a-- <200.00g 0
/dev/sde data4 lvm2 a-- <200.00g 0
[root@test ~]# vgs
VG #PV #LV #SN Attr VSize VFree
data3 1 1 0 wz--n- <200.00g 0
data4 1 1 0 wz--n- <200.00g 0
[root@test ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv0 data3 -wi-a----- <200.00g
lv0 data4 -wi-a----- <200.00g
[root@test ~]# pvresize /dev/sdd
Physical volume "/dev/sdd" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
[root@test ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdd data3 lvm2 a-- <4.00t 3.80t
/dev/sde data4 lvm2 a-- <200.00g 0
[root@test ~]# vgs
VG #PV #LV #SN Attr VSize VFree
data3 1 1 0 wz--n- <4.00t 3.80t
data4 1 1 0 wz--n- <200.00g 0
[root@test ~]# lvextend -l +100%free /data/data3-lv0
"/data/data3-lv0": Invalid path for Logical Volume.
Run `lvextend --help' for more information.
[root@test ~]# lvextend -l +100%free /data/mapper/data3-lv0
"/data/mapper/data3-lv0": Invalid path for Logical Volume.
Run `lvextend --help' for more information.
[root@test ~]# lvextend -l +100%free /dev/mapper/data3-lv0
Size of logical volume data3/lv0 changed from <200.00 GiB (51199 extents) to <4.00 TiB (1048575 extents).
Logical volume data3/lv0 successfully resized.
[root@test ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv0 data3 -wi-a----- <4.00t
lv0 data4 -wi-a----- <200.00g
[root@test ~]# umount /dev/mapper/data3-lv0
umount: /dev/mapper/data3-lv0: not mounted
[root@test ~]# resize
resize2fs resizecons resizepart
[root@test ~]# resize2fs /dev/mapper/data3-lv0
resize2fs 1.42.9 (28-Dec-2013)
Please run 'e2fsck -f /dev/mapper/data3-lv0' first.
[root@test ~]# e2fsck -f /dev/mapper/data3-lv0
e2fsck 1.42.9 (28-Dec-2013)
/dev/mapper/data3-lv0: recovering journal
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/mapper/data3-lv0: 12/13107200 files (0.0% non-contiguous), 870745/52427776 blocks
[root@test ~]# resize2fs /dev/mapper/data3-lv0
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/mapper/data3-lv0 to 1073740800 (4k) blocks.
The filesystem on /dev/mapper/data3-lv0 is now 1073740800 blocks long.
[root@test ~]# mount /dev/mapper/data3-lv0 /data3
[root@test ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 9.4M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda3 xfs 76G 5.6G 71G 8% /
/dev/sda1 xfs 297M 204M 94M 69% /boot
tmpfs tmpfs 392M 0 392M 0% /run/user/0
/dev/sdb1 ext4 197G 60M 188G 1% /data1
/dev/mapper/data3-lv0 ext4 4.0T 46M 3.8T 1% /data3
/dev/sdc1 xfs 200G 33M 200G 1% /data2
/dev/mapper/data4-lv0 xfs 200G 33M 200G 1% /data4
[root@test ~]#
LVM + xfs操作步骤(4T磁盘环境)
由于我们使用整块磁盘做pv,此时,分区表完全无关,扩容步骤同上
命令输出示例:
[root@test ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdd data3 lvm2 a-- <4.00t 0
/dev/sde data4 lvm2 a-- <200.00g 0
[root@test ~]# vgs
VG #PV #LV #SN Attr VSize VFree
data3 1 1 0 wz--n- <4.00t 0
data4 1 1 0 wz--n- <200.00g 0
[root@test ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv0 data3 -wi-ao---- <4.00t
lv0 data4 -wi-ao---- <200.00g
[root@test ~]# pvresize /dev/sde
Physical volume "/dev/sde" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
[root@test ~]# lvextend -l +100%free /dev/mapper/data4-lv0
Size of logical volume data4/lv0 changed from <200.00 GiB (51199 extents) to <4.00 TiB (1048575 extents).
Logical volume data4/lv0 successfully resized.
[root@test ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdd data3 lvm2 a-- <4.00t 0
/dev/sde data4 lvm2 a-- <4.00t 0
[root@test ~]# vgs
VG #PV #LV #SN Attr VSize VFree
data3 1 1 0 wz--n- <4.00t 0
data4 1 1 0 wz--n- <4.00t 0
[root@test ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv0 data3 -wi-ao---- <4.00t
lv0 data4 -wi-ao---- <4.00t
[root@test ~]# xfs_growfs /dev/mapper/data4-lv0
meta-data=/dev/mapper/data4-lv0 isize=512 agcount=9, agsize=6553344 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=52427776, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=12799, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 52427776 to 1073740800
[root@test ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 9.4M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda3 xfs 76G 5.6G 71G 8% /
/dev/sda1 xfs 297M 204M 94M 69% /boot
tmpfs tmpfs 392M 0 392M 0% /run/user/0
/dev/sdb1 ext4 197G 60M 188G 1% /data1
/dev/mapper/data3-lv0 ext4 4.0T 46M 3.8T 1% /data3
/dev/sdc1 xfs 200G 33M 200G 1% /data2
/dev/mapper/data4-lv0 xfs 4.0T 40M 4.0T 1% /data4
[root@test ~]#
✅ 总结:
🧾分区表与 LVM 的关系详解
| 操作类型 | 是否与分区表有关 | 说明 |
|---|---|---|
| 扩展已有 PV(磁盘扩容) | ✅ 有一定关系 | 需要调整分区大小才能让 PV 感知新空间 |
| 添加新磁盘为 PV | ✅ 有关 | 必须使用 GPT 才能识别 >2TB 空间 |
| 原始磁盘整盘用作 PV(不分区) | ❌ 无关 | 可以不使用分区表,直接 /dev/sdX |
| LV 扩容 | ❌ 无关 | 与底层 PV 和分区表无关 |
| 文件系统扩容 | ❌ 无关 | 只与文件系统本身有关,如 resize2fs 或 xfs_growfs |
🧾 非 LVM vs LVM 环境使用与扩容总结
| 对比项 | 非 LVM 分区 | LVM(逻辑卷管理) |
|---|---|---|
| 是否推荐 | ⚠️ 一般场景可用 | ✅ 强烈推荐用于数据增长环境 |
| 初始部署简单 | ✅ 简单 | ⚠️ 略复杂(需了解 PV/VG/LV) |
| 后期扩容灵活性 | ❌ 差(几乎不可动态扩容) | ✅ 支持在线扩容 / 多盘扩容 |
| 支持多磁盘聚合 | ❌ 不支持 | ✅ 支持多个磁盘聚合为一卷组 |
| 数据快照 | ❌ 不支持 | ✅ 支持快照备份 |
| 整盘直接使用 | ✅ 直接分区挂载 | ✅ 推荐整盘做 LVM |
| 扩容操作步骤复杂度 | ✅ 简单(但功能少) | ⚠️ 步骤多,但灵活强大 |
| 支持文件系统 | ext4/xfs/btrfs 等 | ext4/xfs 等主流文件系统 |
| 缺点 | 无法在线扩容 | 操作稍复杂,不熟悉需学习 |
🧾推荐使用 LVM 的典型场景
|
场景 | 是否推荐 LVM |
|---|---|
数据量不断增长的服务器(如 /data) |
✅ 强烈推荐 |
| 需要做快照备份的业务(如数据库) | ✅ 推荐 |
| 使用虚拟机、云主机(可动态加磁盘) | ✅ 推荐 |
| 需要多个磁盘合并使用 | ✅ 推荐 |
| 宿主系统的根分区 | ⚠️ 可选(需小心操作) |
| 嵌入式或单用途小系统 | ❌ 不推荐 |
🧾LVM vs 非 LVM 性能对比
| 对比项 | 非 LVM(裸分区) | LVM |
|---|---|---|
| IO 性能(随机/顺序) | ✅ 最佳原始性能 | ⚠️ 理论略低,实际可忽略(<1-3%) |
| 文件系统支持 | ✅ 所有支持 | ✅ 所有支持(xfs/ext4/btrfs) |
| 缓存机制 | ✅ OS cache | ✅ 一样的 OS cache |
| CPU 占用 | 最低 | 略高,但通常 <1% |
| 多路径存储支持 | 手动配置 | ✅ 更好整合(尤其 SAN) |
| 系统资源占用 | ✅ 少 | ⚠️ 略高(<1% CPU) |
淘宝小店,欢迎你的光临,可定制你的需求

https://shop340822098.taobao.com/


浙公网安备 33010602011771号