引言

作为优秀的虚拟化技术,kvm自从被linux内核引入后,逐渐受到了开源界的大力支持。也不断有如IBM、Cononical等公司支持。对比于Xen,kvm的技术起步比较晚,但是发展迅速,得益于开源的特点,所以得到了非常迅速的发展。

目前主流的虚拟化解决方案,有Xen,KVM,VMware,openvz。当然性能最强的,算是openvz,毕竟和母鸡是同内核,但是成也在此,败也在此,容易受到其他虚拟主机对于资源的竞争。而其余三个虚拟化方案有着较为良好的隔绝性能。

以前记得有了解过,宿主架构就是用于个人PC上的虚拟化,比如VMware workstation、Virtual Box、Qemu等。裸金属架构就是用于服务器的虚拟化,当然也有VMware的ESX和MS的Hyper-v,linux开源界的Xen和KVM。

  • VMware workstation是我个人在windows下面使用较多的虚拟机配置平台,当然VirtualBox这样的开源跨平台方案也是有着非常良好的支持。以前玩软路由也用过ESXI6.0,号称用着极简的linux内核以达到95%的硬件性能利用。
  • Xen由于部分封闭,现在受到的主流支持应该是Oracle。技术成熟,但是我没接触过,似乎阿里云是Xen。
  • KVM是几年前转linux后,常常使用的虚拟化方案。KVM利用内核的支持,个人感觉相比于virtualbox有着更高的效率,在虚拟机数量比较多,特别是用于服务器的时候,会体现出更大的优势。当然在virt-manager的GUI支持下,图形化界面使得KVM更加简单易操作。似乎Virtualbox在5.0版本后也加入了对于KVM的支持。那QEMU的优势可能在于多架构和没有GUI的情况。(其实最大的原因是一个命令就能打开虚拟机,方便快捷

我与KVM

作为一个不合格的linuxer,感觉自己接触linux这么久以来,始终接触的是用户层面,对于linux的真实面目其实了解的不算很多,不过linux是个大坑,各方面的东西都够研究很久了,让linus来也不一定能了解所有的。不过linux的倒腾使用是一个不断学习和发现自我的过程,需要耐心和兴趣。

QEMU安装好了,最开始用qemu直接虚拟一个win7.img,cdrom加载的是一个精简版的win7企业版ISO,能感觉到进度条的卡顿和龟速。太慢了我直接关掉了。

然后安装了kvm,用刚才的QEMU命令,将QEMU换成kvm,速度很快,进度条很快就跑完了。当然在原来的命令后面加入启用kvm也是同样的效果。

为什么要虚拟

很现实的原因是我是学生狗,有几点原因:

  1. 在家需要用学校的vpn,然而只有exe客户端(我用高中同学学校的pac浏览器代理解决了
  2. 需要用MS office(强制学习WPS,linux下面的wps不臃肿,没广告,很清爽高效
  3. 需要用计量软件,Eviews、SPSS和Deap(这个我想wine的,但是想了想不够清真,还是算了

基于最后一点,我还是打算kvm虚拟一个,当然还有一个原因是那个win7.img可以在其它机器上跑,相当于一个随身的系统,这也有自己的优势,可克隆。

当然,QEMU/KVM如今除了命令行,还有virt-manager图形界面可用来操作。这里要面对的问题是虚拟机和主机如何共享文件,这个我当时考虑到了两个方案:

  1. 云盘(我用的腾讯微云,家里网速够快,直接这样简单省事
  2. 主机dd出来一块磁盘,虚拟机启动的时候,挂载这块磁盘即可通过这块“共享的磁盘”传输文件,但是不能同时被主机和虚拟机读写,所以存在需要虚拟机关机再主机读写。操作复杂不方便

写写大概的操作吧:

  • 创建qcow2格式的镜像
1
qemu-img create -f qcow2 win7.img 10G
  • QEMU启动虚拟机,分配1G内存,其余默认,网络默认是nat,挂载win7.iso
1
qemu-system-x86_64 -m 1G win7.img -cdrom win7.iso
  • KVM启动虚拟机,分配1G内存,其余默认,挂载win7.iso
1
kvm -m 1G win7.img -cdrom win7.iso

安装好系统后,直接

1
kvm -m 1G win7.img

就会弹出QEMU窗口操作windows7了。当然通过对主机的vnc的配置,能实现vnc操作而无需主机有显示器。(似乎49就是这么做的