Post Tagged with: "KVM"

Google 也在用 KVM 的硬件虚拟化技术?

一则外电的消息报道,Google 可能也在使用基于 KVM 的硬件虚拟化技术。

说起来有点奇怪,因为早前 Google 工程师 Luiz André Barroso 宣称他的公司是不会使用硬件虚拟化技术。但是最近有人发现 KVM 2010 大会上有一个名为 Ganeti 的项目,大部分是由 Google 的工程师维护和开发的。Ganeti 是一个用于管理 KVM 和 Xen 集群管理器。这里有一份介绍文档,是由 Google 工程师编写的。

Ganeti 项目似乎也不能说明 Google 真的在使用 KVM,因为 Ganeti 也是能够使用在 Xen 之上。有不少网友也指出早几年传闻 Google 也在使用 Xen,但是没有确切的消息。这次会不会同样情况真的不得而知。但是 Google 的这份文档上面的介绍只出现了 KVM 这个唯一的 Hypervisor,不得不让人怀疑。

究竟事情是怎么样的呢?或者等维基解密或者 Google 自己来说吧。

本届 KVM 2010 论坛的详细情况在

KVM Huge Page 回收内存

Huge Page,巨页是一个很热门的话题,很多大型服务器软件都逐步开始支持使用巨页以减轻内存的开销。在 Fedora 12 之际,KVM 也引入了 Huge Page,以增强 KVM 的性能。

援引自 KVM Huage Page Backed Memory 的简介,x86 CPU 通常使用用 4KB 页面放置内存,但实际上它们有能力使用巨页完成这个任务(x86_32 可以使用 4MB 页面,x86_64 和 x86_32 PAE 可以使用 2MB 的页面)。通过把巨页应用在 KVM Guest 的内存上,页表会使用更少的内存和 TLB 损耗也会被减少,从而提升了 KVM 的性能。在 KVM Guest 的内存上使用巨页确实会有缺点,然而你不再需要交换和 Balloon Guest 的内存。

应用 Huge Page 十分简单,首先挂在 hugetlbfs 文件系统:
<blockquote>mount -t hugetlbfs hugetlbfs /dev/hugepages</blockquote>
通过 sysctl 保留内存给巨页使用,需要搞清楚的这里设定的数字并不是真正的内存容量,而是巨页数量。对应的关系是1 hugepage=2MB RAM,比如:

sysctl vm.nr_hugepages=768

此时系统会划分 1536MB 内存给巨页使用。然后启动 qemu-kvm 的时候添加 -mem-path/dev/hugepages 参数。比如:

qemu-kvm -m 1024 -drive file=test.img -mem-path /dev/hugepages

使用 libvirt 和 virt-manager 管理的 KVM 虚拟机同样可以巨页,把以下内容加入到 /etc/libvirt/qemu 虚拟机对应的 xml 配置文件即可:

<memoryBacking>
<hugepages/>
</memoryBacking>

本人简单地测试了使用巨页和不使用巨页的性能差别,在 Windows XP Guest 跑了 Super Pi 和 wPrime,性能上没有任何区别。但是测试内存的性能时每一次的数据都会跟上一次出入很大。所以没有再测试下去。

如果是打算把电脑作为 KVM 虚拟化服务器使用的话,甚至可以把 hugetlbfs 放在 /etc/fstab 挂载表上,让电脑启动的时候就直接挂载。而 sysctl 参数也可以直接添加到 /etc/sysctl.conf 上。

cat "sysctl vm.nr_hugepages=768"  &gt;&gt; /etc/sysctl.conf

当不再需要巨页的时候,卸载了 hugetlbfs 和把保留给巨页使用的内存量设置为 0 即可。

sysctl vm.nr_hugepages=0
umount hugetlbfs

快速安装 KVM 内核虚拟机

KVM 是 Linux 下一款性能强劲的虚拟机软件。与其他虚拟化技术寄生在系统上不同,这个虚拟机是直接放置在内核,从而拥有更加强劲的性能。

首先是安装,在 Fedora 下安装十分简单,仅仅需要一条命令就可以了:

sudo yum install qemu-kvm libvirt virt-manager

然后是加载 KVM 内核模块:

AMD CPU:

sudo modprobe kvm-amd

Intel CPU:

sudo modprobe kvm-intel

紧接着驱动 libvirt 服务:

sudo service libvirtd start

最后就是打开 virt-manager 创建和启动 KVM 虚拟机即可。

KVM 与 VirtualBox 虚拟磁盘大文件复制测试

VirtualBox 官方论坛正在争论是否为 VirtualBox 引入 virtio-blk 的支持,一方说 virtio-blk 能够有更快的性能,另一方则说性能相差无几。我就专门做了一个大文件的测试作对比。

测试的方法其实很简单,就是把 i686 和 x86_64 两个架构的 Fedora 13 LiveCD 从一个目录复制到另外一个目录里面去,然后对比哪个时间用得少。从测试的结果来看,KVM 支持的 virtio-blk 的确比传统的 IDE 和 SCSI 有巨大提升,但是和 VirtualBox 相比还是有明显差距。具体结果如下:https://docs.google.com/fileview?id=0B6uJ1YpVaG2EMTNjNGU1NWUtMjRjNy00MDZmLTk3M2ItZDMyNTVjMjU0YTkx&hl=en

论坛版主 Technologov 也提供了小文件测试的数据,似乎他好像忘记了测试一次以后清空缓存哦。

红帽宣告 RHEV-M 开源

根据 virtualization.info 的报道,全球领先的 Linux 厂商红帽宣告他们的虚拟化管理工具 RHEV-M。

红帽的虚拟化产品 RHEV 分为 RHEV-H 和 RHEV-M。前者实际就是一个轻量级的 RHEL+KVM 组合,外加一些基本的配置工具如 libvirt 等,这些组件一直都是开源的。而后者因为历史原因依然是闭源状态。现时 RHEV-M 依然需要使用 Windows 服务器作为管理服务器。即使开源了也存在部分兼容问题无法在 Linux 服务器安装使用 RHEV-M,这看开起来有点尴尬。稍候红帽计划打算用跨平台语言 Java 重新编写 RHEV-M,取代现在用 C 语言编写的版本。到时候 RHEV-M 就可以在跨平台上运行。预计 Java 版本的 RHEV-M 会在 RHEV 3.0 的时候一并发布。

红帽暂时没有计划推出免费的缩减版 RHEV。籍着 RHEV-M 的开源,不知道会不会出现一个仿照 CentOS 模式的社区版企业级 RHEV 呢?我们拭目以待吧。