前言
这个教程介绍如何为Virtualbox虚拟硬盘扩容,虚拟硬盘分为动态分配大小和固定虚拟硬盘,扩容的方法不一样:
如何为动态分配的Virtualbox虚拟硬盘扩容
这个方法只适用于动态分配大小的虚拟硬盘.要了解如何为固定虚拟硬盘扩容,请看如何为固定大小的Virtualbox虚拟硬盘扩容
查看虚拟硬盘是否是动态分配大小
打开虚拟机的设置界面,在左侧栏点击存储
.在存储树下面选择你的虚拟硬盘.在右边可以看见虚拟硬盘的信息.在下面可以看见,我的虚拟硬盘是动态分配大小的.
备份虚拟硬盘
在我们为virtualbox虚拟硬盘扩容之前,最好是要先备份一下虚拟硬盘以防出错导致数据丢失.
右击位置(location)
那一行,将虚拟硬盘的路径复制下来.
然后,点击减号图标
将虚拟硬盘从虚拟机移除.
在宿主机上打开一个终端,输入下面的命令备份虚拟硬盘.
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镜像文件(桌面版的ISO带有live).我使用的是ubuntu的镜像文件.
添加后在左侧栏选择系统
.在启动顺序(Boot Order)
里,将光驱拉到最上面.保存设置后启动虚拟机.
在启动顺序里,将光驱拉到最上面现在你进入了一个Live操作系统里.打开GParted程序.
可以看见我的虚拟硬盘有2G没有分配的空间.要让guest OS使用这些没有分配的空间,首先禁用swap分区.右击linux-swap
分区,选择swapoff
.
然后,右击linux-swap分区,选择删除(delete).再右击扩展分区(extended partition)
,选择删除.最后应用更改.
现在,你可以在Gparted里扩大root根分区.完成后关闭虚拟机,再让虚拟机从虚拟硬盘启动进入原来的guest OS,你应该可以使用新添加的空间了.
如何为固定大小的Virtualbox虚拟硬盘扩容
这一篇文章将介绍如何为固定大小的Virtualbox虚拟硬盘扩容。
查看虚拟硬盘是否是固定大小的
打开虚拟机的设置界面,在左侧栏点击存储(Storage)
.在存储树(Stroarge Tree)
下面选择你的虚拟硬盘.在右边可以看见虚拟硬盘的信息.在下面可以看见,我的虚拟硬盘是固定大小的(Fixed size).
备份虚拟硬盘
在我们为virtualbox虚拟硬盘扩容之前,最好是要先备份一下虚拟硬盘以防出错导致数据丢失.
右击位置(location)
那一行,将虚拟硬盘的路径复制下来.
在宿主机上打开一个终端,输入下面的命令备份虚拟硬盘.
cp /location-of-virtual-disk /location-of-backup-virtual-disk
将location替换为虚拟硬盘的具体路径.例如,我输入的命令如下.
cp /media/matrix/sdb9/VMs/openSUSE.vdi /media/matrix/sdb9/VMs/openSUSE-bakcup.vdi
注意,备份的虚拟硬盘名称要与原来的名称不同。
为固定大小的Virtualbox虚拟硬盘扩容
首先,我们要在虚拟机里添加一个新的虚拟硬盘,这个新的虚拟硬盘容量要大于旧的虚拟硬盘。然后使用 dd
命令行工具将原来虚拟硬盘上的操作系统复制到新的虚拟硬盘。再为新虚拟硬盘的操作系统扩容,以使用全部硬盘空间。最后我们将旧虚拟硬盘从虚拟机中移除。
添加一个新的虚拟硬盘
打开虚拟机的设置界面,在左侧栏选择存储
,在存储树(Storage Tree)
下面,点击IDE控制器(Controller: IDE)
. 然后点击加号图标
,选择添加硬盘
.
在下一个窗口中选择创建新的硬盘
。
然后选择虚拟硬盘的格式。我选择的是VDI格式。
在一下窗口中,选择虚拟硬盘是要动态分配容量还是固定大小。我选择了动态分配大小,因为创建的速度快。但你也可以选择固定大小。
给新的虚拟硬盘命名,并分配大小。记住要比原来的虚拟硬盘容量大。
点击创建按钮。创建完成后,你的虚拟机就有两块虚拟硬盘了。
使用dd命令行工具将操作系统复制到新的虚拟硬盘
为了能够用dd复制操作系统到新的虚拟硬盘,我们需要用一个Linux ISO镜像文件启动虚拟机。
点击IDE控制器(Controller: IDE), 再点击右边的光盘图标,从宿主机里选择一个Linux ISO镜像文件。
保存设置后启动虚拟机。进入Linux Live系统环境后,打开一个终端窗口,输入下面的命令将/dev/sda复制到/dev/sdb
sudo dd if=/dev/sda of=/dev/sdb
旧的虚拟硬盘是/dev/sda,新的虚拟硬盘是/dev/sdb。如果你需要确认一下,可以打开gparted分区管理器来查看。
复制过程会比较漫长。当复制完成后,在Linux Live系统里打开gparted分区管理工具。选择新的虚拟硬盘。你可以看见操作系统从旧的虚拟硬盘复制到了新的虚拟硬盘上。但有一些未分配的空间(unallocated),因为新的虚拟硬盘容量更大。
我们可以用gparted来扩展根分区文件系统的大小,以使用全部的硬盘空间。扩展文件系统完成后,关闭虚拟机,打开虚拟机设置窗口,将旧的虚拟硬盘以及Linux ISO镜像文件从虚拟机里移除。
保存设置后启动虚拟机。这次虚拟机是从新的虚拟硬盘启动。如果你的guest OS是Linux,那么可以输入下面的命令查看新的虚拟硬盘大小。
sudo fdisk -l
备注
扩充虚拟机和扩充虚拟硬盘是两件事情。
下面为扩充虚拟机的步骤:
VBoxManage clonehd "source.vmdk" "cloned.vdi" --format vdi 转化为vdi 的文件
VBoxManage modifyhd "cloned.vdi" --resize 102400
VBoxManage clonehd "cloned.vdi" "resized.vmdk" --format vmdk