1. 项目概述
最近在虚拟机环境中使用CentOS 7时,遇到了一个典型问题:/data数据盘空间不足。这个问题在长期运行的服务器上很常见,特别是当业务数据不断增长时。本文将详细记录我在VMware虚拟机中为CentOS 7的/data分区扩容的完整过程,包括前期准备、具体操作步骤和后期验证。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备
2.1 硬件环境检查
首先需要确认当前虚拟机的磁盘配置情况。通过VMware的虚拟机设置界面,可以看到现有的虚拟磁盘分配情况。我的环境是:
- 系统盘:40GB
- 数据盘:100GB(已分配50GB,需要再增加50GB)
重要提示:在进行任何磁盘操作前,务必备份重要数据。虽然LVM扩容相对安全,但预防措施永远不嫌多。
2.2 软件环境确认
在CentOS 7终端中执行以下命令检查当前磁盘和文件系统情况:
bash复制# 查看磁盘分区情况
fdisk -l
# 查看逻辑卷状态
lvdisplay
# 查看卷组状态
vgdisplay
# 查看物理卷状态
pvdisplay
我的环境输出显示/data挂载在一个LVM逻辑卷上,这为后续扩容提供了便利。
3. 虚拟机磁盘扩容
3.1 扩展虚拟磁盘
- 关闭CentOS 7虚拟机
- 在VMware中右键虚拟机 -> 设置 -> 硬盘
- 将虚拟磁盘大小从50GB调整为100GB
- 启动虚拟机
3.2 扫描新磁盘空间
虚拟机启动后,需要让系统识别新增的磁盘空间:
bash复制# 重新扫描SCSI总线以识别扩容后的磁盘
echo 1 > /sys/class/scsi_device/0\:0\:0\:0/device/rescan
# 确认磁盘容量变化
fdisk -l /dev/sdb
4. 分区调整
4.1 创建新分区
使用fdisk工具对扩容后的磁盘进行分区:
bash复制fdisk /dev/sdb
在fdisk交互界面中:
- 输入
p查看现有分区 - 输入
n创建新分区 - 选择主分区(
p)或扩展分区(e) - 使用默认分区号
- 设置起始扇区(建议使用默认值)
- 设置结束扇区(使用全部剩余空间)
- 输入
t设置分区类型为8e(Linux LVM) - 输入
w保存并退出
4.2 刷新分区表
bash复制partprobe /dev/sdb
5. LVM扩容操作
5.1 创建物理卷
bash复制pvcreate /dev/sdb2
5.2 扩展卷组
bash复制vgextend centos /dev/sdb2
5.3 扩展逻辑卷
bash复制lvextend -l +100%FREE /dev/centos/data
5.4 调整文件系统
对于xfs文件系统:
bash复制xfs_growfs /data
对于ext4文件系统:
bash复制resize2fs /dev/centos/data
6. 验证扩容结果
bash复制df -h /data
输出应显示/data分区的新容量。
7. 常见问题与解决方案
7.1 分区表未更新
症状:执行fdisk -l看不到新增空间
解决方案:
bash复制partprobe /dev/sdb
# 或
reboot
7.2 卷组空间不足
症状:vgextend失败,提示"No space left on device"
解决方案:确认是否正确创建了物理卷并加入了卷组
7.3 文件系统调整失败
症状:resize2fs或xfs_growfs报错
解决方案:
- 先运行文件系统检查:
bash复制xfs_repair /dev/centos/data
# 或
e2fsck -f /dev/centos/data
- 再次尝试调整大小
8. 高级技巧
8.1 在线扩容
对于不能停机的重要系统,可以在不重启的情况下完成大部分操作。关键步骤:
- 热添加虚拟磁盘
- 使用
echo 1 > /sys/class/scsi_device/.../rescan识别新空间 - 后续LVM操作与前述相同
8.2 多磁盘扩容
当单个磁盘容量达到上限时,可以添加新虚拟磁盘并加入现有卷组:
bash复制pvcreate /dev/sdc
vgextend centos /dev/sdc
lvextend -l +100%FREE /dev/centos/data
resize2fs /dev/centos/data
9. 性能考虑
扩容后建议检查磁盘性能:
bash复制# 测试读取速度
hdparm -tT /dev/sdb
# 测试写入速度
dd if=/dev/zero of=/data/testfile bs=1G count=1 oflag=direct
如果性能下降,可能需要考虑:
- 检查虚拟机磁盘配置(IDE/SATA/SCSI)
- 调整I/O调度器
- 考虑使用SSD作为后端存储
10. 安全建议
- 定期检查LVM元数据备份:
bash复制vgcfgbackup centos
- 监控磁盘使用情况,设置预警阈值
- 考虑使用LVM快照功能进行定期备份
经过上述步骤,我的/data分区已成功从50GB扩容到100GB。整个过程耗时约30分钟,其中大部分时间是等待文件系统调整完成。对于生产环境,建议在业务低峰期进行操作,并提前做好完整的备份和回滚方案。
