资讯动态

VMware虚拟机Linux磁盘扩容:从fdisk分区到fstab自动挂载全攻略

发布时间:2026/10/16 16:31:15 来源:尧图企业网站定制
简介在Linux环境下使用VMware虚拟机遇到磁盘空间不足时这份Word文档能提供清晰可照做的扩容方案特别适合不想重装系统、不愿重新配置开发环境的开发测试与运维人员也适用于Red Hat、CentOS等主流发行版。文档以Red Hat Enterprise Linux为例覆盖从VMware Workstation中扩展虚拟磁盘、用fdisk -l查看现有分区、创建新分区到重启后执行mkfs.ext2也可选ext3、ext4格式化再mount到新建目录并修改/etc/fstab实现开机自动挂载的完整流程如果原磁盘无法继续扩充还补充了新增第二块硬盘的处理思路。资源仅1个docx文件整体大小324KB配有命令与界面说明读者按文档可独立完成从扩容到自动挂载的全部操作。已有6512人学习下载其中“必须重启后新分区才能格式化”“默认选择分区号与起始柱面避免浪费空间”等细节能帮初学者少走弯路省去自行查资料的麻烦。1. Linux 中 VMware 虚拟机增加磁盘空间从 Expand 到 fstab 的完整扩容路径开发环境装好了、依赖配齐了、数据库导入了结果磁盘满了软件装不上——这时候选择重装系统等于把所有环境配置重走一遍代价实在太大。我整理了一条 VMware 虚拟机磁盘扩容的完整路径先在 VMware 侧用 Expand 把虚拟磁盘撑大再进 Linux 用 fdisk 手工建分区、格式化、挂载、写 fstab 实现开机自动挂载。整个过程不需要重装系统也不需要动原有分区数据适合正在用 VMware 跑 Linux比如 Red Hat Enterprise Linux做开发或测试、突然发现磁盘不够用的从业者。下面按实际操作的先后顺序来拆。2. VMware 侧扩容Edit 到 Expand 的两步操作与一个等待陷阱2.1 为什么先扩虚拟磁盘而不是直接在 Linux 里加空间虚拟机里的 Linux 看到的磁盘大小是由 VMware 虚拟磁盘文件vmdk决定的。你在 Linux 里执行 df -h 看到的是分区大小执行 fdisk -l 看到的是整个虚拟磁盘的容量——而这块虚拟磁盘的容量上限是在 VMware 的虚拟机设置里定义的。很多第一次做扩容的人直接在 Linux 里用 fdisk 操作发现怎么都无法把新空间划出来原因就在这里虚拟磁盘文件本身没变大分区表再折腾也没有可用空间。所以第一步必须在 VMware 侧把 vmdk 文件撑大让底层块设备变大Linux 侧才能看到新空间。还有一个容易被忽略的点Expand 只能扩大虚拟磁盘不能缩小而且必须在虚拟机处于关机或挂起状态时才能操作。如果虚拟机正在运行Utilities 下拉框里的 Expand 选项会是灰色不可点的。2.2 具体操作Edit Virtual Machine Settings 与 Expand 的实际路径在 VMware Workstation 主界面先选中要扩容的虚拟机确保它是关机状态然后按下面的路径操作点击菜单栏的 VM下拉里选择 Settings弹出 Virtual Machine Settings 窗口。切到 Hardware 选项卡选中列表里的 Hard Disk 那一项。点击右侧的 Utilities 下拉按钮选择 Expand。在 Disk size 输入框里把容量改到目标值比如从原来的 20G 改成 50G。点 Expand 按钮等待进度条走完。操作要点 - Expand 前确认虚拟机是关机状态 - 新容量必须大于当前容量不能等于也不能缩小 - 展开后的容量是整个虚拟磁盘的大小不是新增的大小Expand 过程实际是把 vmdk 文件在宿主机磁盘上扩展时间取决于原文件大小和宿主机磁盘写入速度几 GB 到几十 GB 可能花费几分钟到十几分钟不等。进度条走完后VMware 侧的扩容就结束了。2.3 Expand 完成不等于 Linux 里能用一个典型的认知差Expand 完成后回到 Linux你执行 df -h 会发现可用空间没有任何变化。这不是操作失败而是新空间还没分配到任何分区上。虚拟磁盘变大了但虚拟机里的 Linux 看到的仍然是从前那个分区表原有分区比如 /dev/sda3边界没有变新空间在分区表里根本不存在。Linux 能看到的 /dev/sda 这个块设备变大了但上面有效的内容依然是旧分区剩下的全是未分配空间。这就是为什么下一步要进 Linux 手工建分区。提示判断 Expand 是否真的生效可以在 Linux 里执行 fdisk -l看 Disk /dev/sda 那行显示的容量是否已经变成新值。只有这里变了后面的建分区才有意义。3. fdisk 手工分区从 /dev/sda3 到 /dev/sda4 的交互式操作3.1 先用 fdisk -l 确认现状为什么新分区会是 sda4进入 Linux 后先用 root 身份执行 fdisk -l看当前虚拟磁盘的分区布局fdisk -l # 输出关键信息示例 # Disk /dev/sda: 53.7 GB, 53687091200 bytes # Device Boot Start End Blocks Id System # /dev/sda1 * 1 17 131072 83 Linux # /dev/sda2 18 256 1916928 82 Linux swap # /dev/sda3 257 2611 18918900 83 Linux这里能看到两个关键信息。第一磁盘总容量已经变成 Expand 时设置的新值比如 53.7GB说明 VMware 侧扩容生效了。第二现有系统最大分区编号是 sda3所以接下来新建的分区在 fdisk 默认规则下会顺延为 sda4。这里有个细节值得注意sda3 是主分区还是逻辑分区决定了新建分区时选 p主分区还是 l逻辑分区。如果 sda3 是主分区且还有空闲主分区名额就直接建主分区如果前面已经有 4 个主分区就得选扩展分区再建逻辑分区。这篇场景里 sda3 是最后一个主分区第 4 个仍可建主分区所以按 p 处理。3.2 fdisk /dev/sda 交互式分区n、p、回车、回车、w 的每一步含义对 /dev/sda 执行分区操作fdisk /dev/sda进入 fdisk 交互界面后按下面的顺序输入命令Command (m for help): n # 新建分区 Partition type: p primary partition (1-4) e extended Select (default p): p # 创建主分区 Partition number (1-4, default 4): 4 # 分区编号回车默认即可 First sector (XXX-YYYY, default ZZZ): # 直接回车用默认起始扇区 Using default value ZZZ Last sector, sectors or size{K,M,G} (ZZZ-YYYY, default YYY): # 直接回车用默认结束扇区 Using default value YYY Command (m for help): w # 保存分区表并退出为什么后面的起始扇区和结束扇区都直接回车用默认值fdisk 默认的起始扇区是上一分区结束位置的下一个扇区默认的结束扇区是磁盘最后一个可用扇区意思就是把所有未分配空间整块划给新分区既不浪费空间也不会和现有分区产生重叠。w 命令会把新分区表写入磁盘并退出。这一步之后fdisk 提示分区表已修改但 Linux 内核通常还没有立即更新对磁盘分区布局的认知——这正是原方案里强调必须 reboot 的原因。3.3 为什么不建议省掉 reboot内核分区表缓存问题fdisk 的 w 只是把新分区表写进了磁盘运行中的内核仍然持有旧的分区表缓存。这时候你 ls /dev/sda* 大概率看不到 /dev/sda4直接执行 mkfs 会报「No such file or directory」或者提示找不到设备。常见做法是直接 reboot 重启虚拟机让内核重新读取分区表。重启后 /dev 目录下就会出现 sda4 这个新设备节点这一步在文档里被特别强调是有道理的。某些教程会提到用 partprobe 或 blockdev --rereadpt 让内核重读分区表而不用重启但实际在 VMware 虚拟机上sda 是宿主机映射的虚拟磁盘内核重读有时会不稳定最稳妥的还是 reboot代价也就是等一两分钟。reboot提示如果你不想重启可以尝试 partprobe /dev/sda然后立即执行 ls /dev/sda* 看设备节点是否出现。但如果在虚拟化环境下报错或设备节点迟迟不出现别犹豫直接 reboot。4. 格式化与开机挂载mkfs、mount 到 fstab 的完整链路4.1 格式化新分区mkfs.ext2 还是 ext4怎么选重启完成后以 root 身份登录先确认 sda4 存在ls /dev/sda4确认设备节点存在后执行格式化。原方案里用的是 mkfs.ext2但现在实际生产我更建议用 mkfs.ext4原因有三点ext4 支持日志journal异常断电后文件系统恢复更可靠ext4 支持更大的单文件和大分区容量性能上 ext4 在多数场景对元数据操作有明显优势。mkfs.ext4 /dev/sda4如果坚持用原方案命令就是 mkfs.ext2 /dev/sda4。格式化后可以用 blkid /dev/sda4 查看新分区的 UUID 和文件系统类型这个 UUID 后面写 fstab 时会用到。4.2 手动挂载到 /disk4先建目录再 mount格式化完成后新分区还是一个没有被挂载的裸设备需要给它一个挂载点才能使用。在根目录下创建挂载目录然后手动挂载mkdir /disk4 mount /dev/sda4 /disk4/执行完后用 df -h 验证df -h /disk4输出里应该能看到 /dev/sda4 挂载在 /disk4 上容量就是刚才分配给新分区的空间。这一步之后新空间已经可以用但只是临时的——重启系统后挂载关系会丢失所以必须写进 fstab。4.3 写 /etc/fstab 实现开机自动挂载字段逐项拆解用 vim 编辑 /etc/fstabvim /etc/fstab在文件末尾追加一行/dev/sda4 /disk4 ext4 defaults 0 0fstab 每行有 6 个字段这里逐个说清楚字段值含义设备文件/dev/sda4要挂载的分区设备节点挂载点/disk4挂载的目标目录必须已存在文件系统类型ext4格式化时指定的类型挂载选项defaults包含 rw、suid、dev、exec、auto 等默认项dump 备份0不参与 dump 备份fsck 检查顺序0开机时不对此分区做 fsck 检查有一点需要特别提醒fstab 里挂载点目录必须存在。如果 /disk4 目录不存在或者 fstab 写错了开机时系统会挂载失败可能进入 emergency mode。所以写完 fstab 建议先执行 mount -a 验证一下配置是否正确这个命令会按 fstab 内容重新挂载所有条目能提前暴露语法错误。mount -a执行后没有报错说明 fstab 这一行没问题。再重启一次确认能自动挂载整个扩容流程就完整了。追加磁盘空间的工作完毕后新空间会稳定地挂在 /disk4 下随开机自动挂载。5. 常见问题与避坑四类翻车现场与处理顺序5.1 现象Expand 选项是灰色点不了VMware 里 Utilities 下拉框的 Expand 是灰的怎么点都没反应。出现这种情况通常有两种原因一是虚拟机正处于运行状态Expand 只能在关机或挂起状态下操作二是当前选中的不是虚拟磁盘而是光驱、软驱或其他设备Expand 本来就是为硬盘准备的。先把虚拟机关机再选中 Hard Disk 那一项问题就能解决。5.2 现象reboot 之后 /dev/sda4 依然不出现重启了也看不到 sda4ls /dev/sda* 只有 sda1、sda2、sda3。先别急这种情况基本可以判定分区表根本没有写成功。一个常见原因是在 fdisk 交互操作时最后一步没有输入 w而只是输入了 q 退出——q 是不保存任何修改的。另一个原因是分区编号冲突如果分区表和原方案不一致fdisk 创建的分区不一定是 sda4也可能顺延成 sda5这时要执行 fdisk -l 看实际生成的设备名别死盯 sda4 这个预期值。5.3 现象mount 时报错 wrong fs type 或 bad option挂载时报 wrong fs typebad optionbad superblock。这说明 mkfs 的文件系统类型和 mount 时指定的类型对不上。比如格式化用的是 mkfs.ext4mount 时却写成 ext2或者反过来。解决方法是执行 mount 时明确指定正确类型mount -t ext4 /dev/sda4 /disk4/同时检查 /etc/fstab 里第三列的文件系统类型是否和实际格式化类型一致。5.4 现象重启后进不了系统卡在 emergency modefstab 写错是最典型的翻车现场。开机挂载失败后系统会进入 emergency 模式提示输入 root 密码进入维护。这时候先别慌用 root 登录后执行 vim /etc/fstab把刚才加的那行注释掉或修正然后 reboot。为什么会挂载失败常见三种挂载点目录不存在、设备名写错、文件系统类型写错。更稳的做法是在 fstab 里用 UUID 代替 /dev/sda4因为设备名在某些情况下会漂移UUID 不会变blkid /dev/sda4拿到 UUID 后fstab 那行改成UUID你的UUID值 /disk4 ext4 defaults 0 05.5 现象Expand 时提示磁盘空间不足无法继续VMware 报错说没有足够的空间执行 Expand。这个空间指的是宿主机磁盘可用空间不是虚拟机内部的。Expand 需要宿主机上有和新增容量相当的空余磁盘来扩展 vmdk 文件。常见做法是先在宿主机清理磁盘、腾挪文件或者把 vmdk 迁移到空余空间更大的磁盘路径上再做 Expand。如果宿主机实在腾不出空间就只能用 Add 方式新增一块虚拟磁盘走另一条扩容路线。6. Add 加盘与 LVM两条更进阶的扩容思路6.1 当虚拟磁盘无空间可扩时Add 新硬盘的完整流程如果当前 vmdk 文件已经接近 VMware 设定的单盘上限、或者宿主机空间紧张无法 Expand可以在不关机的情况下给虚拟机加一块全新的虚拟磁盘。路径是 VMware 主界面 VM 下拉菜单里的 Settings在 Hardware 选项卡点 Add选择 Hard Disk然后按向导选择 SCSI 接口、创建新虚拟磁盘、指定磁盘大小完成后开机。进入 Linux 后fdisk -l 会看到一个新的设备 /dev/sdb这块盘和 sda 是并列关系互不影响。后续操作和前面完全一致fdisk /dev/sdb 建分区、mkfs.ext4 格式化、mkdir 建挂载点、mount 挂载、写 fstab。这种方式的优点是灵活可以按需给不同目录分配独立磁盘缺点是挂载点和逻辑结构需要自己规划清楚别挂完就忘了这盘是干什么用的。6.2 LVM 思路为什么 LVM 方案能省掉重启这一步如果你在装系统时用了 LVMLogical Volume Manager扩容可以做到完全不用新建分区也不用 reboot。LVM 的基本结构是 PV物理卷→ VG卷组→ LV逻辑卷三层。Expand 后先让 PV 感知新空间pvresize /dev/sda3 或直接 pvscan 刷新然后 vgextend 把新空间并入卷组再用 lvextend 扩大逻辑卷最后 resize2fs 在线调整文件系统大小整个过程不需要重启。对比本文的 fdisk 手工方案LVM 的核心优势是分区边界不再硬性限制文件系统大小扩容是纯软件层面的操作甚至可以做到业务不中断。缺点是安装系统时就要规划好 LVM 布局已经装完的传统分区布局改起来成本很高。如果你只是为了解决眼下的一次空间不足手工分区方案已经足够如果这台机器还会长期跑项目、后续可能反复扩容下次重装系统时值得优先考虑 LVM。6.3 验证扩容是否成功的一套检查清单扩容完成不等于万事大吉我习惯按下面的顺序做一遍收尾验证全部通过才算完工# 1. 查看新分区设备是否正常 fdisk -l /dev/sda | grep sda4 # 2. 查看文件系统挂载情况 df -h /disk4 # 3. 查看 fstab 配置是否有语法错误静默通过说明没问题 mount -a # 4. 写入测试文件并重新读取 echo disk expansion test /disk4/test.txt cat /disk4/test.txt rm -f /disk4/test.txt# 5. 确认开机自动挂载执行 reboot 后再次 df -h 验证 reboot这五步走完如果每一步都正常扩容这件事就可以真正收尾了。整套流程操作下来最重要的教训反而是最朴素的那条每改完一步就验证一步别攒到最后再统一验证。从那以后我每次做磁盘扩容都会强制在写入 fstab 后先跑一遍 mount -a再决定要不要重启——提前暴露问题比开机卡在 emergency mode 里慢慢排查舒服得多。希望这次完整的扩容操作拆解对你有帮助。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