银河麒麟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 分钟,操作简单且安全。

相关推荐
麟飞扬4 天前
麒麟系统安全基线检查与自动加固脚本
安全·系统安全·kylin·麒麟系统
LinuxGeek10249 天前
Kylin-Server-V11、openEuler-22.03和openEuler-24.03的MySQL 9.7.0版本正式发布
大数据·mysql·kylin
Drone_xjw9 天前
解决 Qt 程序在 Kylin(麒麟)系统下表头“白屏”的问题
开发语言·qt·kylin
Drone_xjw9 天前
Qt QTableView 表头变白问题(Kylin/UKUI系统)原因分析与解决方案
开发语言·qt·kylin
Alex艾力的IT数字空间15 天前
在 Kylin(麒麟)操作系统上搭建 Docker 环境
大数据·运维·缓存·docker·容器·负载均衡·kylin
Drone_xjw16 天前
一次 Qt 程序在 Kylin 系统下表头“白屏”的排查之旅
qt·kylin·一次
劳埃德福杰1 个月前
【Kylin银河麒麟】文件系统磁盘空间满导致无法进入操作系统
运维·服务器·电脑·笔记本电脑·kylin
紫郢剑侠2 个月前
【C语言编程gcc@Kylin | 麒麟 】5:获取系统启动时间
c语言·开发语言·kylin·gcc·麒麟操作系统
l1t2 个月前
用官方安装脚本安装duckdb 1.5并测试加载各种插件
数据库·docker·postgresql·kylin
l1t2 个月前
在ARM64 KyLin计算机上安装llama.cpp
大数据·llama·kylin