基于Xen的开放式半虚拟化集群Linux实验教学环境建设探索

2013-10-14 10:52谭舜泉
中国现代教育装备 2013年21期
关键词:磁盘虚拟化集群

谭舜泉

深圳大学计算机与软件学院 广东深圳 518060

1 Linux实验教学现状及所存在的问题

为适应Linux快速发展对于技术人才的迫切需求,各高校纷纷开设了与Linux相关的技术课程[1]。但各高校现有与之配套的Linux实验教学环境,由于教学经费投入的限制和实验室条件的制约,大部分存在一些问题[2]。目前与Linux相关的课程,如操作系统、网络管理与工具、Linux内核分析与开发等,很多配套实验涉及以ROOT权限修改操作系统核心模块及配置文档难以恢复的问题。大部分高校的实验室为了管理方便,使用保护卡保护机器中的操作系统,并禁止学生获得系统的ROOT权限,极大地制约了Linux实验教学的开展。作为一种折中解决方法,有些高校鼓励学生在自己的桌面机上安装Linux系统以完成实验。但Linux的安装和配置对于不熟悉Linux的学生来说是很大的挑战。安装和配置中的挫折会极大地打击学生学习Linux的积极性。为解决当前Linux实验教学存在的问题,笔者探索建设一种基于Xen的开放式半虚拟化集群Linux实验教学环境。

2 Linux平台虚拟化技术及Xen简介

虚拟化技术对用户隐藏了真实的计算机硬件,表现出另一个抽象计算平台。通过虚拟化技术,在单个真实服务器上可以运行多个虚拟操作系统,从而更加有效地利用底层的硬件资源。Linux平台上的虚拟化技术可分为以下四大类:

(1)完全虚拟化技术。虚拟机模拟出一个能让客户操作系统独立运行的虚拟硬件平台,完全虚拟化技术不需要修改客户操作系统,但客户操作系统的运行效率较差,不适于大规模高强度的应用。

(2)硬件辅助虚拟化技术。这是一种利用硬件支持实现的能让客户操作系统独立运行的虚拟化技术,与完全虚拟化技术相比,它能提高客户操作系统的运行效率。

(3)半虚拟化技术。虚拟机提供了一个类似于底层硬件平台的软件接口供客户操作系统使用,只有针对这个软件接口定制的客户操作系统才能在虚拟机上运行。基于半虚拟化技术的客户操作系统运行效率相当高,适用于大规模高强度的应用。

(4)操作系统层虚拟化技术。客户操作系统和承载虚拟机的真实服务器共享同一个操作系统核心,能获得接近于在真实硬件环境下的运行效率。但这种技术对于客户操作系统和真实服务器都有严苛的要求,局限性较大。

Linux平台上的完全虚拟化软件包括VMWare Workstation和免费开源的Virtualbox;Linux内核支持的Kvm实现了硬件辅助虚拟化;Xen同时支持硬件辅助虚拟化和半虚拟化技术;Linux平台上的操作系统层虚拟化软件有OpenVZ。

我们采用基于Xen的半虚拟化技术构建开放式集群Linux实验教学环境。Xen是由剑桥大学开发的开放源代码的虚拟软件,通过修改Linux内核,在真实硬件设备之上加入了一个Hypervisor层。真实服务器上的操作系统(称为dom0)以及所有虚拟机上的操作系统(称为domU)都运行在Hypervisor层之上,如图1所示。Xen从2003年发布至今,经历了多个版本的演化,已经非常成熟稳定,得到了IBM,HP,Intel,Red Hat,Oracle等大公司的支持。基于Xen的半虚拟化技术,无需特殊硬件支持,就能实现高性能的虚拟化。Xen虚拟机还可以在不停止工作的情况下,在多个物理主机之间进行动态迁移,这对于实现集群系统的负载均衡,至关重要。

图1 Xen架构体系图

3 构建基于Xen的集群实验教学环境

计算机集群通过一组松散组成的计算机系统连接起来紧密协作完成计算工作。它对外表现为一个单独的高性能服务器,集群系统内部的单个计算机系统称之为节点,通常通过局域网连接。笔者通过把基于Xen的半虚拟化系统组成集群,为学生提供了一个具有高可用性和负载均衡能力的Linux实验教学环境。其拓扑结构如图2所示。

3.1 Xen半虚拟化环境的软硬件支持

Xen半虚拟化环境并不要求CPU支持硬件虚拟化技术,能运行于64位CPU及支持物理地址扩展(PAE)的32位CPU上。为保证Xen虚拟机能应用于多门计算机课程的实验教学,承载Xen虚拟机的真实服务器至少应配置2 G以上的内存和6 G以上的磁盘空间。主流的Linux企业版本,如Redhat Enterprise Linux 5.X和它的免费社区支持版本CentOS 5.X均已包含了支持Xen的内核。为了节省Linux实验教学环境的部署费用,我们选用CentOS 5.X作为承载Xen虚拟机的真实操作系统。Xen虚拟机上的操作系统根据半虚拟化技术的要求,也选用CentOS 5.X。在部署Xen半虚拟化环境之前,须在真实操作系统上先安装Xen及Kernel-xen包。为了能通过命令行及图形界面工具管理Xen虚拟机,一般还同时安装libvirt及virt-manager包。

