如何快速增加CentOS虚拟机硬盘容量,轻松拓展更多存储空间?
- 内容介绍
- 文章标签
- 相关推荐
一、常见痛点:为什么扩容后仍看不到空间?
在日常使用 CentOS 虚拟机 时最让人抓狂的往往是:
-
新增的磁盘容量在
df -h中没有体现,程序仍然提示 “磁盘已满”。 -
执行
pvcreate /dev/sda3等命令时出现 “Device is busy” 或 “ext3 signature detected” 的错误。 - 即使在虚拟化网站里已经把硬盘大小调到 100 GB,CentOS 仍只显示原来的 30 GB。
- 误操作导致数据丢失或程序无法启动。
这些问题的根源大多是:硬件层面的容量已经扩大,但程序层面的分区、LVM 或文件程序没有同步更新。下面的步骤将帮助你一步步排查并解决掉。
二、前置准备:安全第一,确保不丢数据
1. 停机备份
在任何磁盘操作之前。请先关闭虚拟机并对 .vmdk/.vdi 文件做完整备份,防止意外导致不可恢复的数据损失。
2. 检查当前磁盘布局
# lsblk
# fdisk -l
# vgs # 查看卷组信息
# lvs # 查看逻辑卷信息
# df -h # 查看挂载点使用情况
3. 确认 LVM 使用情况
如果程序采用 LVM,则需要在 LVM 层面 添加新空间;如果是传统分区,则只需调整分区和文件程序。
三、完整扩容流程
1️⃣ 在 VMware 中扩大虚拟磁盘
- 关闭虚拟机。
- 右键 → Edit Settings → Hard Disk → Expand...输入目标大小,确认保存。
- 启动虚拟机,登录后继续以下操作。
2️⃣ 在 CentOS 中识别新增空间
# partprobe # 通知内核重新读取分区表
# lsblk # 新增的未分配空间会显示为 /dev/sda 的空闲区域
3️⃣ 为新增空间创建新分区
# fdisk /dev/sda
# 步骤:
# m → 查看帮助
# n → 新建分区
# p → 主分区
# → 接受默认起始柱面
# → 接受默认结束柱面
# t → 设置类型为 Linux LVM
# w → 写入并退出
4️⃣ 将新分区加入 LVM
P.V.:LVM 是最灵活的方式,推荐在生产环境中使用。
# pvcreate /dev/sdaX # X 为新建的分区号,例如 /dev/sda4
# vgextend centos-vg /dev/sdaX # 将物理卷加入已有卷组
# vgs # 确认可用 PE 增加
5️⃣ 逻辑卷 & 文件程序
- a) 根目录
# lvextend -l +100%FREE /dev/mapper/centos-root # 将所有空闲 PE 分配给根卷
# xfs_growfs / # XFS 文件程序
# # 若使用 ext4。则执行:
# # resize2fs /dev/mapper/centos-root
# lvextend -L +20G /dev/mapper/centos-home # 增加固定大小
# xfs_growfs /home # XFS 示例
6️⃣ 验证扩容是否成功
# df -h # 检查挂载点大小是否已增长
# lvs # 查看逻辑卷的新容量
# vgs # 检查卷组剩余可用空间是否为零或符合预期
四、常见问题与排错技巧
| 问题表现 | 方法 |
|---|---|
| 扩容后 df -h 未变化 | - 确认是否已对正确的逻辑卷执行 xfs_growfs/reszie2fs
- 检查是否忘记运行 partprobe /wipefs -a |
| "Device is busy" 或 "Cannot open volume group" | - 确保相关 LV 没有被挂载在只读模式
- 使用 umount /dmeventd --daemon |
| "ext3 signature detected on /dev/sdaX" | - 按提示输入 "y" 清除旧签名后再执行 Pvcreate |
| LVM 卷组找不到新 PV | -
运行 wipefs -a /dev/sdaX && pvcreate /dev/sdaX && vgextend… |
| LXFS 文件程序报错 “Filesystem has unsupported features” | - 确认内核版本支持 XFS 的最新特性;怎么说呢,若不支持,可考虑先将 LV 格式化为 ext4 再迁移数据。 |
| LUKS 加密磁盘无法直接 pvcreate | - 解密后再进行 PV 操作;或者在加密层之上创建新的 LUKS 容器再做 PV。 |
五、快速回顾:一步到位的扩容要点 ✅
- 先扩大虚拟硬盘:停机 → VMware/VirtualBox 调整容量 → 启动 VM。其实,
-
再让 OS 认识新空间:`partprobe` + `fdisk` 新建分区或直接使用未划分的空闲块。不过,If using LVM:
- `pvcreate` 把新分区变成物理卷;
- `vgextend` 把 PV 加入现有卷组;不过,
- `lvextend` 给需要的 LV 分配额外空间;
- `xfs_growfs`把文件程序撑满。
If not using LVM:
- `fdisk` 划出新的主分区;
- `mkfs.xfs` 或 `mkfs.ext4` 格式化;
- `mount` 并编辑 `/etc/fstab` 实现永久挂载。
六、从“容量不足”到“随心所欲” 🚀
一、常见痛点:为什么扩容后仍看不到空间?
在日常使用 CentOS 虚拟机 时最让人抓狂的往往是:
-
新增的磁盘容量在
df -h中没有体现,程序仍然提示 “磁盘已满”。 -
执行
pvcreate /dev/sda3等命令时出现 “Device is busy” 或 “ext3 signature detected” 的错误。 - 即使在虚拟化网站里已经把硬盘大小调到 100 GB,CentOS 仍只显示原来的 30 GB。
- 误操作导致数据丢失或程序无法启动。
这些问题的根源大多是:硬件层面的容量已经扩大,但程序层面的分区、LVM 或文件程序没有同步更新。下面的步骤将帮助你一步步排查并解决掉。
二、前置准备:安全第一,确保不丢数据
1. 停机备份
在任何磁盘操作之前。请先关闭虚拟机并对 .vmdk/.vdi 文件做完整备份,防止意外导致不可恢复的数据损失。
2. 检查当前磁盘布局
# lsblk
# fdisk -l
# vgs # 查看卷组信息
# lvs # 查看逻辑卷信息
# df -h # 查看挂载点使用情况
3. 确认 LVM 使用情况
如果程序采用 LVM,则需要在 LVM 层面 添加新空间;如果是传统分区,则只需调整分区和文件程序。
三、完整扩容流程
1️⃣ 在 VMware 中扩大虚拟磁盘
- 关闭虚拟机。
- 右键 → Edit Settings → Hard Disk → Expand...输入目标大小,确认保存。
- 启动虚拟机,登录后继续以下操作。
2️⃣ 在 CentOS 中识别新增空间
# partprobe # 通知内核重新读取分区表
# lsblk # 新增的未分配空间会显示为 /dev/sda 的空闲区域
3️⃣ 为新增空间创建新分区
# fdisk /dev/sda
# 步骤:
# m → 查看帮助
# n → 新建分区
# p → 主分区
# → 接受默认起始柱面
# → 接受默认结束柱面
# t → 设置类型为 Linux LVM
# w → 写入并退出
4️⃣ 将新分区加入 LVM
P.V.:LVM 是最灵活的方式,推荐在生产环境中使用。
# pvcreate /dev/sdaX # X 为新建的分区号,例如 /dev/sda4
# vgextend centos-vg /dev/sdaX # 将物理卷加入已有卷组
# vgs # 确认可用 PE 增加
5️⃣ 逻辑卷 & 文件程序
- a) 根目录
# lvextend -l +100%FREE /dev/mapper/centos-root # 将所有空闲 PE 分配给根卷
# xfs_growfs / # XFS 文件程序
# # 若使用 ext4。则执行:
# # resize2fs /dev/mapper/centos-root
# lvextend -L +20G /dev/mapper/centos-home # 增加固定大小
# xfs_growfs /home # XFS 示例
6️⃣ 验证扩容是否成功
# df -h # 检查挂载点大小是否已增长
# lvs # 查看逻辑卷的新容量
# vgs # 检查卷组剩余可用空间是否为零或符合预期
四、常见问题与排错技巧
| 问题表现 | 方法 |
|---|---|
| 扩容后 df -h 未变化 | - 确认是否已对正确的逻辑卷执行 xfs_growfs/reszie2fs
- 检查是否忘记运行 partprobe /wipefs -a |
| "Device is busy" 或 "Cannot open volume group" | - 确保相关 LV 没有被挂载在只读模式
- 使用 umount /dmeventd --daemon |
| "ext3 signature detected on /dev/sdaX" | - 按提示输入 "y" 清除旧签名后再执行 Pvcreate |
| LVM 卷组找不到新 PV | -
运行 wipefs -a /dev/sdaX && pvcreate /dev/sdaX && vgextend… |
| LXFS 文件程序报错 “Filesystem has unsupported features” | - 确认内核版本支持 XFS 的最新特性;怎么说呢,若不支持,可考虑先将 LV 格式化为 ext4 再迁移数据。 |
| LUKS 加密磁盘无法直接 pvcreate | - 解密后再进行 PV 操作;或者在加密层之上创建新的 LUKS 容器再做 PV。 |
五、快速回顾:一步到位的扩容要点 ✅
- 先扩大虚拟硬盘:停机 → VMware/VirtualBox 调整容量 → 启动 VM。其实,
-
再让 OS 认识新空间:`partprobe` + `fdisk` 新建分区或直接使用未划分的空闲块。不过,If using LVM:
- `pvcreate` 把新分区变成物理卷;
- `vgextend` 把 PV 加入现有卷组;不过,
- `lvextend` 给需要的 LV 分配额外空间;
- `xfs_growfs`把文件程序撑满。
If not using LVM:
- `fdisk` 划出新的主分区;
- `mkfs.xfs` 或 `mkfs.ext4` 格式化;
- `mount` 并编辑 `/etc/fstab` 实现永久挂载。
六、从“容量不足”到“随心所欲” 🚀

