前言

在使用 VirtualBox 虚拟机时,可能会遇到磁盘空间不足的问题,直接对原有的 vdi 文件进行扩容,当然也可以直接为虚拟机添加一块新的存储介质。记录下如何扩展 VirtualBox 虚拟机的vdi磁盘大小,以及遇到的问题

有些步骤没有截图,关键的地方都有描述

扩展虚拟磁盘大小

通过 gui界面扩容

在虚拟机关闭的情况下,通过gui界面,选择工具 -> 介质,点击需要扩容的磁盘,右下角选择扩容的大小,点击应用,之后启动虚拟机使用 fdisk 查看和管理磁盘,这里直接对 vdi 文件进行了扩容, 并不是直接对虚拟机内部的磁盘进行了扩容,所以通过 df -h 查看磁盘大小时,还是原来的大小

需要注意的是,如果虚拟机存在快照,是无法正常进行扩容的,虽然可以对 vdi 介质进行扩容,但是在虚拟机内部无法通过 fdisk 查看到变化,需要将快照删除后才能正常进行扩容

After modifyhd –resize, fdisk -l still shows old disk size

工具-介质

扩容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
┌─[wxj@darkstar-ob]─[~]
└──╼ $ sudo fdisk -l
[sudo] wxj 的密码:
Disk /dev/sda:201 GiB,215822106624 字节,421527552 个扇区 ## 磁盘从100G扩容到201G
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x16d33828

设备       启动    起点      末尾      扇区  大小 Id 类型
/dev/sda1  *       2048   2099199   2097152    1G 83 Linux
/dev/sda2       2099200 251658239 249559040  119G 8e Linux LVM


Disk /dev/mapper/ao-root:70 GiB,75161927680 字节,146800640 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/mapper/ao-swap:7.9 GiB,8468299776 字节,16539648 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/mapper/ao-home:41.1 GiB,44140855296 字节,86212608 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节

## 磁盘并未扩容,需要通过 fdisk 分配
└──╼ $ df -h
文件系统             容量  已用  可用 已用% 挂载点
devtmpfs             5.7G     0  5.7G    0% /dev
tmpfs                5.8G     0  5.8G    0% /dev/shm
tmpfs                5.8G  8.6M  5.8G    1% /run
tmpfs                5.8G     0  5.8G    0% /sys/fs/cgroup
/dev/mapper/ao-root   70G  3.6G   67G    6% /
/dev/sda1           1014M  231M  784M   23% /boot
/dev/mapper/ao-home   42G   35G  6.5G   85% /home
tmpfs                1.2G     0  1.2G    0% /run/user/1000

还需要注意的目前仅支持扩容,不支持缩容

不支持缩容

通过命令行扩容

1
2
## 进入 vmbox 的安装目录下,通过 vboxmanage 命令进行扩容为 30000 M
VBoxManage modifymedium vmfilesname.vdi --resize 30000 

扩容之后启动虚拟机,使用 fdisk 管理磁盘分区

总结

不想管理多块虚拟机磁盘的时候,可以直接对现有的 vdi 文件进行扩容,扩容完成后需要在虚拟机内部使用 fdisk 进行分区和格式化操作,才能正常使用。如果是对《动态分配存储》类型的 vdi文件扩容,只是表示可以使用的最大磁盘大小,也不会立即分配空间

实际占用磁盘

如果当前虚拟机存在快照,也无法对 vdi 进行扩容,虽然不会报错,但是实际在虚拟机内部无法看到扩容的空间