3.2 部署Xen半虚拟化环境[3]

为使学生使用Linux实验教学环境的学习曲线尽可能平缓,管理员应事先安装配置好虚拟机的操作系统,同时在虚拟机操作系统中为学生提供必需的教学实验软件。很多Linux相关实验,如防火墙配置、Web应用服务器管理等,必须给学生提供ROOT权限。出于安全性的考虑,每个学生分配到的虚拟机ROOT初始密码必须不同。同时针对不同计算机课程的Linux实验环境,其中包含的教学实验软件差别较大。传统的利用一个母本,快速复制生成多个虚拟机副本的部署策略并不适用于构建虚拟集群实验教学环境。我们使用基于Kickstart的Xen虚拟机快速创建策略,仅需事先配置少量安装脚本参数,便可自动批量创建针对每个学生的Xen虚拟机。

3.2.1 创建虚拟机映像文件

Xen可使用真实服务器上的整个物理磁盘分区或单个磁盘文件存放虚拟机的磁盘映像。如采用单个磁盘文件存放虚拟机映像的方式,虚拟机磁盘读写速度相对于使用物理磁盘分区的方式慢。但在开放式的Linux实验教学环境中,经常要对某个学生的Xen虚拟机进行删除、重建和动态迁移操作,基于磁盘文件的映像方式更具备灵活性。在Linux中,虚拟机磁盘映像文件就是一个所有字节均为零的无格式文件,可用dd命令创建。为鼓励学生充分利用虚拟Linux实验教学环境,我们为每个学生分配20 G的虚拟磁盘空间。但在实践中发现,学生对虚拟磁盘空间的利用率只有30%左右,因此采用动态增长的虚拟磁盘分配策略能够更合理地利用真实服务器的磁盘空间。以下命令创建了一个初始大小为1 M,最大容量为20 G的虚拟机磁盘映像文件2007170019.img:

3.2.2 基于Kickstart的虚拟机快速创建

Kickstart是CentOS 5.X提供的一种批量自动化安装程序。通过配置Kickstart安装脚本参数,能省略传统操作系统安装中的人机交互过程,大幅缩短了安装时间。针对每个学生定制的Kickstart安装脚本如下:

在以上Kickstart脚本中,关键配置如下:

(1)以静态方式指定了虚拟机使用对外不可见的内部IP,学生不能通过内部IP直接访问虚拟机。我们基于静态内部IP实现Linux实验教学环境的负载均衡代理。

(2)为每个学生设置了不同的ROOT初始密码。

(3)在虚拟机映像文件上划分一个256 M的SWAP分区,把剩余空间都划分为一个ext3分区,挂靠在根目录下。刚接触Linux的学生往往对于Linux不同于Windows的分区策略感到迷惑,使用单个分区能使学生更易上手。

基于Kickstart的虚拟机创建过程一般只需3~5分钟,安装完毕后,还需为每个学生的虚拟机设定配置文件,每个虚拟机对应一个配置文件和一个磁盘映像文件。配置文件和磁盘映像文件应采用统一的命名规范,在此我们使用学生的学号命名他所管理的虚拟机相关文件。以下是某个学生的虚拟机配置文件:

在这个配置文件中,指明了虚拟机名字为2007170019;虚拟机的磁盘映像文件为2007170019.img;虚拟机拥有256 M虚拟内存,1个虚拟CPU,以桥接方式联网。

3.3 防火墙/负载均衡代理配置

本实验教学环境的开放性决定了它要面对因特网上存在的各种安全威胁,如黑客入侵、蠕虫病毒、DDOS攻击等。同时作为一个计算机集群系统,对外应只提供一个入口,并表现为一台单独的服务器。我们在实验教学环境的内部和外部之间加入了一个运行CentOS 5.X的真实服务器充当防火墙和可实现负载均衡的代理。代理服务器的硬件配置较低,上面只运行Linux核心提供的IPTABLES包过滤软件。通过定义IPTABLES包过滤规则,能抛弃试图通过防火墙进入实验教学环境内部的存在安全威胁的TCP,UDP,ICMP包。通过定义IPTABLES的网络地址转换规则,为实验教学环境内部的每台Xen虚拟机提供目标NAT(DNAT)代理。如前文所述,学生不能通过内部IP直接访问虚拟机。在通过DNAT代理,建立了防火墙上某个端口和虚拟机上对应端口之间的端口映射以后,学生可以直接通过代理服务器上的对应端口,访问虚拟机所提供的服务。以下IPTABLES规则在代理服务器上为IP地址为192.168.153.243的Xen虚拟机开通了5901端口代理。

4 管理和使用基于Xen的集群实验教学环境

4.1 实验教学环境的管理

