VirtualBox 虚拟硬盘 Ubuntu 扩容全流程
一、准备与前置检查
- 关闭虚拟机,建议先创建快照或备份虚拟硬盘文件,防止操作失误导致数据丢失。
- 确认磁盘类型:在主机上使用命令查看磁盘信息(Windows 在 VirtualBox 安装目录执行)
- 列出磁盘:VBoxManage list hdds
- 扩容 VDI(单位为 MB):VBoxManage modifyhd “<路径/磁盘名.vdi>” --resize <大小MB>(示例:–resize 51200 表示 50GB)
- 启动进入 Ubuntu,确认当前容量与分区布局:
- 查看分区与容量:df -h
- 查看块设备与分区表:lsblk、sudo fdisk -l
- 注意:扩容仅支持“放大”,不支持“缩小”。
二、扩容步骤(按分区方案选择)
- 方案 A|传统分区(非 LVM):使用 GParted 图形化扩容(推荐)
- 安装 GParted:sudo apt update && sudo apt install gparted**
- 打开 GParted,选择目标磁盘(如 /dev/sda)。
- 若新增空间在分区之后,直接右键目标分区(如 /dev/sda1)→“调整/移动”,将“大小”拉满到未分配空间末尾,点击“√”应用。
- 若未分配空间在分区之前,需先“移动”分区位置,使未分配空间与目标分区相邻,再“调整大小”。
- 应用完成后重启,确认:df -h。
- 方案 B|传统分区(非 LVM):使用 fdisk 重建分区并扩容文件系统
- 查看分区:sudo fdisk -l,确认要扩展的分区(如 /dev/sda1)。
- 进入分区工具:sudo fdisk /dev/sda
- 输入 d 删除原分区(只删分区表项,不丢数据),再输入 n 新建分区,选择主分区(p),起始扇区保持默认(如 2048),结束扇区用 +<大小>G(如 +39G)。
- 若提示“是否移除签名”,选择不移除(保持 Linux 类型)。
- 输入 w 写入并退出。
- 重启:sudo reboot
- 扩展文件系统:
- ext2/ext3/ext4:sudo resize2fs /dev/sda1
- xfs:先确认挂载点(如 /dev/sda1 挂载到 /),执行:sudo xfs_growfs /
- 验证:df -h。
- 方案 C|LVM(逻辑卷管理):扩展物理卷 → 卷组 → 逻辑卷 → 文件系统
- 查看 LVM 信息:sudo pvs、sudo vgs、sudo lvs、lsblk
- 扩展物理卷(PV):sudo pvresize /dev/sdaX(X 为包含未分配空间的分区,如 /dev/sda3)
- 扩展逻辑卷(LV):sudo lvextend -l +100%FREE /dev/<vg名>/<lv名>(示例:/dev/ubuntu-vg/ubuntu-lv)
- 扩展文件系统:
- ext2/ext3/ext4:sudo resize2fs /dev/<vg名>/<lv名>
- xfs:sudo xfs_growfs /mount/point(如 /)
- 验证:df -h。
三、常见坑与修复
- 未分配空间不在目标分区后面:需先“移动”分区,使未分配空间与目标分区相邻,再“调整大小”。
- 扩容后 df -h 仍不变:忘记扩展文件系统(ext 用 resize2fs,xfs 用 xfs_growfs)。
- 出现 GPT PMBR size mismatch:在救援/试用环境执行 parted -l,按提示输入 Fix 修复。
- 使用固定大小 VDI 扩容失败:可新建更大的 VDI,用 dd if=/dev/sda of=/dev/sdb 全盘复制,再在 parted 中调整分区,最后用 pvresize/lvextend/resize2fs 扩展到 LVM 或文件系统。
- 主机磁盘空间不足导致 VDI 扩容失败:先清理或扩容主机磁盘,再执行 VBoxManage modifyhd --resize。
四、快速验证与回滚
- 验证:
- 总容量与挂载点:df -h
- 分区与未分配空间:lsblk、sudo fdisk -l
- LVM 状态:sudo pvs、sudo vgs、sudo lvs
- 回滚:如操作异常,先关闭虚拟机,在 VirtualBox 使用快照恢复或换回原 VDI 文件。