恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Linux虚拟机磁盘空间不足?详解VMware扩容与LVM实战

  • 首页
  • 资讯中心
  • /
  • Linux虚拟机磁盘空间不足?详解VMware扩容与LVM实战

相关资讯

自考04741计算机网络原理填空题高频考点与备考方法 2026/10/12 22:35:26
Linux命令行的快乐本质:确定性反馈与管道组合哲学 2026/10/12 22:35:26
点云配准RANSAC算法原理与工业级Python实现 2026/10/12 22:35:26

最新资讯

做中性粒细胞耗竭总失败?Ly6G_x001e_1A8 抗体给药、验证及模型适配要点
胚胎发育抗体定制:如何获得特异性工具以解码发育过程中的关键蛋白?
基于Python的大众点评数据可视化与情感分析系统设计
统计学习英文版怎么读?从回归到交叉验证的工程落地指南
周红伟:OpenClaw已死,AI大模型-4:Harness(驱动工程)——把 Codex auth.json 改到 TaoToken 的 Harness 驱动工程实践
马斯克 600 亿砸向 Cursor 背后:用 TaoToken 统一 Key 打通 Agent 工具链的配置实录

今日推荐

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析
CAN总线错误处理机制深度解析:从位错误到Bus Off的硬件级调试

本周热门

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

Linux虚拟机磁盘空间不足?详解VMware扩容与LVM实战

