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

保姆级教程:在VMware里给openEuler虚拟机扩容磁盘,不重启搞定LVM分区

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

当openEuler虚拟机在VMware环境中运行时,磁盘空间不足往往成为突发性问题。传统扩容方案需要停机维护,这对生产环境简直是噩梦。本文将揭示一种无需重启的LVM扩容方案,从底层原理到实战操作完整解析,助你掌握企业级磁盘热扩展技能。

1. 理解LVM架构与热扩容原理

LVM(Logical Volume Manager)是Linux系统的磁盘管理利器,其分层设计让扩容变得灵活。物理卷(PV)、卷组(VG)、逻辑卷(LV)的三层结构,如同搭积木般可动态调整。

为什么删除分区不会丢失数据?关键在于LVM的元数据机制。当删除/dev/sda2分区时,实际数据仍保留在磁盘上,只是移除了分区表的指针。重建分区时只要保持相同的起始扇区(2099200),文件系统就能被正确识别。

VMware虚拟磁盘扩容后,操作系统需要两个关键步骤感知变化:

  1. 通过echo 1 > /sys/class/scsi_disk/0\:0\:0\:0/device/rescan触发SCSI总线重扫
  2. 使用fdisk调整分区表边界

重要提示:操作前务必执行pvdisplay --units k确认当前PE(Physical Extent)大小,不一致的扩展单位会导致扩容失败

2. 环境准备与风险防控

2.1 必要工具检查

确保系统已安装以下组件:

rpm -q lvm2 cloud-utils-growpart

若未安装,执行:

dnf install lvm2 cloud-utils-growpart -y

2.2 安全防护措施

  • 快照备份:在VMware控制台创建虚拟机快照
  • 数据备份:关键数据额外备份到外部存储
  • 操作时间窗:避开业务高峰期

风险矩阵对照表

操作步骤风险等级缓解措施
分区表修改高危备份分区表:sfdisk -d /dev/sda > sda.bak
PV扩容中危预先检查VG空闲空间:vgdisplay openeuler
LV扩展低危使用-r参数自动扩展文件系统

3. 实战扩容全流程

3.1 VMware层磁盘调整

  1. 关闭虚拟机电源(无需启动)
  2. 右键虚拟机 → 设置 → 硬盘 → 扩展
  3. 输入新容量(如256GB)
  4. 确认后启动虚拟机

3.2 操作系统层识别新空间

# 查看当前磁盘布局 lsblk # 重新扫描SCSI设备 echo 1 > /sys/class/scsi_disk/0\:0\:0\:0/device/rescan # 验证磁盘容量变化 fdisk -l /dev/sda

3.3 分区表调整技巧

使用fdisk进行无损分区调整:

fdisk /dev/sda

操作序列:

  1. 输入p打印当前分区
  2. 输入d删除第二分区
  3. 输入n新建主分区
    • 分区号保持为2
    • 起始扇区必须与原分区一致(如2099200)
    • 结束扇区默认最大值
  4. 输入t设置分区类型为8e(LVM)
  5. 输入w写入变更

遇到"signature detected"提示时选择No,避免破坏LVM元数据

3.4 LVM体系扩容实战

物理卷扩容

pvresize /dev/sda2

验证命令:

pvdisplay --units g

卷组空间分配

# 查看可用空间 vgdisplay openeuler # 扩展根分区(分配70%空闲空间) lvextend -r -l +70%FREE /dev/openeuler/root # 扩展home分区(剩余空间) lvextend -r -l +100%FREE /dev/openeuler/home

-r参数自动调用resize2fs,无需单独执行文件系统扩展

4. 高级技巧与故障排查

4.1 空间分配策略优化

对于数据库等特殊场景,建议使用精确空间分配:

# 精确扩展10GB lvextend -r -L +10G /dev/openeuler/var

空间分配比例参考表

应用类型推荐分配比例扩展粒度
系统根分区剩余空间的40%10GB为单位
应用数据分区剩余空间的50%按实际需求
日志分区剩余空间的10%5GB为单位

4.2 常见故障处理

问题1pvresize报错"PV too small"

# 先检查实际物理大小 blockdev --getsize64 /dev/sda2 # 强制重置PV大小 pvresize --setphysicalvolumesize 255G /dev/sda2

问题2:文件系统挂载失败

# 检查文件系统 fsck -f /dev/openeuler/root # 手动扩展文件系统 resize2fs /dev/openeuler/root

