
超级郁闷,没理由啊...我的是64位的Ubuntu和64位的VirtualBox哦...百思不得其解,遂到英文版的维基百科查阅相关资料。全是英文啊!!有点难啃,不过幸亏能够看得明白吧,呵呵!!现在略懂一点的其原因了。问题出在VirtualBox的核心模块身上了。因为VirtualBox是一个全虚拟化(Full Virtualization)的解决方案,虚拟机运行的程序,需要通过一个Binary Translator的东西转换到实体机,然后通过CPU去运算和执行。这种原理有点像网络上的NAT吧。然而,虽然我安装的是64位的实体机OS和64位的VirtualBox,但是由于VirtualBox的Binary Translator不太支援64位指令的转换,所以只能运行32位的虚拟机系统了。真郁闷!!有点后悔当初为什么败了一个E2160呢....
事情是不是没有办法去解决呢??等待VirtualBox发布支援64位的Binary Translator??这似乎是不可能出现的。因为VirtualBox已经通过AMD-V和Intel-VT的技术实现对虚拟机的64位支持。借助硬件虚拟化(Hardware-Assisted Virtualization)的技术,虚拟机监护程序可以通过一组特定的API,使虚拟机能够直接使用到实体机CPU的所有特性。而CPU,也内置了硬件虚拟化的加速指令,从而提高兼容性,也提高了虚拟机的运行速度。有了这种技术,开发一个支援64位的Binary Translator就显得没有必要了。因为开发这种东西要浪费巨大的人力物力,而且效果也不是太好,既然现在有了VT技术了,又是如此方便和效率高,那么再搞Binary Translator就显得不是太必要了。只是有点nnd,Intel太不厚道了。连VT的支持也不给中低端用户。还是AMD的厚道,要是在BIOS打开了VT,VirtualBox根本就撇不下VT。

现时VirtualBox的开发路线图:http://kosovo.sun.com/sunnews/events/2009/osc_malta/pdf/Virtualization.pdf
认真一点看了VirtualBox的规划,发现Sun对VirtualBox不仅仅是作为一个桌面的虚拟化方案来做的,而是覆盖到整个虚拟化市场的,无论是桌面还是服务器的。在未来Sun还会对VirtualBox加入不少新的特性。Windows的DirectX 3D的加速,Guest SPM support,实时转移,第二代Windows无缝模式等等实用功能。只是有点担忧的是,Sun已经卖给Oracle,那VirtualBox的命运如何呢?
不过VirtualBox是如此的强大,Sun自家的xvm server还怎么卖啊?这是基于xen的一个方案,看来它只能屈身于数据中心和云计算之中了,囧,哈哈!VirtualBox真的很强大。微软自家的虚拟化方案则显得相形见绌了。什么Hyper-V什么XP Mode什么Virtual PC,在微软之下,显得越来越烂!虚拟化应该是开源世界的天下了!

谈到了虚拟化,就不得不提到其他的技术了。有一种是Partial Virtualization,叫部分虚拟化技术。原理有点像硬件虚拟化和全虚拟化的混合体,就是一部分虚拟硬件通过传统的全虚拟化技术获得,另外一部分则是通过实体硬件获得。不过这种技术还是存在于理论之中,还没有真正可用的成果可以用。另外一种就是操作系统级别的虚拟化,Operating system-level Virtualization,这种比较常见。通过划分现有的系统资源和用户空间来实现的,常用的VPS(虚拟主机)都是通过这样的技术来实现的,例如是OpenVZ。
当然不会少了半虚拟化Paravirtualization了,现在最热门的似乎是半虚拟化的技术。因为它可以更省系统资源,而且拥有更好的性能。半虚拟化是通过用软件接口来模拟硬件的一种技术。但是这种技术需要修改系统的内核来实现。在Linux系统下,修改内核是十分容易的,但是在专有的系统上,修改内核是十分困难的。但是借助硬件虚拟化技术,Windows已经可以运行在Xen虚拟机上了。或许半虚拟化和硬件虚拟化的结合就是最好的办法。当然现在Xen也正在致力于全虚拟化的研究。

提到Xen,肯定少不了KVM了。KVM就是置于Linux内核上的虚拟机。虽然是全虚拟化,但是凭借着放置在内核的优势,减低了数据交换的延迟,而且安装KVM必须要有硬件虚拟化的支持,速度也是极其之高的效率,但是最大的一个缺陷就是KVM是很难得到Windows ACPI的支援。不过在长期开机的服务器环境,停机已经是小概率事件,所以这个是无关大雅的问题。当然在Red Hat的努力下,KVM已经可以实现半虚拟化了,而且性能也一样的高。不过对于桌面的应用来说,KVM似乎不太适合,因为KVM的图形性能很糟糕,主要是因为虚拟的网卡实在太落后了。
还有一种虚拟机,不,那个叫仿真器才对,QEMU,也是作为一个虚拟机的产品之一。不过他可以模拟任意CPU,即使你的CPU是x86的双核,那么也可以模拟成一个PowerPC的CPU或者MIPS的CPU,当然性能是比较低下的了,即使有了kqemu加速模块。所以这个东西也比较少人用,不过QEMU结合KVM来使用还是超级强大的。
呵呵!我水平有限啊,虽然介绍了这么多东西,但是我觉得还有不少错漏的,希望大家指正啦!!
呵呵,没研究那么深……只知道 64 位 Guest = 64 位 Host + VT……
回复删除在E2160的虚拟机里面跑不了64位FEDORA...那就特意认真去看看.....
回复删除PT发来贺电.....
回复删除我一台64位的电脑也跑不起64位的ub9.04,还以为是电脑的问题~~~
回复删除吾错吾错~~
回复删除PT总是喜欢发贺电....
回复删除其实还有一些内容是遗留了,没有写上去,找个时间要补上哦...
Felix发来贺电
回复删除