shell Windows Android Firefox 开源 java mysql wordpress 微软 Python centos Ubuntu apache HTML5 php linux命令 程序员 nginx linux google

Ubuntu服务器应用KVM实现虚拟化速成手册

本文教大家如何让KVM在Ubuntu服务器上顺畅运行、安装多个访客操作系统、管理存储,以及将访客操作系统迁移到新主机上。

作为Linux内核虚拟机管理程序,KVM称得上是企业级虚拟化领域的后起之秀。它有诸多优点:非常精简,因而占用资源少,运行起来速度快,可以轻松自如地运行没有经过改动的访客操作系统。在这堂速成课中,我们会迅速让KVM在Ubuntu服务器上运行起来、安装多个访客操作系统、管理存储,以及将访客操作系统迁移到新主机上。

KVM与Ubuntu服务器

KVM的全称是“基于内核的虚拟机”,最先由Qumranet公司开发而成。2008年,红帽公司收购了Qumranet,将KVM作为服务器版红帽企业级虚拟化(RHEV)的核心部分。KVM采用了GPL许可证模式,是主线内核(mainline kernel)的一部分,因而任何Linux发行版都能支持它。KVM是一种类型2虚拟机管理程序,这意味着它在操作系统里面运行。一些流行的类型2虚拟机管理程序包括Xen和VirtualBox。类型1虚拟机管理程序(如IBM的z/VM和VMWare ESXi)则可以直接在裸机上运行,不需要什么操作系统。KVM几乎支持任何访客操作系统:Linux、Mac OS X、Unix、Windows以及你所采用的其他任何操作系统。

与KVM一样,Ubuntu服务器也发展成为一款面向企业的重量级服务器。Ubuntu支持x86和x86 64位平台上的KVM。与红帽和Novell这两大企业级Linux开发商不一样,你没必要进行注册或者理睬销售噱头,就可以下载和测试Ubuntu。如果你想要获得培训、商业支持或者在线服务(比如Landscape系统管理器或Ubuntu云服务),你想要的时候,就能随时获取。

系统要求

