论文部分内容阅读
中图分类号:TP392 文献标识码:A
摘要:本文介绍了KVM的相关理论,探讨了在服务器端的内核级虚拟化管理平台 KVM的实现细节,研究了用于 PC 平台模拟的虚拟化软件QEMU和支持 QEMU 设备驱动的 Libvirt 虚拟化环境管理套件实现途径。
关键词:服务器虚拟化;KVM ;QEMU
1.KVM 虚拟化技术
虚拟化就是将原本运行在真实环境下的计算机系统或组件运行在虚拟出来的环境中,是一种调配计算资源的方法,它利用软件将不同层面,比如硬件、软件、数据、网络、存储等隔离开来,使得层与层之间的改动更容易被实施,带来的直接效果就是高效管理以能更有效地利用IT资源并方便提供合适的计算资源。
与桌面虚拟化、存储虚拟化和网络虚拟化不同,当利用软件在服务器上创建一个虚拟机来模拟底层硬件的服务和功能,使得它能在一台机器上运行多个操作系统时被称为服务器虚拟技术。虚拟服务器端实现的功能模块主要包括内核级虚拟化管理平台KVM,用于PC 平台模拟的虚拟化软件QEMU ,支持设备驱动的虚拟化环境管理套件Libvirt 。
KVM(Kernel-based Virtual Machine) 是一款基于GPL 授权方式的开源虚拟机软件,由AviKivity 开发和维护,现归RedHat 公司所有。KVM 是在Linux 系统中使用基于Intel VT 技术采用底层硬件的虚拟化支持来提供完整的原生虚拟化,只要底层硬件虚拟化支持,就能较好地将不同的操作系统和特殊硬件设备加以利用,从而能够降低不同系统间维护的复杂度。
KVM只提供了一个虚拟化框架,还需要一种用户空间工具来提供环境仿真能力,因此使用了QEMU 。QEMU 是一个平台虚拟化解决方案,在KVM之前就已经存在,可以仿真一个具有处理器和包括图形适配器、磁盘、网络设备等外围设备的完整计算机系统。在客户操作系统上执行的功能是由QEMU 提供的,客户操作系统所生成的任何请求都会被中途截获,并重新发送到进程模拟的用户模式中[1]。
Libvirt 是管理虚拟机和其他虚拟化功能的软件集合。这些软件包括一个API 库、一个daemon 和一个命令行工具,用于实现一种单一的方式管理多种不同的虚拟化提供方式和hypervisor 虚拟化平台。libvirt 通过一种特定于虚拟机监控程序的机制与每个有效虚拟机监控程序进行通信,以完成API 请求,并通过QEMU 来实现该功能。
Libvirt 分为Libvirtd 和Driver 两部分,Libvirtd 是一个守护服务进程(Daemon Service) ,打开一个服务器可配侦听端口号,侦听从Libvirt 客户端发出的URI 请求并解析该请求,然后调用Driver 向具体的虚拟机发出命令。
Libvirt 支持QEMU 虚拟环境,相应地支持QEMU 的设备驱动。QEMU 的命令都可以通过Libvirt QEMU Driver 调用。Libvirt QEMU Driver 通过CLI 命令行方式发起对QEMU 的请求。Libvirt Driver 与QEMU 之间的通讯通过Linux PIPE 实现,也就是Libvirt Driver 打开一个写通道,QEMU 打开一个读通道[2]。
Libvirt 的主要功能是进行虚拟机管理、远程机器支持、存储管理、网络接口管理和虚拟NAT和基于路由的网络。
virsh 构建于libvirt 之上,它是一种虚拟shell 。virt-install 可用于从多个操作系统发行版供应新域,virt-clone 可用于复制一个VM为新的VM ,virt-manager 是多用途桌面管理工具,virt-viewer 是安全连接到VM图形控制台的轻量级工具。
构建于libvirt 之上的一种最重要的工具名为VirtIO 。VirtIO VM 管理应用程序旨在管理单个节点上的单个VM 或多个主机上的大量VM。除了可以简化大量主机和VM的管理之外,它还可用于跨平台和架构自动化集群,负载平衡和工作[3]。
2.高校实现服务器虚拟化的优势
服务器虚拟化架构具有灵活多变的组织形式,非常适合于像高校这种频繁更换OS系统平台、机房、教学中心等大规模的、需求多变的应用场景。
2.1提高服务器部署效率和利用率。
部署虚拟化服务器平台之后,若某个系部或教师需要使用服务器进行教学科研或其他应用活动,网管中心管理员在短时间内就可以从虚拟化服务器平台中按照需求划分出满足要求的虚拟服务器以供使用,尽最大能力合理分配服务器资源,当某个服务器不再使用时,管理员可以随时将虚拟机撤销,计算资源立即被释放,然后这部分被释放的计算资源可再次划分为另一台虚拟服务器,供另一个部门使用,避免造成资源浪费。
2.2提高网络教学上机环境统一部署效率。
在典型的网络教学环境中,教师除了授课之外,最大的困难在于为数十台或上百台学生机部署上机环境和经常出现的由于硬件故障导致多个学生无法使用计算机的情况。基于服务器虚拟化后可以使用RDP 、SPICE 等桌面显示协议虚拟桌面环境解决方案,将传统网络教学环境下的学生机转换为瘦客户端,其所有软件环境全部部署在后端数据中心虚拟桌面服务器上,实现快速的实验环境模拟、重建,且使用瘦客户端避免了学生机的硬件损坏,提高了授课中设备的正常使用率。
2.3极强的服务迁移和扩展能力。
在进行服务器应用迁移的时候,只需要将这个包含了操作系统和应用程序的虚拟机文件通过拷贝的方式复制到另外一台服务器上面,如果对虚拟机文件进行复制操作,立刻就可以将一个虚拟机变成两份完全一样的虚拟机,极易部署和迁移。
若需提高虚拟化服务器平台的处理能力,只需要增加更多的物理服务器数量来增强整个虚拟化平台的处理能力,并将一部分应用迁移到其上运行即可,整个过程不会对正在运行的虚拟机产生任何影响。 2.4高可用性和节能环保。
部署虚拟化服务器平台之后,所有的服务器就构建成一个统一的硬件处理平台,任何一台服务器的故障不会对整个系统造成任何影响,运行在其上的虚拟机以及运行在虚拟机上的业务不会因为一台物理服务器或虚拟机的故障而停机,相当于为所有的服务器都构建了高可用的系统,任何一台服务器的故障不会对运行在其上的虚拟机造成影响。
通过整合减少服务器数量,可减少服务器占用机房空间,降低发热量,从而降低在制冷设备方面的投入及散热成本。耗电量的减少及线缆维护工作量的减少,大大降低网管工作量和运营成本。
3.服务器虚拟化的实现过程
选用IBMx3650 服务器,安装基于linux3.2.0 内核的Ubuntu Server 12.04 x86_64 位操作系统,基于KVM对服务器进行虚拟化,设置CPU 、内存、硬盘、网络等硬件环境,安装操作系统及应用,实现完整的服务器虚拟化解决方案。
3.1环境检查及软件安装
KVM是基于CPU 硬件虚拟化基础之上的,在安装KVM 之前必须确认硬件层CPU 是否支持虚拟化技术。使用如下命令进行检测,有输出结果说明CPU 支持虚拟化。
3.2建立虚拟磁盘镜像并安装虚拟机
此步骤和传统安装方式一致。
3.3虚拟网络的配置
默认设置是使用SLIRP 协议的用户模式连接,它通过网络地址转换(NAT) 透过宿主机和外部网络进行通信,虚拟机操作系统内网卡采用内部DHCP 方式获取私有IP 地址与外部网络通讯,但虚拟机不能向外提供服务,也不能与主机进行通信。
为了使外部主机可以直接连接到虚拟服务器上,需要配置网桥(bridge) ,网桥是一个接口,与eth0 不同的是它由多个接口共同构成。网桥使虚拟接口通过物理接口连接到外部网络,对网络中的其他主机来说,虚拟机看起来就像一台普通的服务器主机。
网桥模式是将物理网卡eht0 虚拟成一个虚拟网桥brx 和虚拟网卡tapx ,然后将虚拟网卡tapx 和物理网卡ethx 加入网桥,设置成网桥端口并激活虚拟网卡tapx 。libvirt 每启动一个VM 时,就为这个VM 创建一个tap 设备,称为vnetx ,然后将这块虚拟网卡加入桥设备brx ,网桥IP 设置成原主机IP 地址,这时主机操作系统就可正常通讯。
3.3虚拟机的优化和管理
利用构建于libvirt 之上的虚拟shell 程序virsh 以交互方式使用多个libvirt 功能。首先是要定义libvirt 属性多样化域配置文件。利用该域配置文件修改QEMU 域要使用的一些基本元数据,包括域名、最大内存、初始可用内存以及该域可用的虚拟处理器数量以及上述bridge 网络参数,然后启动新域,使用内的命令列出给定主机上的活动域。
4.结论
虚拟化后随着服务器的数量减少,故障率明显降低,故障修复周期也大幅缩短,保障了教学资源的稳定运行。部署新服务器工作周期的缩短极大地降低部署复杂程度,提高了工作效率。
参考文献:
[1]崔泽永,赵会群.基于KVM 的虚拟化研究及应用[J]. 计算机技术与发展,2011(6):108.
[2]敖青云,蒋文蓉.基于和的虚拟桌面系统的实现与应用[J].计算机应用与软件2012(11):218.
[3]崔泽永.基于的虚拟机调度方法研究.北方工业大学工程硕士论文
[4]徐燕雯.基于KVM 的桌面虚拟化架构设计与实现[D]. 上海交通大学工程硕士专业学位论文,2012,6:28.
[5]Tim Jones M.Libvirt.虚拟化库剖析━━针对简单的Linux 虚拟化的API[EB/OL].http://www.ibm.com/developerworks/cn/ linux/l-libvirt/. Realization of the KVM Based Sever Virtualization EnvironmentLI Bin, HU Yi-feng (Sanmenxia Polytechnic, Sanmenxia 472000, China)
摘要:本文介绍了KVM的相关理论,探讨了在服务器端的内核级虚拟化管理平台 KVM的实现细节,研究了用于 PC 平台模拟的虚拟化软件QEMU和支持 QEMU 设备驱动的 Libvirt 虚拟化环境管理套件实现途径。
关键词:服务器虚拟化;KVM ;QEMU
1.KVM 虚拟化技术
虚拟化就是将原本运行在真实环境下的计算机系统或组件运行在虚拟出来的环境中,是一种调配计算资源的方法,它利用软件将不同层面,比如硬件、软件、数据、网络、存储等隔离开来,使得层与层之间的改动更容易被实施,带来的直接效果就是高效管理以能更有效地利用IT资源并方便提供合适的计算资源。
与桌面虚拟化、存储虚拟化和网络虚拟化不同,当利用软件在服务器上创建一个虚拟机来模拟底层硬件的服务和功能,使得它能在一台机器上运行多个操作系统时被称为服务器虚拟技术。虚拟服务器端实现的功能模块主要包括内核级虚拟化管理平台KVM,用于PC 平台模拟的虚拟化软件QEMU ,支持设备驱动的虚拟化环境管理套件Libvirt 。
KVM(Kernel-based Virtual Machine) 是一款基于GPL 授权方式的开源虚拟机软件,由AviKivity 开发和维护,现归RedHat 公司所有。KVM 是在Linux 系统中使用基于Intel VT 技术采用底层硬件的虚拟化支持来提供完整的原生虚拟化,只要底层硬件虚拟化支持,就能较好地将不同的操作系统和特殊硬件设备加以利用,从而能够降低不同系统间维护的复杂度。
KVM只提供了一个虚拟化框架,还需要一种用户空间工具来提供环境仿真能力,因此使用了QEMU 。QEMU 是一个平台虚拟化解决方案,在KVM之前就已经存在,可以仿真一个具有处理器和包括图形适配器、磁盘、网络设备等外围设备的完整计算机系统。在客户操作系统上执行的功能是由QEMU 提供的,客户操作系统所生成的任何请求都会被中途截获,并重新发送到进程模拟的用户模式中[1]。
Libvirt 是管理虚拟机和其他虚拟化功能的软件集合。这些软件包括一个API 库、一个daemon 和一个命令行工具,用于实现一种单一的方式管理多种不同的虚拟化提供方式和hypervisor 虚拟化平台。libvirt 通过一种特定于虚拟机监控程序的机制与每个有效虚拟机监控程序进行通信,以完成API 请求,并通过QEMU 来实现该功能。
Libvirt 分为Libvirtd 和Driver 两部分,Libvirtd 是一个守护服务进程(Daemon Service) ,打开一个服务器可配侦听端口号,侦听从Libvirt 客户端发出的URI 请求并解析该请求,然后调用Driver 向具体的虚拟机发出命令。
Libvirt 支持QEMU 虚拟环境,相应地支持QEMU 的设备驱动。QEMU 的命令都可以通过Libvirt QEMU Driver 调用。Libvirt QEMU Driver 通过CLI 命令行方式发起对QEMU 的请求。Libvirt Driver 与QEMU 之间的通讯通过Linux PIPE 实现,也就是Libvirt Driver 打开一个写通道,QEMU 打开一个读通道[2]。
Libvirt 的主要功能是进行虚拟机管理、远程机器支持、存储管理、网络接口管理和虚拟NAT和基于路由的网络。
virsh 构建于libvirt 之上,它是一种虚拟shell 。virt-install 可用于从多个操作系统发行版供应新域,virt-clone 可用于复制一个VM为新的VM ,virt-manager 是多用途桌面管理工具,virt-viewer 是安全连接到VM图形控制台的轻量级工具。
构建于libvirt 之上的一种最重要的工具名为VirtIO 。VirtIO VM 管理应用程序旨在管理单个节点上的单个VM 或多个主机上的大量VM。除了可以简化大量主机和VM的管理之外,它还可用于跨平台和架构自动化集群,负载平衡和工作[3]。
2.高校实现服务器虚拟化的优势
服务器虚拟化架构具有灵活多变的组织形式,非常适合于像高校这种频繁更换OS系统平台、机房、教学中心等大规模的、需求多变的应用场景。
2.1提高服务器部署效率和利用率。
部署虚拟化服务器平台之后,若某个系部或教师需要使用服务器进行教学科研或其他应用活动,网管中心管理员在短时间内就可以从虚拟化服务器平台中按照需求划分出满足要求的虚拟服务器以供使用,尽最大能力合理分配服务器资源,当某个服务器不再使用时,管理员可以随时将虚拟机撤销,计算资源立即被释放,然后这部分被释放的计算资源可再次划分为另一台虚拟服务器,供另一个部门使用,避免造成资源浪费。
2.2提高网络教学上机环境统一部署效率。
在典型的网络教学环境中,教师除了授课之外,最大的困难在于为数十台或上百台学生机部署上机环境和经常出现的由于硬件故障导致多个学生无法使用计算机的情况。基于服务器虚拟化后可以使用RDP 、SPICE 等桌面显示协议虚拟桌面环境解决方案,将传统网络教学环境下的学生机转换为瘦客户端,其所有软件环境全部部署在后端数据中心虚拟桌面服务器上,实现快速的实验环境模拟、重建,且使用瘦客户端避免了学生机的硬件损坏,提高了授课中设备的正常使用率。
2.3极强的服务迁移和扩展能力。
在进行服务器应用迁移的时候,只需要将这个包含了操作系统和应用程序的虚拟机文件通过拷贝的方式复制到另外一台服务器上面,如果对虚拟机文件进行复制操作,立刻就可以将一个虚拟机变成两份完全一样的虚拟机,极易部署和迁移。
若需提高虚拟化服务器平台的处理能力,只需要增加更多的物理服务器数量来增强整个虚拟化平台的处理能力,并将一部分应用迁移到其上运行即可,整个过程不会对正在运行的虚拟机产生任何影响。 2.4高可用性和节能环保。
部署虚拟化服务器平台之后,所有的服务器就构建成一个统一的硬件处理平台,任何一台服务器的故障不会对整个系统造成任何影响,运行在其上的虚拟机以及运行在虚拟机上的业务不会因为一台物理服务器或虚拟机的故障而停机,相当于为所有的服务器都构建了高可用的系统,任何一台服务器的故障不会对运行在其上的虚拟机造成影响。
通过整合减少服务器数量,可减少服务器占用机房空间,降低发热量,从而降低在制冷设备方面的投入及散热成本。耗电量的减少及线缆维护工作量的减少,大大降低网管工作量和运营成本。
3.服务器虚拟化的实现过程
选用IBMx3650 服务器,安装基于linux3.2.0 内核的Ubuntu Server 12.04 x86_64 位操作系统,基于KVM对服务器进行虚拟化,设置CPU 、内存、硬盘、网络等硬件环境,安装操作系统及应用,实现完整的服务器虚拟化解决方案。
3.1环境检查及软件安装
KVM是基于CPU 硬件虚拟化基础之上的,在安装KVM 之前必须确认硬件层CPU 是否支持虚拟化技术。使用如下命令进行检测,有输出结果说明CPU 支持虚拟化。
3.2建立虚拟磁盘镜像并安装虚拟机
此步骤和传统安装方式一致。
3.3虚拟网络的配置
默认设置是使用SLIRP 协议的用户模式连接,它通过网络地址转换(NAT) 透过宿主机和外部网络进行通信,虚拟机操作系统内网卡采用内部DHCP 方式获取私有IP 地址与外部网络通讯,但虚拟机不能向外提供服务,也不能与主机进行通信。
为了使外部主机可以直接连接到虚拟服务器上,需要配置网桥(bridge) ,网桥是一个接口,与eth0 不同的是它由多个接口共同构成。网桥使虚拟接口通过物理接口连接到外部网络,对网络中的其他主机来说,虚拟机看起来就像一台普通的服务器主机。
网桥模式是将物理网卡eht0 虚拟成一个虚拟网桥brx 和虚拟网卡tapx ,然后将虚拟网卡tapx 和物理网卡ethx 加入网桥,设置成网桥端口并激活虚拟网卡tapx 。libvirt 每启动一个VM 时,就为这个VM 创建一个tap 设备,称为vnetx ,然后将这块虚拟网卡加入桥设备brx ,网桥IP 设置成原主机IP 地址,这时主机操作系统就可正常通讯。
3.3虚拟机的优化和管理
利用构建于libvirt 之上的虚拟shell 程序virsh 以交互方式使用多个libvirt 功能。首先是要定义libvirt 属性多样化域配置文件。利用该域配置文件修改QEMU 域要使用的一些基本元数据,包括域名、最大内存、初始可用内存以及该域可用的虚拟处理器数量以及上述bridge 网络参数,然后启动新域,使用内的命令列出给定主机上的活动域。
4.结论
虚拟化后随着服务器的数量减少,故障率明显降低,故障修复周期也大幅缩短,保障了教学资源的稳定运行。部署新服务器工作周期的缩短极大地降低部署复杂程度,提高了工作效率。
参考文献:
[1]崔泽永,赵会群.基于KVM 的虚拟化研究及应用[J]. 计算机技术与发展,2011(6):108.
[2]敖青云,蒋文蓉.基于和的虚拟桌面系统的实现与应用[J].计算机应用与软件2012(11):218.
[3]崔泽永.基于的虚拟机调度方法研究.北方工业大学工程硕士论文
[4]徐燕雯.基于KVM 的桌面虚拟化架构设计与实现[D]. 上海交通大学工程硕士专业学位论文,2012,6:28.
[5]Tim Jones M.Libvirt.虚拟化库剖析━━针对简单的Linux 虚拟化的API[EB/OL].http://www.ibm.com/developerworks/cn/ linux/l-libvirt/. Realization of the KVM Based Sever Virtualization EnvironmentLI Bin, HU Yi-feng (Sanmenxia Polytechnic, Sanmenxia 472000, China)