[分享]VirtualBox两个被忽视的功能

Kvm、VMware、Virtualbox、Xen、Qemu 等
回复
头像
百草谷居士
帖子: 3920
注册时间: 2006-02-10 16:36
系统: Mint21.1/Deepin20.8

[分享]VirtualBox两个被忽视的功能

#1

帖子 百草谷居士 » 2008-11-21 1:30

这两天断网,没事看起了virtualbox的帮助文件,忽然发现有两个一直没有注意的功能。一个是设置只读虚拟磁盘的功能,一个是复制原生磁盘的功能。现在写出来一起分享。

第一、把虚拟磁盘设为只读。
我原来一直以为virtualbox没有这个功能。常常羡慕VMWare的只读虚拟磁盘功能,关机后对磁盘所作的修改全都不会保存。什么病毒木马,以及其他操作,一下子恢复到开机前的状态。
virtualbox并不能在GUI方式下设置只读的虚拟磁盘文件,要使用如下的命令来设置只读的虚拟磁盘文件:

代码: 全选

VBoxManage registerimage disk <虚拟磁盘文件名> -type immutable
关键就在后面的参数 -type,这个-type有三种类型:normal,immutable,writethrough。normal就是平时默认使用的正常虚拟磁盘类型,可以读写,可以生成快照并且可以恢复的类型;immutable就是我所说的只读虚拟磁盘,在它上面的写操作会被写入到一个临时的虚拟磁盘文件中,在虚拟机关机后临时虚拟磁盘文件保存的内容被丢弃,而真正的虚拟磁盘还是原来的样子;writethrough就是直接写入虚拟磁盘,不能生成快照,并且只要虚拟机中有一个writethrough类型的虚拟磁盘就不能生成快照。
但是你不能直接把一个空的虚拟磁盘设置为只读模式,因为这个时候你无法在上面安装任何操作系统,只要一关机你所做的操作全部付之东流。所以,正常的使用方法是这样的:
1、使用普通模式的虚拟磁盘安装完操作系统和自己需要的软件;
2、把虚拟磁盘从这个虚拟机上分离开,然后在虚拟存储管理器中取消注册,注意千万别删除物理文件;
3、再使用VBoxManage registerimage disk <虚拟磁盘文件名> -type immutable来注册到虚拟存储管理器中,然后挂载到虚拟机上。
这样的操作稍微有些麻烦,不过这些操作都可以通过使用VBoxManage命令来操作,我倒是写了两个脚本,来实现转换到只读磁盘和转换到普通磁盘的功能。
当然你也可以再为虚拟机挂载一个writethrough模式的虚拟磁盘文件来保存文档和数据,这样就不用担心被病毒木马骚扰了,也可以正常使用了。

第二、将原生磁盘转换为虚拟磁盘文件。(raw disk——我估计翻译为原生磁盘)
这是一个听起来激动人心的功能!可以把物理磁盘的内容原封不动的转移到虚拟机啦!!
同样这个功能也无法通过Virtualbox的GUI界面来实现,也必须通过VBoxManage命令行来实现:

代码: 全选

VBoxManage convertdd <filename> <virtualdiskfilename>
看到命令你会觉得奇怪,既然是转换原生磁盘为啥命令行的参数没有磁盘设备却有一个文件名参数呢?我开始也觉得奇怪。不过帮助文档里面并没有对这个功能进行解释,只是给出了一个命令行格式而已。我想,既然叫做convertdd估计是把dd命令生成的磁盘映像文件转换为虚拟磁盘文件吧。
刚好,手头上有一个安装了ubuntu umpc版本的U盘,拿了做实验正好合适。把U盘插入电脑,然后运行命令:

代码: 全选

sudo dd if=/dev/sdb of=usbdisk.raw
转换结束后注意把生成的磁盘映像文件的所有人从管理员改为自己,然后运行命令:

代码: 全选

VBoxManage convertdd usbdisk.raw usbdisk.vdi
转换结束后,把这个生成的虚拟磁盘文件注册到virtualbox的虚拟存储管理器中,注册的时候会对虚拟磁盘文件进行检查,这需要一小会时间。
然后把这个虚拟磁盘挂载到虚拟机上,开机————OK,成功了!
VBoxManage convertdd还有另外一种形式:

代码: 全选

VBoxManage convertdd stdin <virtualdiskfilename> <size>
我并没有测试这个功能。估计是可以利用管道功能直接把dd命令生成的磁盘映像传递给VBoxManage convertdd程序吧。
不过在实际使用这个命令的时候会遇到一些问题:
1、我不知道在windows系统有没有类似dd这样的程序来生成磁盘映像文件;
2、熟悉windows的人应该知道windows的硬件依赖特性——你不能把已经安装的windows从这台计算机转到那台计算机来运行。同样你也不能把安装好的windows系统从物理机转移到虚拟机来运行。
3、我做实验使用的是一个2G的U盘。要是一个真正的磁盘或者磁盘分区,生成的虚拟磁盘文件可是不小呀!!嘿嘿……
上次由 百草谷居士 在 2008-11-21 1:34,总共编辑 1 次。
debian 12 / 深度系统 20.9 / Mint 21.3

为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。
头像
百草谷居士
帖子: 3920
注册时间: 2006-02-10 16:36
系统: Mint21.1/Deepin20.8

Re: [分享]VirtualBox两个被忽视的功能

#2

帖子 百草谷居士 » 2008-11-21 1:33

为什么段落前面加的空格在提交后没有了?怎么在段首加两个空格? :em20
debian 12 / 深度系统 20.9 / Mint 21.3

为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

Re: [分享]VirtualBox两个被忽视的功能

#3

帖子 bones7456 » 2008-11-21 2:41

给建个快照也相当于只读了,关闭虚拟机的时候,可以选择恢复到之前状态的.
关注我的blog: ε==3
头像
百草谷居士
帖子: 3920
注册时间: 2006-02-10 16:36
系统: Mint21.1/Deepin20.8

Re: [分享]VirtualBox两个被忽视的功能

#4

帖子 百草谷居士 » 2008-11-21 12:07

注意他的使用价值在于可以把系统盘设为只读,数据盘设为正常。既能保存数据又能保护系统。
debian 12 / 深度系统 20.9 / Mint 21.3

为何热衷于搞发行版的多,搞应用程序开发的少?Linux最多余的就是各种发行版,最缺的就是应用程序,特别是行业应用程序。
回复