管理员既可在实验教学环境内部,利用其中一台真实服务器操作系统的图形界面进行管理,也可在实验教学环境外部,利用防火墙打开的特定映射端口进行远程命令行界面管理。为了保证系统的安全性,管理命令必须通过SSH加密隧道传输。管理员的任务包括:

(1)根据课程的需要,为学生分配虚拟机账号,创建虚拟机;销毁无用的虚拟机,以节省系统开销。

(2)根据需要启动或关闭某一课程组的虚拟机;为某个课程组所需要的特定服务打开代理服务器至虚拟机的DNAT端口映射。

(3)实时监控集群实验教学环境中每台真实服务器的资源使用情况。在需要时,通过虚拟机动态迁移实现负载均衡。在基于Xen的半虚拟化集群Linux实验教学环境中,每台真实服务器上承载着多台分配给学生使用的Xen虚拟机。课程规划的变动、实验安排的调整、临时增加实验教学任务等种种不可预知的情况都会导致真实服务器间出现忙闲不均的情况。有些真实服务器超负荷运转,而另外一些真实服务器却处于空闲状态。此时,管理员应通过虚拟机动态迁移技术,把超负荷运转的真实服务器上的部分Xen虚拟机,迁移到处于空闲状态的真实服务器上。基于Xen的虚拟机动态迁移技术,能够在不中断Xen虚拟机运行的前提下,以对用户透明形式把源真实服务器上的虚拟机磁盘映像和相关的内存页面传输到目标真实服务器上去,保证动态迁移过程不影响在虚拟机上进行的实验教学活动。

4.2 基于Web的教师操作界面

为了保证不熟悉本实验教学环境的教师也能够执行一些和授课内容相关的管理工作。我们提供了基于Web的教师操作界面。该教师操作界面基于开源软件HyperVM和Kloxo搭建,允许教师通过浏览器,根据课程的需要远程管理Linux实验教学环境。HyperVM的工作界面如图3所示。通过HyperVM和Kloxo,教师不仅能够管理Xen虚拟机、监控学生在虚拟机上的活动,还能够配置虚拟机上的HTTP,FTP和MAIL服务。

图3 HyperVM工作界面

4.3 基于VNC的学生操作界面

图4 学生通过VNC远程登录Xen虚拟机

VNC(Virtual Network Computing)是一种跨平台的图形界面远程控制工具。学生可通过VNC远程登录Linux系统的图形界面。本实验教学环境为每一台Xen虚拟机在代理服务器上开启一个唯一的VNC服务映射端口。如图4所示,学生通过管理员或授课教师获得VNC服务映射端口后,即可通过VNC客户端软件远程登录Xen虚拟机进行各项实验。断开VNC远程连接后虚拟机依然在真实服务器上运行,学生再次登录后即可继续实验。可以通过启动多个VNC客户端,实现一台远程机器同时访问多台Xen虚拟机,学生之间可以通过这种方式实现小组协同开发。教师需要指导学生实验时,也可以直接使用学生账号以VNC方式登录学生的Xen虚拟机,由于同一个账号的不同VNC连接共享对Xen虚拟机的控制权,通过这种方式教师可以实现与学生的实时交互。

5 结束语

通过使用基于Xen的半虚拟化技术,我们构建了开放式的集群Linux实验教学环境,在有限的硬件设备基础上,根据课程开展和学生实验的需要,模拟出了多台Linux虚拟机。通过基于IPTABLES的代理技术,实现了虚拟机集群的统一接口访问,在后台基于Xen虚拟机动态迁移技术实现了集群系统的负载均衡。教师可通过基于Web的操作界面进行管理,学生可通过基于VNC的图形界面进行实验及与教师进行实时交互。通过基于Xen的开放式集群Linux实验教学环境,极大地提高了现有硬件设备的利用率;学生和教师不需要单独配置每一台Linux机器,节省了学生和教师大量的重复劳动;学生可远程访问虚拟机,实验不再受时空的限制,提高了学生学习的积极性,促进了学生动手能力和创新能力的培养。由此看出,在计算机实践教学中推广基于Xen的半虚拟化技术应用具有非常积极的现实意义。

[1]梁正平,纪震.高校Linux课程体系建设研究与实践[J].计算机教育,2009(5):87-90.

[2]应毅.针对实际应用的Linux实验教学研究[J].计算机教育,2010(20):139-142.

[3]Redhat. Red Hat Enterprise Linux 5 Virtualization Guide[EB/OL].http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5/html/Virtualization/index.html.

猜你喜欢
磁盘虚拟化集群
叶腊石聚合成型及其旋转磁盘的制作方法
它的好 它的坏 详解动态磁盘
解决Windows磁盘签名冲突
海上小型无人机集群的反制装备需求与应对之策研究
基于OpenStack虚拟化网络管理平台的设计与实现
对基于Docker的虚拟化技术的几点探讨
一种无人机集群发射回收装置的控制系统设计
Windows系统下动态磁盘卷的分析与研究
Python与Spark集群在收费数据分析中的应用
浅析虚拟化技术的安全保障