KVM虚拟机磁盘扩容实战指南-不增加额外磁盘
📌 背景与痛点
在Kubernetes集群中,NFS存储常被用作持久化存储方案。
当业务数据量激增时,虚拟机磁盘容量不足会导致Pod挂载失败、服务中断等严重问题。
本文将手把手教你如何为KVM虚拟机扩容磁盘,特别针对/dev/mapper/centos-root
分区扩容200G的实战场景,完美适配k8s集群的存储扩容需求。
🚀 方案选型:直接扩容VS新增磁盘
方案 | 优势 | 适用场景 |
---|---|---|
直接扩容 | ⚡️ 操作简单,无需修改挂载配置 | 已有分区空间不足,需快速扩容 |
新增磁盘 | 🔒 数据隔离性强,风险可控 | 需要完全独立存储空间的场景 |
🔧 实战步骤:直接扩容根分区(/dev/mapper/centos-root)
⚠️ 操作前必读
- 关闭虚拟机:避免数据损坏
virsh shutdown <虚拟机名称>
- 删除快照(如有):
virsh snapshot-delete <虚拟机名称> <快照名称>
- 备份数据:重要数据务必备份,以防万一。
cp -rp /home/zjl/software/qcow/centos79-node10.qcow2 /home/zjl/softwares/qcow/centos79-node10_bak.qcow2
💻 详细操作流程
1. 宿主机(物理机)扩容磁盘镜像
# 关闭虚拟机后执行(替换实际镜像路径)
qemu-img resize /home/zjl/software/qcow/centos79-node10.qcow2 +200G
# 启动虚拟机
virsh start <虚拟机名称>
2. 虚拟机内部操作
# 重新分区(示例:vda2从39G扩容到239G)
fdisk /dev/vda
d # 删除原有分区,删除分区不会删除数据,仅标记为空闲
2
n # 新建分区
p
2
2048 # 必须与原分区起始扇区一致
w # 保存退出
# 刷新分区表
partprobe
3. LVM逻辑卷扩展
# 扩展物理卷(自动识别新增空间)
pvresize /dev/vda2
# 扩展卷组(分配全部空间)
不需要扩展卷组,能自动识别新增空间
# 扩展逻辑卷(分配全部空间)
lvextend -l +100%FREE /dev/mapper/centos-root
4. 文件系统扩容
# XFS文件系统(CentOS 7默认)
xfs_growfs /dev/mapper/centos-root
# ext4文件系统(替换为)
resize2fs /dev/mapper/centos-root
5. 验证结果
df -hT / # 应显示接近237G容量
lsblk # 查看vda2分区大小
vgdisplay # 确认卷组可用空间
⚠️ 关键注意事项
- 分区删除风险:删除分区时务必确保起始扇区与原分区一致
- 文件系统类型:XFS/ext4使用不同扩容命令,可通过
lsblk -f
确认 - LVM卷组名称:通过
vgdisplay
确认实际卷组名(默认centos
) - NFS服务重启:扩容后建议重启NFS服务确保挂载生效
systemctl restart nfs-server
🎉 结语
通过上述步骤,你可以为KVM虚拟机根分区成功扩容200G。
此方法适用于快速解决磁盘空间不足问题,无需额外添加新磁盘,特别适合k8s集群环境下的存储扩容需求。
记得在操作前做好充分备份,以防数据丢失!
评论区