VMware虚拟机CentOS磁盘扩容的全过程

 更新时间:2025年09月10日 09:57:11   作者:Microi风闲  
在日常开发和运维中,我们经常遇到 VMware 虚拟机磁盘空间不足的问题,本文记录了如何为一台正在运行的 CentOS 7 虚拟机安全地扩容磁盘空间的全过程,需要的朋友可以参考下

前言

在日常开发和运维中,我们经常遇到 VMware 虚拟机磁盘空间不足的问题。本文记录了如何为一台正在运行的 CentOS 7 虚拟机安全地扩容磁盘空间的全过程。本次操作不仅涵盖了标准的扩容步骤,还重点解决了实际操作中可能遇到的两个关键问题:

  1. growpart 工具报错:unexpected output in sfdisk --version
  2. 在标准的 LVM (Logical Volume Manager) 结构下如何正确扩容

本文提供两种方法:推荐的标准LVM流程 和 备用方案,成功解决了从 VMware 层面到操作系统内部的完整扩容。最终成功将系统根目录从 26G 扩容至 76G。

一、环境与背景

  • 虚拟化平台: VMware Workstation 16/17 (ESXi 步骤类似)
  • 客户机系统: CentOS 7.x
  • 初始磁盘: 20G
  • 目标磁盘: 80G
  • 问题现状: 根目录 (/) 空间不足,需将其扩容。
  • 关键特征: 系统采用 LVM 分区结构。

扩容前使用 lsblkdf -h 查看磁盘情况:

$ sudo lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   80G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   29G  0 part 
  ├─centos-root 253:0    0   26G  0 lvm  /
  └─centos-swap 253:1    0    3G  0 lvm  [SWAP]

二、第一阶段:VMware 层面扩容

警告:操作前请务必对虚拟机创建快照或备份,以防数据丢失!

1.✅关闭虚拟机: 确保目标 CentOS 虚拟机已完全关机(Power Off),而不是挂起(Suspend)。
2. ✅编辑虚拟机设置: 在 VMware 中,右键点击 虚拟机 -> “设置” (Settings)。
3. ✅扩展磁盘: 选择 “硬盘” (Hard Disk) -> 点击 “扩展” (Expand) 按钮。
4. ✅设置新容量: 在弹出的窗口中,输入大于当前值的容量(例如从 20G 扩展到 80G)。点击确定,等待 VMware 完成磁盘文件的扩容。

至此,虚拟硬盘已变大,但操作系统还无法使用新空间。

三、第二阶段:CentOS 系统内部扩容

启动 CentOS 虚拟机并登录。以下是操作的核心步骤。

方法一:标准LVM扩容流程(推荐)

这是最正确、最安全的流程,适用于标准的 LVM 分区结构。

步骤 1: 查看磁盘情况

首先确认 VMware 扩容是否成功,并看清磁盘结构。

sudo lsblk
sudo parted /dev/sda print

从输出可以清晰看到:

  • /dev/sda 磁盘已变为 80G。
  • 但分区 /dev/sda2 仍为 31.1G,这意味着有大量空闲空间位于 sda2 分区之后。
  • /dev/sda2 的类型是 lvm,我们的根文件系统实际在逻辑卷 centos-root 上。

结论:我们需要将磁盘末端的空闲空间 -> 加入到 sda2 分区 -> 被 LVM 物理卷识别 -> 将新空间加入到 centos 卷组 -> 最后扩展 centos-root 逻辑卷及其文件系统。

步骤 2: 扩展 sda2 分区

使用 parted 工具将 sda2 分区扩展到磁盘末尾。

sudo parted /dev/sda

parted 交互式命令行中执行:

(parted) resizepart 2 -1 # 将第2个分区扩展到所有剩余空间
(parted) quit            # 退出

注意:-1 表示扩展到最大可用空间。如果 resizepart 命令不可用(极旧版本),需使用 rm 和 mkpart 重建分区,但风险极高,不推荐。

步骤 3: 刷新内核分区表

让系统在不重启的情况下识别新的分区大小。

sudo partprobe /dev/sda

步骤 4: 扩展 LVM 物理卷 (PV)

/dev/sda2 本身是一个物理卷,我们需要调整其大小。

sudo pvresize /dev/sda2

执行后,使用 sudo pvdisplay 查看,会发现 Free PE 空间增加了。

步骤 5: 扩展逻辑卷 (LV)

将卷组中的空闲空间全部分配给 centos-root 逻辑卷。

# 查看卷组空闲空间
sudo vgdisplay

# 将所有空闲空间扩展到 centos-root 逻辑卷
sudo lvextend -l +100%FREE /dev/mapper/centos-root

步骤 6: 扩展文件系统 (XFS)

