在 VirtualBox 中为 Ubuntu 增加硬盘的两种常用方式
- 方式一:给现有虚拟磁盘扩容(系统盘变大)
- 方式二:新增一块虚拟硬盘(作为数据盘挂载)
方式一 扩容现有虚拟磁盘
- 前置检查与准备
- 关闭虚拟机(建议完全关机,而非挂起)。
- 备份虚拟机目录(含 .vdi/.vmdk 与快照),以防操作失误导致数据不可恢复。
- 在 VirtualBox 中扩容虚拟磁盘文件
- 图形界面:选中虚拟机 → 设置 → 存储 → 选中 SATA 控制器下的虚拟硬盘 → 属性/磁盘操作/调整大小(不同版本入口略有差异)→ 输入更大的容量(如从 20GB 调到 40GB)。
- 命令行示例(VBoxManage):
- 查看磁盘 UUID:VBoxManage list hdds
- 扩容(以 VDI 为例):VBoxManage modifyhd “<磁盘文件路径>” --resize <大小MB>
- 启动 Ubuntu 识别新容量
- 查看新容量:lsblk、sudo fdisk -l
- 若使用 LVM:
- 识别物理卷:sudo pvresize /dev/sdaX
- 扩展逻辑卷:sudo lvextend -l +100%FREE /dev/mapper/-
- 扩展文件系统:sudo resize2fs /dev/mapper/-(ext4)或 sudo xfs_growfs /mountpoint(XFS)
- 若未使用 LVM(整盘一个分区,如 /dev/sda1):
- 使用 GParted Live(推荐)或 parted 调整分区大小,将未分配空间合并到目标分区,然后扩展文件系统:
- 安装:sudo apt update && sudo apt install gparted
- 图形界面调整分区后,若为 ext4:sudo resize2fs /dev/sda1
- 验证
- df -h 或 lsblk 查看可用空间是否已增加。
方式二 新增一块虚拟硬盘并挂载为数据盘
- 在 VirtualBox 中添加新硬盘
- 关闭虚拟机 → 设置 → 存储 → SATA 控制器 → 添加虚拟硬盘 → 创建新磁盘(常用 VDI,可选择动态分配)→ 设定大小(如 50GB)。
- 启动 Ubuntu 初始化并挂载
- 识别新盘:lsblk、sudo fdisk -l(常见为 /dev/sdb)
- 分区(示例):
- sudo fdisk /dev/sdb → n → p → 回车默认 → w
- 格式化(ext4 示例):sudo mkfs.ext4 /dev/sdb1
- 挂载:
- 创建目录:sudo mkdir -p /data
- 临时挂载:sudo mount /dev/sdb1 /data
- 开机自动挂载(推荐用 UUID,避免设备名变化)
- 获取 UUID:ls -l /dev/disk/by-uuid | grep sdb1
- 备份 fstab:sudo cp /etc/fstab /etc/fstab.bak
- 追加一行(示例):UUID=<你的UUID> /data ext4 defaults 0 2
- 验证:sudo mount -a(无报错即正常)
- 权限与验证
- 按需设置目录权限:sudo chown -R $USER:$USER /data
- 验证:df -h 查看 /data 容量与挂载状态。
常见问题与排错
- 虚拟机设置里看不到新盘
- 确认已关闭虚拟机再添加;SATA 端口是否冲突(同一端口只能挂一块盘);必要时更换端口号重试。
- 扩容后系统内容量未变化
- 未使用 LVM 时,需要借助 GParted/parted 调整分区边界后再扩展文件系统;仅“扩容虚拟磁盘文件”并不会自动改变分区与文件系统大小。
- 开机因 fstab 错误无法进入
- 进入救援/单用户模式,恢复备份:sudo cp /etc/fstab.bak /etc/fstab,再检查 UUID 与挂载点是否正确。
- 设备名变化导致挂载失败
- 使用 UUID 配置自动挂载,避免 /dev/sdX 顺序变化带来的问题。
- 服务器版无图形界面如何扩容分区
- 使用 parted 命令行调整分区,然后按文件系统类型执行 resize2fs(ext4)或 xfs_growfs(XFS)。
操作建议
- 生产环境优先选择“新增硬盘”作为数据盘,减少对系统盘的风险;系统盘扩容前务必完整备份。
- 使用 LVM 可以更灵活地在线扩容与迁移;未使用 LVM 时,扩容通常需要离线调整分区与文件系统。