102015
 

虚拟化技术企业数据中心整合、云计算,特别是云计算基础设施服务即IaaS服务中,已经成为一个至关重要的技术。可以说,虚拟化技术是绝大多数IaaS服务的基础。在虚拟化方面有很多种解决方案:如VMware ESXi、微软HyperV,开源的如VirtualBox、Xen和KVM。作为公有云服务和私有云建设的核心技术,虚拟化一直受到业内关注,也因此一直在发展和进步。。早期国外云主机服务商和几乎所有国内云主机服务商一直使用Xen虚拟化技术, 而KVM凭借其近几年的发展被linkcloud和众多新兴的国外IaaS公司所采用。KVM和Xen孰优孰劣?本文对此做一探讨。

KVM作为linux虚拟化技术的后起之秀,凭借其性能和实施的简易性,以及对Linux重量级的持续支持,已经受到许多linux厂商-包括Red Hat和Canonical等的青睐。昔日的老大哥XEN的技术倡导者们则声称XEN的性能强劲,并且拥有一个广泛的管理工具和能够交付卓越性能,以及其它诸多优点。笔者对KVM和XEN分别进行了测试比较。

首先我们来看XEN阵营的支持者的理由。作为开源的虚拟化技术,对比Xen和KVM可以看到,Xen以5个优势领先:更好的可用资源、平台支持、可管理性、实施、性能基准。

可用资源:Xen的问世要比KVM早4年之久(两者分别是2003年和2007年)。随着Citrix、Novell、Oracle、Sun、Ret Hat和Virtual Iron等公司在市场领域的实施,就比较容易找到精通Xen的IT技术人员,更容易让这些技术人员接受Xen相关的培训、更容易得到Xen的咨询帮助以及获得Xen证书。

平台支持:Xen在新版本中支持更多的主机和客体工作环境,包括泛虚拟化技术、硬件辅助支持以及修改过或未修改过的客体操作系统;对UNIX、Linux和Microsoft Windows的特定支持;包括芯片组,如x86、IA64和AMD、Fujitsu、IBM、Sun等公司的ARM,以及x86/64 CPU商家和Intel嵌入式的支持等。

可管理性:EMA在2009年度针对虚拟系统管理的研究结果表明:对于83%的企业来讲,在选择虚拟化技术过程中,管理是一项非常关键或者重要的因素。在对比Xen和KVM时,就可以看到Xen具有一个更加宽泛的第三方配给、备份、存储管理、P2V、容量规划、性能监控、进程自动化、安全和其它管理规则的社区,比如Citrix、IBM、CA、Novell或者Platespin、Enomaly、Microsoft以及HP等。

实施:无论KVM是”第一类”还是”第二类”,这都是语义上的概念。Xen的运行和管理都是在较低级别的(Ring 0)。甚至对于新虚拟机创建,客体机器并不需要像KVM那样共享内存块、CPU指令或者任何底层的Linux操作系统(虽然偶尔也会越权)。

性能:大多数Xen和KVM性能基准的对比都表明Xen具有更好的处理性能(接近于本地处理),只有在磁盘I/O方面略逊于KVM。进一步来讲,独立测试表明随着工作负载的增加KVM的性能逐渐下降。通常情况下,在试图支持四个以上的客体虚拟机时就会崩溃。Xen支持一个客体虚拟机的数量呈线性增长,可以支持30个以上工作负载同时运行。

但是众多厂商作为支持KVM的支持阵营,究竟是什么吸引了他们呢?他们力捧的KVM究竟胜在哪里?

笔者发现即使没有实施广泛的Xen和KVM性能基准研究,仍然有很多理由足以说明Linux领导者(诸如Red Hat和Ubuntu)对待KVM态度的原因。其中最明显并且最重要的因素就是KVM是Linux内核的一部分,Xen是一个安装在Linux内核下层的独立内核。

为什么这一点如此重要呢?其之所以重要是因为在过去Xen工作环境的补丁包不能够和Linux内核兼容。但是如果实施KVM的话,这个问题就可以很容易地得到解决。另外一个选择KVM的原因是KVM在Linux内核内部部署,这样可以很容易控制虚拟化进程。

Xen的拥护者们声称KVM不如Xen技术成熟,并且缺少某些关键特性,如动态迁移和泛虚拟化支持。确实如此,Xen工作环境中的泛虚拟化技术可以使虚拟机的操作更加高效,因为泛虚拟化技术直接和硬件进行交互。然而使用泛虚拟化技术需要修改操作系统,默认Windows的安装并不支持泛虚拟化工作环境。至于动态迁移,KVM也可以做到,只是需要安装正确的KVM版本而已。KVM过去在动态迁移方面确实存在一个问题,但是现在已经解决了。

据LinkCloud介绍,KVM更加灵活。由于操作系统直接和整合到Linux内核中的虚拟化管理程序交互,所以在任何场景下都可以直接和硬件进行交互,而不需要修改虚拟化的操作系统。这一点非常重要,因为对虚拟机运行来讲KVM可以是一个更快的解决方案。KVM需要Pacifica(AMD)或者Vanderpool(Intel)虚拟化CPU这一事实现在已经不能成为KVM发展的限制条件,因为当前大多数服务器CPU都有这些处理器。