就这堂速成课而言,你需要配备英特尔VT或AMD-V处理器的Ubuntu计算机,因为这些处理器包含特殊的扩展功能,可以原生支持虚拟机。(想了解更多信息,请参阅KVM的处理器支持页面:http://www.linux-kvm.org/page/Processor_support)。我在本文中使用了11.04 Natty Narwhal 64位版本。我建议使用Ubuntu服务器作为你生产环境的KVM服务器;但是进行测试的话,任何Ubuntu都可以。使用该命令,看看你的x86处理器有没有虚拟化扩展功能:

$ egrep -o '(vmx|svm)' /proc/cpuinfo
vmx
vmx

这个示例显示了能够支持虚拟化的双核英特尔处理器。你可能不得不在你系统的BIOS中启用虚拟化扩展功能。确保这项功能已启用,否则KVM无法正常运行。

你可以在64位系统上运行32位或64位访客操作系统,但是在32位系统上却只能运行32位访客操作系统。使用大量内存是好事,使用多核处理器也是如此。Ubuntu服务器占用系统资源很少,因而给你的虚拟机访客操作系统留出了更多资源。Ubuntu服务器系统的最低要求是300 MHz处理器、128 MB内存和1 GB硬盘空间。这个要求非常低。为了测试KVM,我建议至少为你的访客操作系统配备2 GHz处理器、2 GB内存以及足够的磁盘空间,另外还要有数据存储系统。为生产服务器配置资源很难做到非常准确。如果你仅仅把所有访客操作系统的系统要求叠加起来,很可能面临一台配置过度的机器,除非你的访客操作系统始终在全速运行。虚拟机的其中一个优点是,可以更高效地使用硬件,因为当一个访客操作系统闲置时,另一个访客操作系统忙碌运行。如果你配置资源过少,服务器变得不堪重负时,那么可以将访客操作系统转移到不同主机上。所以,你有很大的活动余地,不需要一开始就在资源配置方面做到完美。

安装KVM

安装这些软件包:

$ sudo apt-get install qemu-kvm libvirt-bin virt-manager bridge-utils
然后运行该命令,确保它准备好运行KVM:
$ kvm-ok
info: /dev/kvm exists
KVM acceleration can be used

要是缺漏了什么,它会告诉你KVM加速无法使用。在采用根权限的情况下运行,获得让它正常运行的暗示信息(hint),就像这样:

$ sudo kvm-ok
[sudo] password for carla:
INFO: /dev/kvm does not exist(/dev/kvm不存在)
HINT: sudo modprobe kvm_intel
INFO: Your CPU supports KVM extensions(你的处理器支持KVM扩展)
INFO: KVM (vmx) is disabled by your BIOS(KVM [vmx]被你的BIOS禁用)
HINT: Enter your BIOS setup and enable Virtualization Technology (VT),
(进入你的BIOS设置界面,启用虚拟化技术[VT],)
and then hard poweroff/poweron your system
(然后对你的系统执行硬关机/开机操作)
KVM acceleration can NOT be used(KVM加速无法使用)

就像我刚才说的那样,要确保KVM扩展功能已在你系统的BIOS中启用。现在,把你的用户添加到libvirtd组,然后注销,重新登录,激活你的组成分身份。现在,你不用操心权限方面的问题,就可以控制KVM了。运行该命令,证实KVM在正常运行:

$ virsh -c qemu:///system list
Id Name State
 

太好了! ID Name和State这两个字段都是空的,它们本该是空的。现在开启虚拟机管理器(Virtual Machine Manager),运行该命令,连接到你的KVM服务器:

$ virt-manager -c qemu:///system kvmhost

Kvmhost是我的服务器名称,所以你必须将它换成你的服务器名称。你会看到下面图1这样的画面。

图1:图形化的虚拟机管理器成功地连接至KVM服务器

安装访客操作系统

目前还没有多大的动静,因为我们还没有安装任何访客操作系统。你可以通过cd/DVD、ISO映像文件、netinstall(网络安装)和PXE启动等方式来安装新的访客操作系统。CD/DVD安装需要内部驱动器;U盘不行。我青睐通过ISO映像文件来安装,因为这种安装方式速度快,又没必要刻录磁盘。如果是网络安装,需要知道安装服务器的URL地址;如果是PXE启动,则需要tftp/PXE启动服务器。

要安装新的访客操作系统,点击“Create a new virtual machine”(创建新的虚拟机)按钮,按屏幕提示逐步完成操作。想在你的系统上找到ISO映像文件,点击屏幕2中的Browse(浏览)按钮,然后查看Browse Local(浏览本地)按钮的“locate ISO media volume”(定位IOS介质卷)屏幕的左下角。点击该处,即可打开文件选择器。在屏幕5上,务必要勾选“Allocate entire disk now”(立即分配整个磁盘)。这并不意味着,它会接管你的整个磁盘,而是会立即预留你为访客操作系统分配的所有空间。如果你没有选择这个,那么KVM就会根据需要分配空间,上限是最大分配值。这年头磁盘空间便宜得很,所以不值得冒这个险:因不小心用光了磁盘空间而导致数据被损坏。一开始就要预留访客操作系统的最大分配值,之后你再也没必要操心这个了。

虚拟机窗口可能不够大,显示不下访客操作系统的整个屏幕,于是用光标抓住窗口一角,拖到合适位置。如果虚拟机捕捉你的鼠标指针,按Ctrl+Alt组合键,即可重新放开。图2显示了通过ISO映像文件正常安装openSUSE的过程。

 图2:安装OpenSUSE访客操作系统。

 下面的图3显示了三个访客操作系统的样子,它们都同时运行,控制台都开着,虚拟机管理器在顶部。

图3:三个访客操作系统:Jeoss、Ubuntu服务器和OpenSUSE都在KVM服务器上运行。

你可以控制每一个访客操作系统,就好像它们安装在不同的机器上;你也可以随时开启和关闭它们。网络功能自动启用,所以你的访客操作系统能访问互联网和局域网。每一个访客操作系统都可以在安装后加以改动,只要打开相应访客操作系统的控制台,然后点击蓝色的i(信息)按钮(见图4)。在该屏幕上,你可以微调处理器的使用和内存、查看性能图表、控制启动选项、设置外设、管理存储,以及添加新的硬件设备。默认情况下,访客操作系统无法访问CD/DVD驱动器和USB存储设备,所以这些设备得手动添加。

图4:安装后编辑访客操作系统。一切都可以改动。

 管理存储

虚拟机管理器让存储管理既容易又快速。只要点击Edit(编辑)> Connection Details(连接细节),即可创建额外的存储池。这可以打开有多个选项卡的一个屏幕。Storage(存储)选项卡显示了现有的存储池,还可创建新的存储池。从左窗格开始,点击绿色十字图标,即可分配一个新的存储块(图5)。这个存储块可以是目录、块设备、SCSI主机适配器、网络文件系统、逻辑卷管理器(LVM)组或者iSCSI目标。然后,你可以在右窗格中随意对它进行分隔。点击New Volume(新建卷)按钮,配置大小,然后选择raw或qcow2磁盘映像格式,因为这些格式与所有文件系统兼容。raw是默认格式,也是速度最快的。qcow2则支持AES加密、快照和压缩。

图5:创建和分隔新的存储块。

管理访客操作系统

你可以将访客操作系统迁移到不同的主机上用于均衡负载、软硬件维护或者仅仅用于试验。启用迁移功能有一个前提条件,那就是你的主机必须使用共享网络存储,比如NFS共享区、光纤通道或iSCSI;不管是哪一种,源主机和目的地主机都必须已经使用同样的共享网络存储池。

迁移有两种类型:离线迁移和实时迁移。在离线迁移中,访客操作系统被停止,然后访客操作系统内存的映像转移到新主机上,重新启动。在实时迁移中,KVM将访客操作系统的内存页面迁移到新主机上,监测旧主机有无变更内容,然后将变更内容转移到新主机上。当页面都拷贝完毕、在指定的一段时间内(默认值是10毫秒)没有变更时,访客操作系统在旧主机上被停止,在新主机上恢复运行。要是旧主机处于忙碌状态,实时迁移就要花费很长的时间,或者根本就无法完成,所以那样的话,你就要停止实时迁移,改而采用离线迁移。迁移过去的仅仅是访客操作系统内存的内容;磁盘存储并不迁移。

之后,迁移访客操作系统只需要简单地点击几下鼠标。从虚拟机管理器的主控制台,鼠标右击你想要迁移的那个访客操作系统,然后右击Migrate(迁移)。如果你想要进行离线迁移,勾选“migrate offline”(离线迁移)。New host(新主机)下拉菜单会列出所有可用的KVM主机。选择你想要使用的那个主机,点击Migrate(迁移)按钮,就大功告成了。

远程管理和CLI

虚拟机管理器支持远程管理。把它安装到你常用的工作站或笔记本电脑上,然后用该命令,连接到你的KVM服务器上:

$ virt-manager -c qemu+ssh://kvmhost/system

把kvmhost换成你自己的服务器的主机名。这可以通过SSH为你的会话建立安全隧道,所以你需要在KVM服务器上运行的SSH服务器。

你可能更喜欢从命令行来运行KVM服务器,你可以这么做。具体请查询virt-manager、virsh和qemu-kvm的参考手册页。

我们的速成课到此结束,但还有许多方面要学习,比如安全、资源分配方面的更深入问题和最佳实践。Ubuntu服务器指南第19节(https://help.ubuntu.com/11.04/serverguide/C/virtualization.html)很有帮助,而红帽企业级Linux 6虚拟化指南(http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Virtualization/index.html)的内容最全面。

延伸阅读

评论