银河麒麟V10(Kylin V10)虚拟机根分区扩容实战:VMware 添加新磁盘 + LVM + XFS 在线扩展

在虚拟机环境中,磁盘空间不足是最常见的问题之一。本文基于 银河麒麟 V10 系统(类似 CentOS/RHEL,使用 LVM 管理根分区,文件系统为 XFS),详细记录了在 VMware Workstation 中通过添加一块新虚拟硬盘,并将其融入现有 LVM 卷组,实现根分区在线扩容的完整过程。

本文适用于:

  • 系统:银河麒麟 V10(或其他使用 LVM + XFS 的 Linux 发行版)
  • 虚拟化平台:VMware Workstation 17 Pro(其他版本类似)
  • 场景:根分区空间不足,想通过添加新磁盘扩容根分区(/)

重要提醒:所有磁盘操作都有风险,请务必提前备份重要数据或创建 VMware 快照!

一、初始环境

虚拟机原始磁盘:20G(/dev/sda)

分区情况:

  • /dev/sda1:1G(/boot)
  • /dev/sda2:19G(LVM 物理卷,类型 8e)

LVM 情况:

  • 卷组(VG):klas
  • 逻辑卷(LV):
    • klas-root:17G(根分区,XFS 文件系统)
    • klas-swap:2G

初始空间使用情况:

bash 复制代码
# df -h /
文件系统               容量  已用  可用 已用% 挂载点
/dev/mapper/klas-root   17G   11G  7.0G   60% /

卷组已满:

bash 复制代码
# vgs
  VG   #PV #LV #SN Attr   VSize   VFree
  klas   1   2   0 wz--n- <19.00g     0

根文件系统类型:

bash 复制代码
# blkid /dev/mapper/klas-root
/dev/mapper/klas-root: UUID="533ebcf0-7d8d-4914-ba59-fa08d6459ba0" TYPE="xfs"

二、扩容方案

  1. 在 VMware 中添加一块 50G 新虚拟硬盘(/dev/sdb)
  2. 对新磁盘分区(创建 Linux LVM 类型分区)
  3. 将新分区初始化为 LVM 物理卷(PV)
  4. 将新 PV 加入现有卷组 klas
  5. 扩展根逻辑卷(klas-root)
  6. 在线扩展 XFS 文件系统

整个过程无需重启,完全在线操作。

三、详细操作步骤

步骤1:VMware 中添加新磁盘(略)

关闭虚拟机 → 编辑虚拟机设置 → 添加硬盘 → 创建 50G 新磁盘 → 启动虚拟机。

启动后可见新磁盘:

bash 复制代码
# fdisk -l
...
Disk /dev/sdb:50 GiB,...

步骤2:对新磁盘分区(创建 Linux LVM 类型分区)

bash 复制代码
fdisk /dev/sdb

操作流程:

  • n → 新建分区
  • p → 主分区
  • 1 → 分区号 1
  • 起点扇区直接回车(默认)
  • 末尾扇区直接回车(使用全部空间)
  • t → 修改分区类型
  • 8e → Linux LVM
  • w → 写入并退出

验证:

bash 复制代码
# fdisk -l /dev/sdb
Disk /dev/sdb:50 GiB,...
设备       启动   起点      末尾      扇区   大小 Id 类型
/dev/sdb1        2048 104857599 104855552    50G 8e Linux LVM

步骤3:初始化物理卷(PV)

bash 复制代码
pvcreate /dev/sdb1

验证:

bash 复制代码
# pvs
  PV         VG   Fmt  Attr   PSize   PFree
  /dev/sda2  klas lvm2 a--  <19.00g     0
  /dev/sdb1       lvm2 a--   50.00g 50.00g

步骤4:将新 PV 加入现有卷组 klas

bash 复制代码
vgextend klas /dev/sdb1

验证:

bash 复制代码
# vgs
  VG   #PV #LV #SN Attr   VSize   VFree
  klas   2   2   0 wz--n- <69.00g <50.00g   # 总大小变为约69G

步骤5:扩展根逻辑卷(将新空间全部加入根分区)

bash 复制代码
lvextend -l +100%FREE /dev/mapper/klas-root

(也可指定大小,如 lvextend -L +49G /dev/mapper/klas-root

验证:

bash 复制代码
# lvs
# 或
# lvdisplay /dev/klas/root

根 LV 大小应变为约 67G。

步骤6:在线扩展 XFS 文件系统(关键一步)

bash 复制代码
xfs_growfs /

此命令会立即将新增空间应用到根文件系统。

步骤7:最终验证

bash 复制代码
# df -h /
文件系统               容量  已用  可用 已用% 挂载点
/dev/mapper/klas-root   67G   11G   57G   16% /

成功!根分区从 17G 扩容到 67G,可用空间 57G。

完整状态检查:

bash 复制代码
# pvs          # 两个 PV
# vgs          # VG 约69G
# lvs          # root LV 约67G
# df -h        # 根分区已增大

四、注意事项

  1. 备份优先:操作前务必创建 VMware 快照或备份重要数据。
  2. XFS 文件系统必须使用 xfs_growfs ,不能用 resize2fs
  3. 整个过程无需重启,扩展后空间立即可用。
  4. 后续再扩容 :只需再添加磁盘,从 pvcreate 开始重复后续步骤即可。
  5. 如果新磁盘已被挂载 :执行 pvcreate 前需先 umount

五、总结

通过 LVM 的强大灵活性,我们只需添加一块新磁盘,就能轻松实现根分区的在线扩容,无需重新安装系统或迁移数据。这在虚拟机环境中尤其实用。

本次扩容从 17G → 67G,整个过程不到 10 分钟,操作简单且安全。

相关推荐
劳埃德福杰2 天前
【Kylin银河麒麟】文件系统磁盘空间满导致无法进入操作系统
运维·服务器·电脑·笔记本电脑·kylin
紫郢剑侠8 天前
【C语言编程gcc@Kylin | 麒麟 】5:获取系统启动时间
c语言·开发语言·kylin·gcc·麒麟操作系统
l1t10 天前
用官方安装脚本安装duckdb 1.5并测试加载各种插件
数据库·docker·postgresql·kylin
l1t11 天前
在ARM64 KyLin计算机上安装llama.cpp
大数据·llama·kylin
66清小风11 天前
服务器安装操作系统报X or window manager startup failed, falling back to mode
linux·kylin
l1t11 天前
在华为arm64 kylin计算机上安装docker编译llama.cpp的步骤
华为·docker·llama·kylin
ascarl201011 天前
Kylin V10 服务器,解决Xorg 占用内存很高的问题
服务器·github·kylin
LinuxGeek102411 天前
从Centos-7迁移和升级到(银河麒麟)Kylin V7的教程
python·centos·kylin
运维老司机11 天前
国产鲲鹏服务器 Kylin Linux 部署 TiDB v8.5.5 实战(TiUP 单机部署完整教程)
linux·服务器·kylin
ZFB000125 天前
【麒麟桌面系统】V10-SP1 2503 系统知识——插入U盘(移动硬盘)为只读状态
linux·运维·kylin