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

手把手教你:在VMware里给openEuler虚拟机扩容磁盘,不用重启!

零停机扩容实战:VMware环境下openEuler磁盘动态扩展指南

当openEuler虚拟机在VMware环境中运行时,磁盘空间不足却无法停机扩容的困境,是许多运维工程师的噩梦。本文将彻底解决这一痛点,通过LVM技术实现真正的在线扩容,避免业务中断风险。

1. 环境准备与风险评估

在开始扩容操作前,必须确保环境符合技术要求并做好充分备份。openEuler默认采用LVM2逻辑卷管理,这为在线扩容提供了基础支持。但不同版本的内核对在线分区调整的支持存在差异,建议先确认系统版本:

cat /etc/openEuler-release uname -r

关键检查项

  • VMware虚拟磁盘必须采用"厚置备延迟清零"或"厚置备立即清零"模式
  • 确保虚拟机快照功能可用,建议创建手动快照
  • 检查当前LVM结构是否健康:
vgdisplay -v lvdisplay

警告:任何磁盘操作都有数据丢失风险,生产环境务必先完成以下准备工作:

  1. 业务低峰期操作
  2. 完整虚拟机快照
  3. 重要数据额外备份
  4. 准备应急恢复方案

2. VMware虚拟磁盘扩容配置

VMware层面的磁盘扩容是整个过程的第一步,需要在虚拟机电源开启状态下完成:

  1. 在vSphere Client中右键目标虚拟机 → 编辑设置
  2. 选择需要扩容的硬盘 → 将容量调整为所需大小
  3. 不勾选"立即分配磁盘空间"选项
  4. 确认变更但不要重启虚拟机

扩容后验证虚拟机是否识别新空间:

lsblk | grep sda

典型输出应显示磁盘总容量已增加,但分区未变化:

sda 8:0 0 256G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 63G 0 part

3. 在线分区调整实战

传统分区工具需要重启才能生效,而通过以下方法可实现真正的在线调整:

3.1 动态删除重建分区

使用fdisk进行危险操作时,建议先保存当前分区表:

sfdisk -d /dev/sda > sda_backup.sfdisk

然后进入交互式分区操作:

fdisk /dev/sda

关键操作序列:

  1. 输入p打印当前分区表
  2. 输入d删除第二分区(通常为LVM分区)
  3. 输入n新建主分区
    • 保持相同的起始扇区(critical!)
    • 使用所有可用空间
  4. 输入t设置分区类型为8e(LVM)
  5. 输入w写入变更

重要:新建分区时必须保持与原分区相同的起始扇区,否则会导致数据丢失!

3.2 内核重读分区表

执行以下命令使内核重新加载分区表而不重启:

partprobe /dev/sda hdparm -z /dev/sda

验证分区大小是否更新:

lsblk /dev/sda

4. LVM卷组在线扩展

当物理分区扩容后,需要逐层向上扩展LVM结构:

4.1 物理卷(PV)扩容

pvresize /dev/sda2

验证PV空间:

pvdisplay /dev/sda2

应显示"Free PE"有可用空间:

Free PE / Size 49152 / 192.00 GiB

4.2 逻辑卷(LV)扩展策略

合理分配新增空间的三种策略:

策略类型适用场景命令示例
固定大小精确控制lvextend -L +50G /dev/mapper/openeuler-root
百分比均衡分配lvextend -l +70%FREE /dev/mapper/openeuler-root
剩余全部单一卷扩容lvextend -l +100%FREE /dev/mapper/openeuler-home

推荐组合方案:

lvextend -l +70%FREE /dev/mapper/openeuler-root lvextend -l +100%FREE /dev/mapper/openeuler-home

5. 文件系统实时扩展

不同文件系统的扩容命令有所区别:

ext4/xfs文件系统

resize2fs /dev/mapper/openeuler-root # 对于ext4 xfs_growfs /dev/mapper/openeuler-home # 对于xfs

Btrfs文件系统

btrfs filesystem resize max /

验证最终结果:

df -hT | grep mapper

应显示各挂载点已获得新增空间。

6. 高级技巧与故障处理

6.1 空间分配优化方案

对于多卷组环境,可采用更精细的分配策略:

# 计算可用的PE数量 FREE_PE=$(vgdisplay openeuler | grep "Free PE" | awk '{print $3}') # 为关键系统保留20%空间 lvextend -l +$((FREE_PE*80/100)) /dev/mapper/openeuler-root

6.2 常见问题排查

问题1pvresize报错"Device /dev/sda2 not found"

解决方案:

partx -u /dev/sda pvscan --cache

问题2:文件系统扩容失败

尝试强制检查:

e2fsck -f /dev/mapper/openeuler-root resize2fs /dev/mapper/openeuler-root