发布时间:2026/10/12 22:35:26
Linux虚拟机磁盘空间不足?详解VMware扩容与LVM实战 简介面向Linux环境下使用VMware虚拟机进行开发、测试或部署的运维与开发人员这份资源专门解决虚拟机磁盘空间不足、软件无法正常安装等实际问题避免重装系统、重建开发环境带来的额外成本。文档以Red Hat Enterprise Linux为例完整梳理了从VMware Workstation扩展虚拟硬盘容量到Linux内部分区、格式化、挂载及开机自动挂载的全流程包括fdisk创建主分区、mkfs格式化、修改/etc/fstab等关键操作并给出交互式分区编辑器中的命令输入顺序同时针对当前磁盘无剩余空间的情况补充了通过VMware添加新硬盘、再在系统内分区格式化的扩容方案适合需要快速扩容的读者直接参照操作。资源包共1个docx文档整体约324KB内容紧凑、图文步骤清晰方便随时查阅。目前已有6509人学习浏览操作步骤经过实践验证可帮助读者少走弯路高效完成Linux虚拟机磁盘扩容。1. Linux中VMware虚拟机增加磁盘空间先搞清楚要动哪一层某天凌晨磁盘告警把我叫醒登录一看根分区使用率98%数据库直接报错。最初的本能反应是清日志可业务日志两三天又写满后来我发现Linux中VMware虚拟机增加磁盘空间的扩容操作才是一劳永逸的办法在虚拟机设置里把虚拟磁盘从100GB调到300GB再进Linux把新空间逐步分配给根分区对应的逻辑卷系统不用重装、数据不用迁移。这是虚拟化环境里最常遇到的运维操作之一也是踩坑率极高的操作。新手容易卡在“VMware层明明调大了系统里死活看不到”老手则容易栽在LVM与文件系统的类型细节上。本文按“原理判断 → VMware层调整 → 系统内分区与文件系统扩容 → 踩坑排查”的顺序把完整路径讲清楚。适合运维、开发、测试以及所有把虚拟机当服务器用的同学。2. 扩容前先分清LVM还是非LVM这决定你是敲三条命令还是走钢丝2.1 为什么LVM是扩容的“后悔药”非LVM的根分区扩容是在走钢丝LVMLogical Volume Manager把物理分区PV聚合到卷组VG再从卷组里切出逻辑卷LV相当于在物理分区和文件系统之间加了一层抽象。这层抽象的直接红利是物理盘不够了加一块新盘、把新盘做成PV并进VGLV跟着扩大文件系统跟着扩大挂载目录还是原来的目录数据原地不动。整个过程不涉及原有分区边界的移动风险被压到了最低。非LVM就麻烦得多。根分区直接建在 /dev/sda2 这类物理分区上MBR分区表下相邻空间无法直接并入你需要用 parted 或 growpart 去调整分区边界扩容中途断电或者一个参数写错数据基本就交代了。所以很多老运维宁愿加新盘也不去动原有根分区这不是胆小是见过太多翻车现场。判断清楚你属于哪种布局是扩容前第一件必须做的事。2.2 三分钟自查lsblk和df先确认你属于哪种布局先执行下面两条命令输出会直接告诉你答案# -f 显示文件系统类型lsblk是识别磁盘布局最快的手段 lsblk -f # 看当前挂载点和使用率 df -hT逻辑说明lsblk 的输出里如果看到 sda2 的 FSTYPE 列标着 lvm下面还有 vg 相关的名称说明这台机器走的是 LVM如果根分区直接是 /dev/sda1、/dev/sda2 这样的物理分区FSTYPE 列是 ext4、xfs 这类文件系统且没有 lvm 字样就是传统分区直接挂载。df -hT 负责确认根分区的挂载点和当前使用率防止你扩错了盘。还有一种容易误判的情况df 里看到挂载点是 /dev/mapper/xxx-root但 lsblk 没显示 lvm 字样这通常是因为 lsblk 版本或显示层级问题。这时候用 pvs、vgs、lvs 三条命令确认pvs # 显示物理卷 vgs # 显示卷组 lvs # 显示逻辑卷逻辑说明这三条命令任何一个有输出就说明 LVM 在场。vgs 输出的卷组名很重要后面 vgextend 和 lvextend 都要用到它建议记下来并确认当前卷组的空闲空间。2.3 扩容前必做清单快照和磁盘元数据记录一个都不能少动手之前先做三件事。第一打虚拟机快照。在虚拟机管理界面找到快照入口给当前状态打一个快照这是整个操作唯一的后悔药。注意快照不能替代备份如果是数据库这类持续写入的机器请在维护窗口操作或者先停止数据库写入再打快照否则快照里可能包含不一致的数据。第二把扩容前的磁盘元数据完整保存下来。执行下面这段命令把所有输出归档到 /tmp 目录同时建议你复制到自己的笔记里{ echo $(date) df -hT echo ----- lsblk ----- lsblk -f echo ----- pvs/vgs/lvs ----- pvs; vgs; lvs echo ----- fdisk ----- fdisk -l /dev/sda } /tmp/disk-before-expand.txt cat /tmp/disk-before-expand.txt逻辑说明这段命令把扩容前的挂载信息、分区布局、LVM状态、分区表一次性归档。参数说明df 用 -hT 是为了同时看到人类可读的容量和文件系统类型fdisk -l 输出当前分区表供后续对比。这些文件在你操作失误时是排查的依据也是恢复的参照。第三用 free -h 看一眼 swap 情况。后面第5章会提到只扩根分区不扩 swap可能导致另一种资源瓶颈提前记录下来方便后续一起规划。3. VMware层动手扩容改大旧盘还是加新盘以及SCSI重扫那点玄学3.1 直接扩展现有虚拟磁盘关机、改大小、开机这是最符合“增加磁盘空间”直觉的做法也是大家最先尝试的路径。但有一个顺序不能乱先关机再改容量最后开机。在虚拟机设置界面找到硬盘条目容量字段会显示当前大小比如100GB把它改成300GB确认后执行扩展。不同版本的虚拟化管理界面入口措辞略有差异但核心动作一致修改虚拟磁盘容量并让虚拟化平台重写磁盘描述符。如果你用的是命令行工具流程也是先查虚拟磁盘信息再执行磁盘扩容命令底层都是修改vmdk描述符文件。扩容完成后开机进 Linux 执行 lsblk你会看到 /dev/sda 的容量已经变成300GB但 sda1、sda2 这些分区的容量还是原样。这是因为 VMware 层把整块虚拟磁盘的容量交给了客户机内核但内核不知道分区表之外的空间该归谁分区边界还停留在扩建前的位置。接下来的所有操作都是在处理这块“系统看得见、分区表不认账”的额外空间。3.2 添加新虚拟磁盘稳但要注意SCSI控制器编号另一种做法是给虚拟机加一块全新的虚拟硬盘方案风险比直接扩旧盘低很多。原因在于它完全不碰原有磁盘的分区表新空间变成独立的 /dev/sdb数据安全性天然有保障。操作路径编辑虚拟机设置添加新设备选择硬盘容量按需求填写。需要注意两个参数一个是磁盘置备方式空间充裕可以选厚置备延迟置零性能更稳空间紧张就选精简置备但精简盘碎片多了之后写入性能会明显下滑另一个是SCSI控制器节点编号一般默认即可但要注意总线编号别和已有设备冲突冲突会在开机时导致新盘识别不到。虚拟化平台层支持在不关机的情况下热添加新硬盘但客户机内核不一定立即感知所以添加完成后需要触发SCSI扫描见下一小节。两种方式怎么选只是单纯给根分区扩容且能接受一定操作风险选直接扩旧盘想完全不动原有磁盘把新空间挂到独立目录或并入现有卷组选加新盘。我个人的习惯是只要不是根分区彻底满了、必须原地扩的场合优先加新盘。3.3 在线扩容后系统看不见SCSI重扫命令与验证常见场景是虚拟机运行时直接改了磁盘大小界面上显示成功但 Linux 里 lsblk 看到的还是原容量。这是因为 SCSI 子系统没有重新扫描设备内核还在使用旧容量。处理办法如下# 让内核重新读取 sda 的容量如果文件不存在或报只读说明当前控制器驱动不支持在线重扫 echo 1 /sys/block/sda/device/rescan # 扫描所有SCSI主机总线- - - 三个破折号代表扫描全部通道、目标、LUN echo - - - /sys/class/scsi_host/host0/scan lsblk /dev/sda逻辑说明第一条命令是对指定块设备触发重扫描第二条是对SCSI主机通道全量扫描。参数说明host0 只是示例具体是哪个控制器要执行 ls -l /sys/class/scsi_host/ 查看如果是热添加的新磁盘扫描后才会出现 /dev/sdb。如果重扫后的 lsblk 仍然显示旧容量不用纠结直接重启虚拟机这是最不玄学的解决方案。4. LVM扩容全流程从fdisk新建分区到resize2fs一次性做对4.1 用fdisk从可用空间里创建新分区以最典型的场景为例sda 原容量100GB虚拟化层已扩展到300GBlsblk 显示 sda300G但分区只有 sda1/boot和 sda2LVM PV剩余约200GB未分区。下一步是在这块未分区空间上新建一个分区让 LVM 能使用它。进入 fdisk 交互界面fdisk /dev/sdafdisk 内的操作序列Command (m for help): p # 打印当前分区表确认磁盘容量和原分区位置 Command (m for help): n # 新建分区 Partition number (3-128): 3 # 默认值直接回车 First sector: 回车 # 默认从可用空间起始位置开始 Last sector: 回车 # 默认到磁盘末尾即用满全部可用空间 Command (m for help): t # 修改分区类型 Partition number (1,2,3): 3 # 选择刚建的分区 Partition type or alias: lvm # 输入 lvm 或从列表中选 Linux LVM Command (m for help): p # 再次打印确认新分区信息无误 Command (m for help): w # 写入分区表并退出逻辑说明新建分区的关键是起始扇区不手动指定、直接回车采用默认值这样新分区从原有最后一个分区之后开始不会触碰原有数据区域。分区类型改成 LVM是为了让系统明确这是物理卷候选分区。参数说明Partition type 在不同版本 fdisk 里的输入方式略有差异有的版本要求输入数字编号在提示符下输入 L 可以列出所有类型从列表里找 Linux LVM 对应的编号即可不要硬记数字。写入后执行 partprobe 让内核重新读取分区表partprobe /dev/sda lsblk /dev/sda逻辑说明fdisk 写入后内核不一定立即接受新分区表partprobe 通知内核重新读取。如果 lsblk 里已经出现 sda3说明分区创建成功可以继续下一步。4.2 把新分区并入PV与VG并扩展LV分区创建完成后需要让 LVM 认识这块新空间并把空间划给根分区对应的逻辑卷。整个过程四条命令顺序不能乱# 将新分区初始化为物理卷只有PV才能并入卷组 pvcreate /dev/sda3 # 把物理卷加入卷组vg0要替换成 vgs 命令输出的实际卷组名 vgextend vg0 /dev/sda3 # 查看卷组和逻辑卷当前容量确认扩容前状态 vgs; lvs # 把卷组剩余空间全部划给根逻辑卷映射名以lvs输出为准 lvextend -l 100%FREE /dev/mapper/vg0-root逻辑说明pvcreate 相当于把新分区变成 LVM 的“原材料”vgextend 把它并入卷组lvextend 再把卷组的空闲空间划给根逻辑卷。参数说明-l 100%FREE 表示把卷组所有剩余空间都扩展给指定逻辑卷这是最不容易算错参数值的写法不需要你手动计算容量如果只想扩一部分用 -L 50G 这种写法。特别注意/dev/mapper/vg0-root 里的 vg0-root 只是示例不同发行版命名不同Ubuntu 常见 ubuntu-vg-rootCentOS 7 常见 centos-root一切以 lvs 输出为准。如果你的环境里 sda2 已经是 PV 且分区本身被扩展过比如用 growpart 把分区边界推进到了磁盘末尾那么不需要新建分区直接执行 pvresize /dev/sda2 让 PV 占满新容量再执行 lvextend -l 100%FREE /dev/mapper/vg0-root 即可。区别在于本节步骤是“新增一块拼图”pvresize 是“把原有拼图变大”两者都会让卷组获得新空间但适用条件不同。4.3 文件系统扩展ext4用resize2fsxfs用xfs_growfs逻辑卷已经变大但文件系统还停留在旧容量这一步把文件系统扩展到逻辑卷的新边界。先确认文件系统类型再选命令blkid /dev/mapper/vg0-root # 查看根逻辑卷的文件系统类型 # 如果是ext4 resize2fs /dev/mapper/vg0-root # 如果是xfs xfs_growfs / df -hT逻辑说明resize2fs 读的是设备路径xfs_growfs 习惯上写挂载点两者都是扩容到设备最大值不需要额外参数。参数说明resize2fs 后面不带大小参数时默认扩展到物理设备最大容量xfs_growfs 的参数是挂载点路径不是设备路径这是初学者最容易写错的地方。执行完 df -hT根分区容量应该已经变为扩容后的值。4.4 非LVM场景怎么办三个可选路线如果第2章排查出来是非LVM比如根分区直接是 /dev/sda2ext4 文件系统那么不建议对原分区做原地扩边界的操作。路线一把新空间建成分区挂载到 /home、/var 或 /opt 这类目录把数据目录迁移过去让业务代码指向新挂载点避免触碰根分区。路线二如果根分区是磁盘上最后一个分区且分区表是 GPT可以用 growpart 把分区边界推进到磁盘末尾再 resize2fs但该方案要求根分区后面不能有别的分区先用 fdisk -l 确认最后分区是否用到了扇区末尾确认结果最可靠。路线三整体迁移系统到新大盘新加一块容量更大的虚拟磁盘用 rsync 把系统文件复制过去新盘设为启动盘原盘保留不动。三种路线都比直接改分区边界安全。5. Linux中VMware扩容五个必踩的坑现象、原因与排查清单5.1 坑一fdisk写完后提示“Re-reading the partition table failed”现象fdisk 执行 w 写入分区表时界面出现 WARNING 提示重读失败随后 lsblk 里看不到新建的 sda3。原因分区所在的磁盘当前处于挂载状态或者有分区正在被 swap 使用内核出于数据安全拒绝立即重读分区表。解决执行 partprobe /dev/sda 或用 partx -u /dev/sda 更新分区表信息多数场景下能解决如果仍无效重启虚拟机。不要因为嫌重启麻烦就反复尝试强制写入硬来可能导致内核缓存与新分区表不一致。5.2 坑二文件系统是xfs却拿resize2fs去扩现象执行 resize2fs /dev/mapper/vg0-root 后命令直接报 “Bad magic number in super-block”扩容无法继续。原因resize2fs 只识别 ext2/ext3/ext4 系列文件系统xfs 的超级块魔数不同工具直接拒绝。解决扩容前先执行 blkid 或 lsblk -f 确认类型。xfs 文件系统一律用 xfs_growfs /以挂载点作为参数不需要、也不接受 resize2fs。另外记住一个特性xfs 只能扩不能缩分区规划时不要指望扩完再缩回来。5.3 坑三扩容超过2TBMBR分区表死活只认2TB现象VMware 层把磁盘从2TB扩到3TB进系统 fdisk -l 看到的容量还是2TB新空间彻底消失。原因MBR 分区表使用32位逻辑块寻址单块磁盘可寻址上限约2TB超出部分内核直接忽略。解决老虚拟机如果是 BIOS 启动 MBR 分区表稳妥做法是不动原盘新加一块 GPT 分区的新盘挂载独立目录或者规划一次系统迁移新盘采用 GPT 分区表。注意不要试图用 parted 把 sda 的 mklabel 改成 gpt这条命令会清空原有分区表数据全部丢失没有任何后悔药。5.4 坑四只扩系统盘不扩swap内存压力反而顶上来了现象根分区扩容完成后系统运行一段时间应用频繁 OOM内存监控持续告警。原因磁盘扩容只解决了存储空间swap 还是原来的大小内存压力过来时全部扛在物理内存上。解决把新增容量的一部分做成 swap 文件或 swap 分区。swap 文件的方案比较灵活# 创建一个4GB的swap文件bs和count共同决定最终大小 fallocate -l 4G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile # 写入fstab实现开机自动挂载建议先备份原有fstab cp /etc/fstab /etc/fstab.bak echo /swapfile none swap sw 0 0 /etc/fstab free -h逻辑说明fallocate 创建指定大小的文件作为 swap 载体mkswap 将其格式化为交换空间swapon 立即启用。参数说明bs1M count4096 这种写法也可以创建4GB文件但 fallocate 更快fstab 里那行参数含义依次是设备路径、挂载点swap用none、文件系统类型swap、挂载选项sw、dump和fsck标记0 0。5.5 坑五删掉原分区重建想一次扩到位重启后进不了系统现象为了省事在 fdisk 里把原根分区删除用相同起始扇区重新创建并扩大末尾边界重启后系统直接进入 “give root password for maintenance” 维护模式。原因删除重建分区时即使起始扇区一致分区 UUID 和分区类型标识也会发生变化内核按旧 UUID 找不到根文件系统如果起始扇区不小心偏移了一个磁道情况更糟文件系统直接损坏。解决这类错误在线几乎没办法修复唯一出路是从操作前打的快照恢复。所以再次强调扩容永远新建分区绝不删除重建原分区。如果必须扩大原分区本身请先打快照再做并把“原起始扇区”记录下来不得有丝毫偏差。排查补充每一步操作之前和之后都留意内核日志命令是 dmesg | tail日志文件看 /var/log/messages 或 /var/log/syslog。扩容过程报错时日志里往往已经有明确原因比你在论坛里猜关键词高效得多。6. 扩容完怎么确认空间真的可用验证三板斧和记录归档习惯第一板斧看容量数字df -hT 确认根分区容量已变为目标值同时 lsblk -f 确认文件系统类型和挂载点没有异常。第二板斧做真实写入测试命令如下向根分区写入一个临时文件再删除确认空间真的写进去了而不是只在界面数字上变大了# 向/目录写入一个2GB的临时文件观察写入过程是否报错 dd if/dev/zero of/root/expand-test.bin bs1M count2048 # 写入成功后确认空间占用发生变化 df -h / # 删除测试文件恢复空间 rm -f /root/expand-test.bin逻辑说明dd 从 /dev/zero 读零并写入目标文件bs1M count2048 组合起来正好是2GB。参数说明如果目标分区剩余空间不足2GB把 count 调小写入期间如果文件系统出现 I/O 错误说明扩容链路有问题立刻停止排查。第三板斧看内核视角cat /proc/partitions确认对应分区容量已经达到预期值这个文件反映的是内核实际识别的容量比 df 更底一层。长期习惯把这次扩容前的 df、lsblk、pvs、vgs、lvs、fdisk -l 输出归档到自己的运维笔记里下次扩容直接照着改数字不用重新研究命令参数。另外在笔记里写一句“这次为什么选了这个扩容方案”下次回看时能快速避开之前踩过的坑。我有一次在没打快照的情况下直接扩容走到一半发现分区类型码配错了只能从备份重建环境从那以后快照和元数据记录一次都没省过。希望帮到你。本文还有配套的精品资源点击获取

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号