支持不选择KVM虚拟化技术的一个可信原因是Xen相对来讲历史更久一点,产品更加成熟些。但是长远来看,Xen将会使Linux内核的负担越来越重,因为Xen缺少很好的整合(并且以后也不会解决这个问题),尽管Xen的开发者们正在积极地解决这个整合问题。

最后一点是KVM是Linux内核的一部分,而Xen做到最好也无非是整合到Linux中。随着时间的推移,Ret Hat(目前掌握KVM技术),作为Linux企业市场中份额最大的企业,将会使虚拟化技术的后来者–KVM同Xen一样功能齐全。我相信未来虚拟化市场必定是KVM的。

LinkCloud介绍,KVM在Linux整合中要优于Xen。它不需要重新编译内核,也不需要对当前kernel做任何修改,它只是几个可以动态加载的.ko模块。它结构更加精简、代码量更小。所以,出错的可能性更小。并且在某些方面,性能比Xen更胜一筹。

目前国内的企业大都是运用XEN技术运营,特别是几乎所有的云主机服务商,包括阿里云,盛大云,万网云等,而使用KVM就只有linkcloud一家,据笔者了解,linkcloud的技术团队做云计算运营的时间比较久,其08年就在国内率先使用XEN来做规模化的商业运营,直至11年该团队创立linkcloud后率先使用KVM为基础运营云主机,作为一家引领行业运营技术的技术团队,其举动是否暗示了未来的虚拟化市场是KVM占主导地位?结论尚未可知。linkcloud率先在国内使用KVM来运营,是否能因为采纳该项技术而提高产品的竞争力,更好的服务于客户,或对行业技术趋势起到引领作用,让我们拭目以待!

 

转载:http://linkcloud.blog.51cto.com/4843529/860843

最牛B的编码套路

   评论关闭
122014
 

最近,我大量阅读了Steve Yegge的文章。其中有一篇叫“Practicing Programming”(练习编程),写成于2005年,读后令我惊讶不已:

与你所相信的恰恰相反,单纯地每天埋头于工作并不能算是真正意义上的锻炼——参加会议并不能锻炼你的人际交往能力;回复邮件并不能提高你的打字水平。你必须定期留出时间,集中锻炼,这样才能把事情做得更好。 继续阅读 »

112014
 

在很多项目中都会有在前端展现数据图表的需求,而在开发过程中,开发者往往会使用一些JavaScript库,从而更有效地达到想要的目标。最近,TechSlide上的一篇文章总结了50种用于展现图表的JavaScript库,并对每种库做了简要的说明。这对于想要选择合适JavaScript库的开发者很有参考意义。 继续阅读 »

Android 开源项目

   评论关闭
082014
 

1.        ZXing  http://code.google.com/p/zxing/

条形码、二维码

2.        K-9 Mail http://code.google.com/p/k9mail/

邮件客户端

3.        Sipdroid http://code.google.com/p/sipdroid/

SIP/VoIP 客户端

4.        Openintents http://code.google.com/p/openintents/

提供了大量的应用程序,使用intent,简化开发

5.        Libgdx http://code.google.com/p/libgdx/

游戏开发框架

6.        opensudoku-android http://code.google.com/p/opensudoku-android/

数独游戏

7.        softkeyboard http://code.google.com/p/softkeyboard/

屏幕键盘

8.        apps-for-android http://code.google.com/p/apps-for-android/

大量andorid实例

9.        android-vnc-viewer http://code.google.com/p/android-vnc-viewer/

vnc客户端

10.    mytracks http://code.google.com/p/mytracks/

记录gps轨迹

11.    androidscreencast http://code.google.com/p/androidscreencast/

电脑控制android的设备

12.    ksoap2-android http://code.google.com/p/ksoap2-android/

SOAP库

13.    bestcardgameever-android/ http://code.google.com/p/bestcardgameever-android/

纸牌游戏

14.    coordinate-talk http://code.google.com/p/coordinate-talk/

基于地理的社交平台国人写的

15.    skylight1 http://code.google.com/p/skylight1/

包含Android应用程序与示例。

16.    android-shuffle http://code.google.com/p/android-shuffle/

GTD(GettingThingsDone)个人备忘记事本

17.    fanfoudroid http://code.google.com/p/fanfoudroid/

饭否Android客户端

18.    android-smspopup http://code.google.com/p/android-smspopup/

短信弹框

19.    swiftp http://code.google.com/p/swiftp/

ftp服务器

20.    callmeter http://code.google.com/p/callmeter/

通信统计

21.    andors-trail http://code.google.com/p/andors-trail/

类似于地牢猎手的角色扮演游戏

22.    remotedroid http://code.google.com/p/remotedroid/

手机远程控制电脑

23.    acra http://code.google.com/p/acra/

软件崩溃报告

24.    transdroid http://code.google.com/p/transdroid/

手机远程控制电脑下载

25.    andless http://code.google.com/p/andless/

可以播放无损音乐的音乐播放器

26.    thelements http://code.google.com/p/thelements/

一个砂子游戏

27.    ipcamera-for-android http://code.google.com/p/ipcamera-for-android/

网络摄像机

142014
 

Python学起来很简单,但随着学习的逐渐深入,就越发感觉Python像是JavaScript的删减版本,由于习惯了JavaScript的写法,所以Python让我感觉到特别的不方便,例如:类的方法必须声明一个self参数用来引用当前对象实例、类似JavaScript、Java等语言构造函数的__init__方法等等都让我感觉到很不舒服。 继续阅读 »