当前位置: 首页 > news >正文

VMware虚拟机CentOS7磁盘扩容实战:从添加硬盘到根目录无缝扩展

VMware虚拟机CentOS7磁盘扩容实战:从添加硬盘到根目录无缝扩展

当你用VMware运行CentOS7虚拟机时,突然发现根目录空间告急,那种感觉就像住在小公寓里突然要接待一群客人——急需扩容!作为经历过多次这种窘境的运维老兵,我想分享一套在VMware环境下绝对靠谱的磁盘扩容方案。不同于物理服务器,虚拟化环境下的磁盘扩容有其特殊技巧,比如热添加硬盘后必须多一步分区操作,否则后续命令会报"找不到设备"的错误。下面这个实战指南,会带你避开所有我踩过的坑。

1. VMware虚拟机添加硬盘的正确姿势

在VMware Workstation中为运行中的CentOS7添加硬盘时,很多人会直接关机操作,其实完全支持热添加。右键虚拟机设置→添加硬盘→SCSI类型(兼容性最好)→创建新虚拟磁盘。这里有个关键细节:磁盘模式必须选"独立-持久",否则重启后扩容会失效。建议大小至少20GB,毕竟我们不想频繁重复这个操作。

添加完成后,在虚拟机内部执行以下命令验证:

ls /sys/class/scsi_host/ | while read host; do echo "- - -" > /sys/class/scsi_host/$host/scan; done lsblk

应该能看到新磁盘(通常是/dev/sdb)。如果没出现,试试这个万能命令:

echo 1 > /sys/class/scsi_disk/0\:0\:0\:0/device/rescan

常见翻车点

  • 添加硬盘时误选"独立-非持久"模式,导致重启后扩容消失
  • 使用IDE接口类型硬盘,导致设备名不是标准的/dev/sdX
  • 忘记扫描SCSI总线,一直看不到新磁盘

2. 分区与物理卷的精细操作

VMware环境必须执行分区步骤,这是与物理服务器最大的不同。使用fdisk时要注意:

fdisk /dev/sdb

交互界面依次输入:

  1. n创建新分区
  2. p主分区
  3. 1第一个分区
  4. 两次回车使用默认起止位置
  5. t修改分区类型
  6. 8e设置为LVM类型
  7. w写入并退出

创建物理卷时有个效率技巧——直接操作分区而非整块磁盘:

pvcreate /dev/sdb1

对比下两种方式的性能差异:

操作方式执行时间安全性后续灵活性
整盘作为PV
分区后作为PV稍慢

提示:生产环境强烈建议采用分区方案,虽然多一步操作,但后续可以灵活添加其他分区

3. 卷组扩展的艺术

查看当前卷组信息时,别只用简单的vgs命令,推荐:

vgdisplay -v centos

扩展卷组时要注意物理卷的PE大小是否匹配:

vgextend centos /dev/sdb1

如果遇到"PE size mismatch"错误,需要先用以下命令调整:

pvcreate --dataalignment 4M /dev/sdb1

关键参数解析

  • --dataalignment:指定物理扩展块对齐,避免性能下降
  • -v:显示详细分配策略
  • -t:测试模式,安全但不会真正执行

4. 根目录扩容的终极方案

执行lvextend时,推荐使用r参数保留一定空间:

lvextend -r -l +80%FREE /dev/mapper/centos-root

这个命令的妙处在于:

  1. -r参数自动执行resize2fs/xfs_growfs
  2. 只使用80%空间,预留缓冲
  3. 避免100%分配导致后续无法调整

对于XFS文件系统(CentOS7默认),必须使用特定命令生效扩容:

xfs_growfs /dev/mapper/centos-root

检查结果时别只看df -h,更专业的做法是:

lsblk -f xfs_info /

扩容前后的关键指标对比

# 扩容前 [root@vm ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 17G 16G 1.1G 94% / # 扩容后 [root@vm ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/centos-root 37G 16G 21G 44% /

5. VMware环境专属优化技巧

