如何为动态分配的Virtualbox虚拟硬盘扩容

这篇教程介绍如何为Virtualbox虚拟硬盘扩容.这个方法只适用于动态分配大小的虚拟硬盘.要了解如何为固定虚拟硬盘扩容,请看下一篇文章.这篇文章假设宿主机的系统是Linux.客户机可以是Linux或Windows.

查看虚拟硬盘是否是动态分配大小

打开虚拟机的设置界面,在左侧栏点击存储.在存储树下面选择你的虚拟硬盘.在右边可以看见虚拟硬盘的信息.在下面可以看见,我的虚拟硬盘是动态分配大小的.

固定大小虚拟硬盘

备份虚拟硬盘

在我们为virtualbox虚拟硬盘扩容之前,最好是要先备份一下虚拟硬盘以防出错导致数据丢失.

右击位置(location)那一行,将虚拟硬盘的路径复制下来.

备份virtualbox虚拟硬盘

然后,点击减号图标将虚拟硬盘从虚拟机移除.

将虚拟硬盘从虚拟机移除

在宿主机上打开一个终端,输入下面的命令备份虚拟硬盘.

cp /location-of-virtual-disk /location-of-backup-of-virtual-disk

将location替换为虚拟硬盘的具体位置.例如,我输入的命令如下.

cp "/home/matrix/VirtualBox VMs/ubuntu/ubuntu.vdi" "/home/matrix/VirtualBox VMs/ubuntu/ubuntu-backup.vdi"

因为我的虚拟硬盘路径中有空格,所以我在路径前后加上了双引号.注意,备份的虚拟硬盘名称要与原来的名称不同.

为Virtualbox虚拟硬盘扩容

现在,我们可以使用vboxmanage命令来为虚拟硬盘扩容了.vboxmanage的命令语法如下.

vboxmanage modifyhd /location-of-your-virtual-disk --resize size-in-MB

虚拟硬盘的容量单位是MB.我输入了下面的命令将我的虚拟硬盘容量扩大到了10G.

vboxmanage modifyhd "/home/matrix/VirtualBox VMs/ubuntu/ubuntu.vdi" --resize 10240

你不能使用这个命令来缩减虚拟硬盘的容量.

现在,打开virtualbox的设置界面,将虚拟硬盘添加回虚拟机里.点击加号图标,选择添加硬盘

将虚拟硬盘添加回虚拟机里

在对话框中选择扩大了的虚拟硬盘.添加回虚拟机后,可以在右边的信息里查看虚拟硬盘的容量.可以发现我的虚拟硬盘现在的容量为10G.查看虚拟硬盘的大小

使用Gparted为Guest OS文件系统扩容

虽然我们为虚拟硬盘扩容了,但guest OS并不能立即使用新增的空间.我们需要用一个Live CD/DVD镜像文件启动虚拟机.这个Live CD/DVD镜像文件要有GParted分区工具以便我们为guest OS的文件系统扩容.

打开虚拟机的设置界面,在左侧栏选择存储,在存储树(Storage Tree)下面,点击IDE控制器(Controller: IDE). 点击光驱图标添加一个Live CD/DVD镜像文件.我使用的是ubuntu的镜像文件.

添加一个Live CD/DVD镜像文件

添加后在左侧栏选择系统.在启动顺序(Boot Order)里,将光驱拉到最上面.保存设置后启动虚拟机.在启动顺序里,将光驱拉到最上面现在你进入了一个Live操作系统里.打开GParted程序.

打开GParted程序

可以看见我的虚拟硬盘有2G没有分配的空间.要让guest OS使用这些没有分配的空间,首先禁用swap分区.右击linux-swap分区,选择swapoff.

禁用swap分区

然后,右击linux-swap分区,选择删除(delete).再右击扩展分区(extended partition),选择删除.最后应用更改.

现在,你可以在Gparted里扩大root根分区.完成后关闭虚拟机,再让虚拟机从虚拟硬盘启动进入原来的guest OS,你应该可以使用新添加的空间了.

为这篇文章评分
[Total: 5 Average: 2.6]

Leave a Reply

Your email address will not be published.

The maximum upload file size: 2 MB. You can upload: image, audio, video, document, spreadsheet, interactive, text, archive, code, other. Links to YouTube, Facebook, Twitter and other services inserted in the comment text will be automatically embedded. Drop file here