前言

这个教程介绍如何为Virtualbox虚拟硬盘扩容,虚拟硬盘分为动态分配大小和固定虚拟硬盘,扩容的方法不一样:

  1. 如何为动态分配的Virtualbox虚拟硬盘扩容
  2. 如何为固定大小的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

参考

[linux]如何为Virtualbox虚拟硬盘扩容(转载)的更多相关文章

  1. linux 为动态分配的Virtualbox虚拟硬盘扩容

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

  2. [转] Linux下移动virtualbox虚拟硬盘丢失eth0

    1.遇到什么的问题(What)      在新的virtualbox虚拟机上挂上曾使用过的虚拟硬盘,在启动的时候,发现找不到网卡eth0, 在输入ifconfig –a的时候,也没有任何Ethnet的 ...

  3. 减小VirtualBox虚拟硬盘文件的大小

    虚拟机使用久了就会发现虚拟硬盘越来越大,但是进入虚拟机里的系统用命令看了下,实际占用的空间远没有虚拟硬盘大小那么大,这个让人很不爽,而且在分享虚拟机镜像的时候也很不方便.VirtualBox似乎没有提 ...

  4. Ubuntu 16.04下减小/释放/清理VirtualBox虚拟硬盘文件的大小

    一般在VirtualBox中安装Windows,然后用无缝模式进行某些特定软件的使用. 而VirtualBox的虚拟硬盘会越用越大,并且VirtualBox没有自带清理工具,相比VMware来说,VM ...

  5. [Linux] PHP程序员玩转Linux系列-腾讯云硬盘扩容挂载

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...

  6. 复制virtualbox虚拟硬盘

    D:\VirtualBox\VBoxManage.exe clonevdi F:\virtualbox\rac1\rac1.vdi F:\virtualbox\rac2\rac2.vdi 虚拟机软件安 ...

  7. virtualbox 虚拟机硬盘扩容

    转自: http://jingyan.baidu.com/article/425e69e6aeede8be14fc1675.html

  8. vmware之linux不重启添加虚拟硬盘

    转自http://www.shangxueba.com/jingyan/1610981.html #echo "- - -" > /sys/class/scsi_host/h ...

  9. VirtualBox-虚拟硬盘扩容-win7

    问题: 我在VirtualBox下搭建的win7系统只设置了一个C盘,当初只给硬盘分配32G,如今深受生活的毒打,发现只剩5G可用,装个PS都费劲. 我要扩容,扩容! 当前环境: VirtualBox ...

随机推荐

  1. ThreadLocal对象使用过程中容易陷入的坑

    ThreadLocal对象帮助我们管理线程内的对象,保证对象在线程之间是相互隔离的. 今天碰到的坑是这样的: index01.html页面加载的时候会发送一次a请求,然后点击附件上传的时候会发送上传请 ...

  2. sqlserver sp模板

    某公司内部的sp模板 create procedure [usp_my_procedure_name] as begin set nocount on; declare @trancount int; ...

  3. BigDecimal用法详解

    一.简介Java在java.math包中提供的API类BigDecimal,用来对超过16位有效 位的数进行精确的运算.双精度浮点型变量double可以处理16位有效数.在实际应用中,需要对更大或者更 ...

  4. Mono 3.0.12 支持可移植类库

    Mono 3.0.12已于6月19日发布.对跨平台开发者而言,对可移植类库的支持可能是该版本最重要的变化.该技术可以使一个DLL支持.NET.Windows Store.Windows Phone.S ...

  5. 解读ASP.NET 5 & MVC6系列(1):ASP.NET 5简介

    ASP.NET 5简介 ASP.NET 5是一个跨时代的改写,所有的功能和模块都进行了独立拆分,做到了彻底解耦.为了这些改写,微软也是蛮 拼的,几乎把.NET Framwrok全部改写了一遍,形成了一 ...

  6. [大数据之Sqoop] —— Sqoop初探

    Sqoop是一款用于把关系型数据库中的数据导入到hdfs中或者hive中的工具,当然也支持把数据从hdfs或者hive导入到关系型数据库中. Sqoop也是基于Mapreduce来做的数据导入. 关于 ...

  7. JS中script词法分析

    核心:JS中的script是分段执行的. <script> var i = 10; </script> <script> alert(i); </script ...

  8. 彻底理解nth-child和nth-of-type的区别。

    最近又有些天没写博客了,主要写一篇下来,太浪费时间了,其实这不是根本,根本是最近比较忙,忙什么呢?最近发现一个问题觉得学习速度太慢了,时间倒是花的很多,但大部分时间都花在无意义的事情上,所有打算改变政 ...

  9. markdown语法练习

    Markdown练习 这篇文章 主要用于练习markdown各种基本语法. 这篇文章 主要用于练习markdown各种基本语法. 1.标题设置 1.通过在文字下方添加"="或者&q ...

  10. 前端学PHP之面向对象系列第一篇——类和对象

    × 目录 [1]类 [2]成员属性[3]成员方法[4]对象[5]成员访问[6]this 前面的话 面向对象程序设计(OOP)是一种计算机编程架构.计算机程序由单个能够起到子程序作用的单元或对象组成,为 ...