在 VirtualBox 中扩展虚拟磁盘的完整步骤
一、准备与注意事项
- 将虚拟机彻底关机,状态应为Powered Off,不要处于Saved状态。
- 若存在快照,请先删除(快照链会导致只修改到某个快照层,或失败)。
- 建议先对虚拟磁盘文件做备份。
- 扩展只增加“磁盘容量”,并不会自动扩大分区/文件系统,后续需在来宾系统内调整分区与文件系统。
- VirtualBox 6.0+ 支持图形界面调整磁盘大小;更早版本需用命令行。
二、扩展虚拟磁盘
- 图形界面(VirtualBox 6.0+)
- 打开管理器主界面,依次点击:File > Virtual Media Manager。
- 在列表中选择目标虚拟硬盘,拖动底部Size滑块或输入新大小,点击Apply。
- 命令行(所有平台通用)
- 关闭虚拟机并确保无快照。
- 执行命令(路径与大小请按实际修改):
- 推荐新语法:
VBoxManage modifymedium disk "<磁盘路径>" --resize <大小MB>
- 旧语法兼容:
VBoxManage modifyhd "<磁盘路径>" --resize <大小MB>
- 示例(将磁盘扩展到80 GB):
VBoxManage modifymedium disk "C:\VMs\Win10\Win10.vdi" --resize 81920
- 可用
VBoxManage showhdinfo "<磁盘路径>" 查看扩容后容量。
三、在来宾系统中扩展分区与文件系统
- Windows
- 启动进入系统,打开磁盘管理(运行:
diskmgmt.msc)。
- 在下方磁盘图中找到新增的未分配空间,右键需要扩展的分区(如C: 或 E:),选择扩展卷,按向导完成。
- Linux(以 ext4 或 XFS 为例)
- 查看磁盘与分区:
lsblk、sudo fdisk -l。确认新增空间位于目标盘(如 /dev/sda)末尾。
- 若使用 LVM:先扩展物理卷(PV)、再扩展卷组(VG)、最后扩展逻辑卷(LV),例如:
sudo pvresize /dev/sda2
sudo lvextend -l +100%FREE /dev/mapper/vg-root
sudo resize2fs /dev/mapper/vg-root(ext4)或 sudo xfs_growfs /(XFS,针对挂载点)
- 若不使用 LVM:使用
parted/fdisk 调整分区结束位置,然后扩展文件系统:
- ext4:
sudo resize2fs /dev/sda1
- XFS:
sudo xfs_growfs /mount/point
- 图形化方案:启动 GParted Live(ISO 启动),关闭swap,调整分区大小后“Apply”。
四、VMDK 等特殊格式的处理
- VirtualBox 对 VMDK 的在线扩容支持不如 VDI 完善。推荐流程:
- 克隆为 VDI:
VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi
- 扩容 VDI:
VBoxManage modifymedium disk "cloned.vdi" --resize <大小MB>
- 在来宾系统内扩展分区/文件系统。
- 如需恢复 VMDK,可再克隆回去:
VBoxManage clonehd "cloned.vdi" "new.vmdk" --format vmdk。
五、常见问题与排错
- 扩展后系统里看不到新增空间:这是正常的,必须在来宾系统内扩展分区/文件系统后才可使用。
- 命令报错或容量不变:检查是否还有快照、磁盘是否为固定大小(固定大小也可扩容,但耗时更长;若失败可先克隆为动态盘再扩容)、路径是否包含空格(需加引号)。
- Windows 扩展卷按钮灰色:通常是未分配空间不在目标分区的右侧连续位置,或目标分区为系统保留/恢复分区;可用 GParted 移动分区后再扩展。
- Linux 提示找不到新大小:确认已对正确的分区设备(如 /dev/sda1 而非 /dev/sda),并确保分区表已写回、文件系统支持在线扩容。