问题3:LVM元数据损坏

# 重建元数据备份 vgcfgbackup openeuler # 从备份恢复 vgcfgrestore -f /etc/lvm/backup/openeuler openeuler

5. 自动化运维集成

对于需要频繁扩容的环境,可编写自动化脚本:

#!/bin/bash # Auto expand LVM script DISK="/dev/sda" PARTITION="${DISK}2" VG="openeuler" LV_ROOT="/dev/${VG}/root" LV_HOME="/dev/${VG}/home" # Rescan disk echo 1 > /sys/class/scsi_disk/0\:0\:0\:0/device/rescan # Resize partition sgdisk -e $DISK sgdisk -d 2 $DISK sgdisk -n 2:2099200:0 $DISK sgdisk -t 2:8e00 $DISK partprobe $DISK # Resize LVM pvresize $PARTITION lvextend -r -l +70%FREE $LV_ROOT lvextend -r -l +100%FREE $LV_HOME

将此脚本加入Ansible或SaltStack的playbook,可实现批量管理。我在某金融项目中使用类似方案,成功实现了200+虚拟机的无人值守扩容。

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

相关文章:

  • 从GMM-HMM到端到端:ASR技术演进、核心挑战与工程实践全解析
  • ICML 2024投稿倒计时24天:手把手教你用Overleaf+Git搞定论文格式与协作(附Latex模板)
  • 理性看待AI热潮:技术边界、应用场景与可持续实践
  • 2023年AR技术趋势:从空间计算、WebAR到产业融合的深度解析
  • 项目介绍 MATLAB实现基于双向门控循环单元(BiGRU))进行锂离子电池健康状态(SOH)的准确估计和剩余使用寿命(RUL)预测(含模型描述及部分示例代码)专栏近期有大量优惠 还请多多点一下关注
  • 从源码到接口:手把手教你用CMake和VS2019为Gmsh生成专属C++开发包
  • 《HarmonyOS技术精讲》五:实战项目 ── 智能支架助手
  • AnchorRefine框架:两阶段残差优化提升机器人操作精度
  • 保姆级教程!互联网用户行为日志数据加工全流程(解析 + 结构化 + 聚合分析,附完整代码 + 踩坑)
  • STM32 FOC实战:手把手教你配置ADC采样点,避开电流采样三大坑(基于R3.2库)
  • 从被动到主动:构建智能Slack机器人的架构演进与实践
  • 用鲸鱼算法自动调SVM参数的Python完整实现(带数据+可视化)
  • 基于检索-重排-抽取流水线的科学文献精准信息抽取系统实践
  • STM32开发环境搭建避坑指南:Clion 2024配置OpenOCD与Arm Toolchain常见问题解析
  • 从DDR到DDR5:内存BANK交错技术(Interleaving)的演进与实战调优(以AMD平台为例)
  • DINO检测器深度解读:对比去噪、混合查询与‘向前看两次’如何联手解决DETR的老大难问题
  • 发起投票小程序怎么弄,云帆投票零门槛上手 - 投票小程序
  • Nat Med发表SPARK智能体框架,可以自主思考、提出假设、设计实验并验证结果,让AI也能主动发现肿瘤生物学规律
  • 基于文本补偿与原型增强的增量学习任务路由机制
  • 从保温杯到电路板:聊聊‘导热系数’这个参数,以及我们怎么在实验室里测它
  • 别再只算准确率了!用Python手撸DCG/IDCG/nDCG,给你的推荐系统做个‘CT检查’
  • C语言指针精讲(三)∶数组名与指针访问,传参与冒泡排序
  • 监控画面总有雪花噪点?深入拆解海思/安霸芯片里的3D降噪技术到底是怎么工作的
  • 【视频资料】NBA总决赛原版视频 (1991-2021)【中英解说】珍藏版
  • 实战指南:如何在不重写数据的情况下,优雅演进你的Iceberg表分区策略
  • SpringBoot项目里时间传参总乱套?手把手教你用@JsonFormat和@DateTimeFormat搞定前后端日期格式
  • 保姆级教程:用Altium Designer 23从零画一块Type-C小板(附立创EDA导库技巧)
  • 从Verilog到布线:你的代码是如何‘塞’进FPGA里LUT的?一个综合过程的完整拆解
  • 开源能源监测系统助力住宅供暖转型
  • 告别Log混乱!用CAPL的setLogFileName函数实现自动化测试日志的精准归档