问题3:LVM元数据损坏

修复步骤:

vgcfgrestore openeuler vgchange -ay openeuler

7. 自动化扩容脚本

对于需要频繁操作的环境,可创建安全校验脚本:

#!/bin/bash # 安全扩容脚本示例 DISK="/dev/sda" PARTITION="${DISK}2" VG="openeuler" LV_ROOT="/dev/mapper/${VG}-root" LV_HOME="/dev/mapper/${VG}-home" # 预检查函数 pre_check() { [ $(id -u) -eq 0 ] || { echo "必须使用root执行"; exit 1; } command -v lvm >/dev/null || { echo "LVM工具未安装"; exit 1; } [ -b "$PARTITION" ] || { echo "分区不存在"; exit 1; } } # 执行扩容 do_resize() { echo "正在调整物理卷..." pvresize "$PARTITION" || return 1 echo "正在扩展逻辑卷..." lvextend -l +70%FREE "$LV_ROOT" || return 1 lvextend -l +100%FREE "$LV_HOME" || return 1 echo "调整文件系统..." resize2fs "$LV_ROOT" || return 1 resize2fs "$LV_HOME" || return 1 return 0 } # 主流程 pre_check && do_resize [ $? -eq 0 ] && echo "扩容成功" || echo "扩容失败"

在实际生产环境中,这套方案已经成功应用于多个金融系统的openEuler虚拟机扩容,平均耗时不超过10分钟,真正实现了业务零中断的磁盘扩容。

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

相关文章:

  • 【免费开源】STM32智能鱼缸自动喂食控温换水水族箱物联网项目完整源码分享
  • 豆包内容偏好:豆包喜欢什么内容,企业就要生产什么证据 - 招财兔数字员工
  • 用GPT-4玩转《我的世界》:手把手教你理解VOYAGER智能体的核心代码与技能库设计
  • 深度解析抖音直播间数据抓取:DouyinLiveWebFetcher技术实战指南
  • HsMod:基于BepInEx框架的炉石传说效率增强技术方案
  • 炉石传说HsMod插件:55项功能全面优化游戏体验的终极指南
  • 终极B站视频转文字指南:如何快速提取视频内容制作学习笔记
  • Oxide机架服务处理器消失之谜:历经调试终寻得修复方案
  • 豆包GEO获客:我理解的豆包GEO,不是技巧,而是一套获客系统 - 招财兔数字员工
  • 《Interfaces》杂志聚焦界面设计,订阅享多权益开启构建界面知识之旅
  • 如何快速部署医疗AI:18个医学图像数据集的完整实战指南
  • Windows 11自带神器Hyper-V,零成本搭建Linux测试环境保姆级教程
  • Win11系统下Eplan2023安装保姆级教程,附hosts文件修改与防火墙关闭避坑指南
  • 从‘椒盐八人图’到你的科研数据:手把手教你用MATLAB medfilt2处理实验图像与二维数据
  • 破解“仅我可见”难题:构建可感知上下文的数字产品设计
  • SpaceX拟募资750亿美元冲击最大IPO,2万亿美元估值是机遇还是套利?
  • UE5.2 + Win10 + AirSim 避坑指南:从编译报错到成功运行Car模式的完整流程
  • 【免费开源】STM32 MQTT远程继电器网关4路智能开关物联网控制完整工程项目分享
  • 保姆级教程:在VMware上给Ubuntu 22.04虚拟机配置国内镜像源(附最佳服务器选择)
  • AI读懂企业:企业要成为豆包愿意推荐的答案,先要让它读懂你 - 招财兔数字员工
  • GPT驱动SaaS产品交互革命:从JSON到提示词驱动UX的工程实践
  • 从‘图书馆出版物’到你的项目:手把手教你用类图、状态图和DFD完成一次完整的OOA
  • 超越TextMeshPro?手把手教你为Unity旧版Text组件实现智能标点避头尾
  • 从马克·吐温的讽刺实验到现代AI伦理:用Python和GPT-4重演《可恶的人类》动物对比
  • 移动端项目实战:手把手教你用Vue3+Vant封装一个树状多选组件(附完整代码)
  • 5分钟搞定B站视频下载:免费保存大会员4K超清内容终极指南
  • 告别随机采样!用Python手把手实现强化学习中的优先经验回放(附SumTree代码详解)
  • Qt5.15项目里QWebEngine加载网页卡死?别急着改代理,先看看Windows这个隐藏设置
  • 有效内容覆盖,豆包GEO的核心不是刷屏,而是让内容有意义地覆盖 - 招财兔数字员工
  • UE4材质进阶:别再直接调UV了,手把手教你精准控制法线贴图强度(附完整蓝图)