查看扩容前磁盘状态
执行 lsblk 和 df -hT 命令。如果根目录(/)的“文件系统”一栏显示为 /dev/mapper/klas-root 或类似格式,说明系统使用了LVM 逻辑卷管理,可以不影响业务在线扩容
场景一:扩展已有系统盘(推荐)
这是最常见的方式,你在虚拟机平台(如VMware、KVM)上将现有的系统盘容量调大后,在系统内识别并分配这些新空间。
步骤1:在虚拟机平台扩容磁盘
首先,需要在你的虚拟机管理软件(如VMware、KVM)中,为虚拟机增加磁盘容量。操作完成后,启动或重启虚拟机。
步骤2:在Kylin V10系统内操作
查看并确认新空间:
[root@kylin10test ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 4.2G 0 rom
vda 253:0 0 65G 0 disk
├─vda1 253:1 0 600M 0 part /boot/efi
├─vda2 253:2 0 1G 0 part /boot
└─vda3 253:3 0 38.4G 0 part
├─klas-root 252:0 0 34.4G 0 lvm /
└─klas-swap 252:1 0 4G 0 lvm [SWAP]
[root@kylin10test ~]# df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 3.3G 0 3.3G 0% /dev
tmpfs tmpfs 3.3G 0 3.3G 0% /dev/shm
tmpfs tmpfs 3.3G 42M 3.3G 2% /run
/dev/mapper/klas-root xfs 35G 14G 22G 39% /
tmpfs tmpfs 3.3G 64K 3.3G 1% /tmp
/dev/vda2 xfs 1014M 196M 819M 20% /boot
/dev/vda1 vfat 599M 7.1M 592M 2% /boot/efi
tmpfs tmpfs 664M 0 664M 0% /run/user/992
overlay overlay 35G 14G 22G 39% /var/lib/docker/rootfs/overlayfs/a2fdd9f720c5e91e1a8e57ecf56c8f9becdd6733f7a7aa23fb161dab1b0733f2
overlay overlay 35G 14G 22G 39% /var/lib/docker/rootfs/overlayfs/f1d840a0936cf61bbc196f8dc7183e61f4d4c6436101da5fe87efeb790314093
overlay overlay 35G 14G 22G 39% /var/lib/docker/rootfs/overlayfs/c3161118c7be027e175c61ceba9962165bb580a5265d05e7f058ec68018e3987
tmpfs tmpfs 664M 0 664M 0% /run/user/0
你将看到 /dev/vda 的大小已经增加,但分区(如 /dev/vda3)和逻辑卷(klas-root)的大小尚未变化。
扩展系统分区:
使用 growpart 工具扩展系统所在分区(通常是 /dev/vda 的第二个分区)。如果未安装,先执行 yum install cloud-utils-growpart -y。 此处会安装一个包 cloud-utils-growpart-0.31-1.p01.ky10.aarch64(具体架构和版本号依据实际选择)
# 假设系统盘是 /dev/vda,需要扩展第三个分区
[root@kylin10test ~]# growpart /dev/vda 3
CHANGED: partition=3 start=3328000 old: size=80556032 end=83884032 new: size=132986847 end=136314847
此命令会将分区表调整,以使用新增加的磁盘空间。扩展物理卷(PV):
让LVM识别到分区变大的事实。
[root@kylin10test ~]# pvresize /dev/vda3
Physical volume "/dev/vda3" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
[root@kylin10test ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vda3 klas lvm2 a-- 63.41g 25.00g
[root@kylin10test ~]# vgs
VG #PV #LV #SN Attr VSize VFree
klas 1 2 0 wz--n- 63.41g 25.00g此时,执行 pvs 或 vgs 命令,你应该会看到卷组(klas)的可用空间(VFree)已经增加。
扩展逻辑卷(LV)和文件系统(一步到位):
这是最关键的一步,将卷组中所有的空闲空间分配给根分区所在的逻辑卷,并同时调整文件系统大小。
# 将卷组 klas 下的 root 逻辑卷扩展到使用所有空闲空间
[root@kylin10test ~]# lvextend -r -l +100%FREE /dev/klas/root
Size of logical volume klas/root changed from 34.41 GiB (8809 extents) to 59.41 GiB (15209 extents).
Logical volume klas/root successfully resized.
meta-data=/dev/mapper/klas-root isize=512 agcount=4, agsize=2255104 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=9020416, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=4404, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 9020416 to 15574016
参数说明:
-r:自动调整文件系统大小(这一步非常重要,尤其对于XFS文件系统)。-l +100%FREE:使用卷组中所有剩余的空闲空间。
如果你的文件系统是XFS(Kylin V10 SP3默认),也可以分开执行:
bash
lvextend -l +100%FREE /dev/klas/root
xfs_growfs /dev/klas/root注意:对于XFS文件系统,必须使用 xfs_growfs 且挂载点必须处于挂载状态;对于ext4,则使用 resize2fs。
验证扩容结果:
再次使用df -h /查看根目录,其可用容量应该已经成功增加。
[root@kylin10test ~]# df -h /
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/klas-root 60G 14G 47G 23% /📂 场景二:新增数据盘并挂载
如果你的需求是为虚拟机添加一块全新的数据盘(例如 /dev/vdb),用于存储应用数据。
查看新磁盘:
bash
lsblk确认新磁盘(如
/dev/vdb)已被系统识别。分区(可选):
新磁盘可以直接用于创建物理卷。如果想先分区,可使用fdisk或parted工具。初始化并挂载:
bash
# 1. 创建物理卷 pvcreate /dev/vdb # 2. 创建卷组,例如命名为 vg_data vgcreate vg_data /dev/vdb # 3. 创建逻辑卷,例如命名为 lv_data,使用全部空间 lvcreate -l +100%FREE -n lv_data vg_data # 4. 格式化为 xfs 文件系统 mkfs.xfs /dev/vg_data/lv_data # 5. 创建挂载点并挂载 mkdir /data mount /dev/vg_data/lv_data /data设置开机自动挂载:
使用blkid /dev/vg_data/lv_data获取逻辑卷的UUID,然后编辑/etc/fstab文件,添加一行内容如下,保存后执行mount -a验证配置是否正确。text
UUID=<你的UUID> /data xfs defaults 0 0
⚠️ 注意事项与排障
扩容前备份:任何磁盘操作都存在风险,强烈建议在操作前对虚拟机进行快照或备份重要数据。
fstab配置错误:修改
/etc/fstab时务必谨慎,错误的配置可能导致系统无法启动。修改后务必使用mount -a测试。分区表异常:在某些情况下,扩容后执行
fdisk -l可能会报“PMBR size mismatch”之类的错误,这通常不影响使用,但若想消除,可以使用growpart或parted工具修复分区表