在虚拟化环境中,磁盘性能优化同样重要。扩容完成后建议:

echo 'vm.dirty_ratio = 20' >> /etc/sysctl.conf echo 'vm.dirty_background_ratio = 10' >> /etc/sysctl.conf sysctl -p

这些参数可以显著提升VMware虚拟磁盘的IO性能:

参数默认值推荐值作用
vm.dirty_ratio4020减少写缓存占用内存
vm.dirty_background_ratio105加快后台回写速度
vm.swappiness6010降低交换分区使用频率

最后别忘了在VMware工具中优化磁盘配置:

  1. 关闭虚拟机
  2. 右键设置→硬盘→碎片整理
  3. 高级选项中选择"预分配所有磁盘空间"
  4. 启用"独立-持久"模式

我在给客户部署的近百台CentOS7虚拟机上都采用这套方案,最老的系统已经稳定运行5年,期间扩容3次从未出现数据异常。记住虚拟化环境下的磁盘操作要比物理机更谨慎,每个步骤都要双重验证——先在测试环境演练,再在生产环境实施。

http://www.jsqmd.com/news/630068/

相关文章:

  • LeetCode--28.找出字符串中第一个匹配项的下标(字符串/KMP算法)
  • 避开这3个坑!LangSmith提示词管理最佳实践(含Hub使用技巧)
  • 从零到一:Dify工作流实战指南,快速构建AI应用开发流水线
  • MYCIN医疗诊断系统揭秘:50年前的产生式规则如何影响现代AI?
  • 告别像素模糊!VTracer:让任何图片都能无限放大的开源神器
  • 麒麟服务器V10 SP3下Redis开机自启的3种方法(附systemd常见问题排查)
  • 终极指南:如何在浏览器中无需安装直接查看PPT文件 - PPTXjs完整教程
  • 别再被湍流模型搞晕了!用Python从零实现一个超简单的DNS求解器(附完整代码)
  • Simulink VSG虚拟同步机控制技术及其离网与构网型应用研究模型分析:包含直流侧储能电池...
  • Kingbase V8R6 许可证续期实战:从告警到恢复的完整操作指南
  • c++如何将文件从C盘移动到D盘_rename跨文件系统失败处理【进阶】
  • Vue.js中Patch过程处理Teleport组件挂载位置的特殊逻辑
  • GraphSAGE为什么比GCN更适合推荐系统?详解Inductive Learning的工业价值
  • SteamAutoCrack:一键解锁Steam游戏离线运行的终极方案
  • SpringBoot集成Quartz(v2.3.2)任务调度失效问题排查指南
  • 告别命令行!Vue UI图形化工具+ElementUI插件安装全流程(含Idea配置避坑指南)
  • 基于STC89C52RC与OLED12864的《贪吃蛇》游戏开发与性能优化
  • Matlab仿真三机并联风光混合储能并网系统的波形正确性与结构完整性研究
  • STC15单片机RAM优化实战:如何用Keil的data/idata/xdata提升程序效率
  • 保姆级教程:用Depth Anything V3从手机照片生成3D高斯模型(附完整代码)
  • 终极AI图像增强神器:Upscayl完整使用指南与实战教程
  • 别再只盯着波特率了!手把手教你为你的Arduino/STM32项目选择合适的串口参数(含校验位与传输距离实战)
  • FPGA实战:手把手教你配置7系列Block RAM的三种写入模式(WRITE_FIRST/READ_FIRST/NO_CHANGE)
  • IIS各个版本介绍
  • Unidbg模拟JNI调用时参数传递的继承链陷阱
  • Jetson 启动视觉定制全攻略:从cboot到桌面背景的深度修改
  • ComfyUI+Stable Audio Open实战:5分钟搞定游戏音效生成(附完整参数配置)
  • 零基础掌握Windows风扇智能控制:FanControl让你的电脑更安静更高效
  • OpenClaw 性能优化:本地执行效率与资源占用调优实践
  • CSS如何实现文字环绕图片效果_利用float实现图文混排