最后一步,扩展逻辑卷上的文件系统,才能真正使用空间。

# CentOS 7 默认使用 XFS 文件系统
sudo xfs_growfs /

# 如果是 Ext4 文件系统,请使用以下命令:
# sudo resize2fs /dev/mapper/centos-root

步骤 7: 验证结果
运行命令检查最终成果:

df -h
lsblk

输出应显示根目录 / 的挂载点大小已变为 76G 左右,扩容成功!

方法二:解决 growpart 报错方案(备用)

如果在非LVM系统上使用传统方法,可能会遇到 growpart 报错。

错误信息:

sudo growpart /dev/sda 2
unexpected output in sfdisk --version [sfdisk,来自 util-linux 2.23.2]

原因: CentOS 7 自带的 util-linux 版本过低,与 growpart 脚本不兼容。

解决方案:

直接使用 parted 替代(如上文方法一所示),这是最佳解决方案。

或尝试更新 cloud-utils-growpart 包:

sudo yum update cloud-utils-growpart

四、总结与注意事项

  • 核心要点: 操作前一定要用 lsblkdf -T 命令搞清楚磁盘和文件系统结构。识别 LVM 是关键,它决定了后续完全不同的操作流程。
  • 推荐流程: 对于现代 CentOS/RHEL 系统,标准 LVM 扩容流程 ( parted -> pvresize -> lvextend -> xfs_growfs ) 是唯一正确路径。
  • 备份!备份!备份!: 任何磁盘分区操作都有极高风险,操作前务必为虚拟机创建快照。
  • 工具选择: 放弃陈旧的 growpartfdisk 脚本,parted 是更强大、更现代的命令行分区工具。

到此这篇关于VMware虚拟机CentOS磁盘扩容的全过程的文章就介绍到这了,更多相关VMware CentOS磁盘扩容内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vmware12虚拟机安装教程 Vmware12虚拟机上安装Oracle

    Vmware12虚拟机安装教程 Vmware12虚拟机上安装Oracle

    这篇文章主要为大家详细介绍了Vmware12虚拟机安装教程,以及在Vmware12虚拟机上安装Oralce,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • VMware虚拟机和Windows主机不在同一网段无法连接问题解决

    VMware虚拟机和Windows主机不在同一网段无法连接问题解决

    本文主要介绍了VMware虚拟机和Windows主机不在同一网段无法连接问题解决,详细介绍了通过配置VMware虚拟机的网络设置和更改Windows主机的网络配置来解决问题的步骤,感兴趣的可以了解一下
    2023-08-08
  • VMware下安装VMware tools,安装文件没有出现问题的解决

    VMware下安装VMware tools,安装文件没有出现问题的解决

    这篇文章主要介绍了VMware下安装VMware tools,安装文件没有出现问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • 详解VMware开启模块diskearly的操作失败的解决

    详解VMware开启模块diskearly的操作失败的解决

    这篇文章主要介绍了详解VMware开启模块diskearly的操作失败的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • VMware虚拟机中安装Win10操作系统的图文教程

    VMware虚拟机中安装Win10操作系统的图文教程

    本文主要介绍了VMware虚拟机中安装Win10操作系统的图文教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Centos7通过SSH使用密钥如何实现免密登录

    Centos7通过SSH使用密钥如何实现免密登录

    PublicKey认证是一种无需密码即可登录远程系统的安全方式,基于一对密钥:publickey和privatekey,通过在远程系统上放置publickey,本地使用privatekey进行解密,从而验证身份,在CentOS 7上,可以通过生成密钥对并在远程系统上配置authorized_keys文件来实现免密登录
    2024-11-11
  • VMware虚拟机安装Ubuntu 2022最新版图文教程

    VMware虚拟机安装Ubuntu 2022最新版图文教程

    这篇文章主要介绍了VMware虚拟机安装Ubuntu 2022最新版详细图文安装教程(VMware虚拟机安装+Ubuntu下载+VMware虚拟机配置运行),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • VMware12安装centOS8的方法步骤(vm虚拟机安装centos8教程)

    VMware12安装centOS8的方法步骤(vm虚拟机安装centos8教程)

    这篇文章主要介绍了VMware12安装centOS8的方法步骤(vm虚拟机安装centos8教程),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • 详解CentOS下VMware用桥接模式,静态ip上外网

    详解CentOS下VMware用桥接模式,静态ip上外网

    这篇文章主要介绍了详解CentOS下VMware用桥接模式,静态ip上外网,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-10-10
  • VMware vCenter6.7添加ESXI主机的教程图解

    VMware vCenter6.7添加ESXI主机的教程图解

    这篇文章主要介绍了VMware vCenter6.7添加ESXI主机,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05

最新评论