基于虚拟化技术的网络平台设计与实现
2015-11-25赵凯
赵 凯
北京电子科技职业学院 北京 100016
基于虚拟化技术的网络平台设计与实现
赵 凯
北京电子科技职业学院 北京 100016
互联网经过几十年的发展,给人们的生活带来了意想不到的改变,出现了很多新的应用和需求,同时互联网及其体系结构在可扩展性、安全性、可移动性、能源消耗等方面的问题也越来越突出,网络虚拟化可以有效解决当前互联网及其体系结构中存在的问题,主要讨论了在虚拟化环境体系结构、资源管理方式并使用虚拟化技术构建网络平台,提高了服务器的稳定性和利用率,降低了数据维护的成本和复杂度。
虚拟化;网络平台;资源管理
虚拟化技术诞生于20世纪60年代,随着虚拟化技术的迅猛发展,计算机硬件性能不断提升,硬件对虚拟化技术支持的逐步成熟和完善,使得把日常工作环境迁移到虚拟化平台之上成为可能。虚拟化技术是一种对计算机资源进行抽象模拟的技术,通过获取关键硬件的控制权,模拟出全部或部分硬件资源,如CPU、内存、I/O设备等,这些虚拟硬件资源在使用上与真实设备没什么区别,虚拟机的实现与运行对于上层应用软件来说是透明的。[1]网络平台的虚拟化就是利用了这种思想,通过对物理资源的划分和抽象,产生多个虚拟机,并使用各个虚拟系统之间实现有效隔离,即一个虚拟系统的崩溃不会影响到其他系统的正常运行。虚拟化的网络平台具有较好的封装性(虚拟机的克隆、挂起等)、多实例性(一台计算机上运行多个虚拟机,实现资源的调试优化)、隔离性(虚拟系统相对独立,互不影响)、硬件无关性(虚拟化是资源的逻辑表示,不受物理限制的约束)优势并拥有特权功能,虚拟化层(即监视层)处于客户操作系统的下层,具有更高的特权,入侵检测及病毒检测就是在虚拟化层的典型应用,由于客户操作系统无法绕过该层,客户机中的病毒也很难攻击到物理机,从而保证了设备的安全性。[2]目前,典型的虚拟机软件有Vmware公司产品、Microsoft公司产品及基于GPL开源软件(Xen,KVM),本文中使用KVM构建虚拟化网络平台。
1 KVM结构及原理
KVM是Kernel-based Virtual Machine的简称,是基于X86硬件的虚拟化技术,运行要求Intel VT-x或AMD SVM的支持,从Linux-2.6.20开始被包含在Linux内核中。[3]KVM基本结构有两部分,一部分是KVM Driver,另一部分是Qemu模块。其中,KVM Driver负责虚拟机的创建、虚拟内存的管理与分配、虚拟CPU寄存器的读写及虚拟CPU的运行等;Qemu主要用于I/O的虚拟化及相关访问途径的处理,KVM的结构如图1所示。
图1
KVM在Linux原有模式基础上增加了客户模式,客户模式拥有自己的内核模式和用户模式,在虚拟机运行时,3种模式的分工如下。
客户模式:执行非I/O的客户代码,客户机系统运行在此模式下。
用户模式:执行客户的I/O代码,Qemu运行在此模式下。
内核模式:实现到客户模式的切换,KVM Driver工作在此模式下,KVM Driver在整个KVM中还可以起到虚拟机监控器的作用。
图1中的/dev/kvm是在内核中创建的标准字符设备,通过ioctl系统调用访问内核完成虚拟机的创建与初始化;KVM_vm是创建的指向特定虚拟机实例的文件描述符,通过这个文件描述符对特定虚拟机进行访问控制;KVM_vcpu指向为虚拟机创建的虚拟处理器的文件描述符,通过该描述符使用ioctl系统调用设置和调度虚拟处理器的运行。
由于KVM采用全虚拟化技术[4],客户机不需要修改就可以运行,工作过程如下:用户模式的Qemu利用接口libkvm通过ioctl系统调用进入内核模式,KVM Driver为虚拟机创建虚拟内存和虚拟CPU后执行VMLAUCH指令进入客户模式。客户系统装载时,如发生I/O事件或信号队列中有信号到达,进入用户模式处理,如出现外部中断等事件,则暂停客户机系统的执行,退出客户模式进行必要的处理后再重新进入客户模式。
2 虚拟化网络平台的设计与实现
2.1 虚拟化网络平台的设计
随着信息技术的不断发展和革新,Web应用、邮件应用及第三方业务应用呈爆炸式增长。以高职院校为例,社会上对复合型人才要求越来越高,为了满足这个需要,高职院校在信息化设备上进行了大量的投入,建立起了一定规模的实验实训场所,并购置了大量的实验设备,如PC机、小型服务器等。这对于提升教学的质量和稳定教学秩序方面起到了非常大的作用,在实践教学环节大量投入的过程中,也产生了一些问题,如随着设备数量的增加,存在着资源浪费问题、设备老化问题、服务器利用率不高、资源分配不均等,这些都对日常教学运行产生了不良的影响。使用虚拟化技术可以有效地解决上述问题,达到节约资源、提高资源使用效率的目的。
由于大量的设备已经投入使用,所以在设计虚拟化网络平台时要充分考虑现有设备向虚拟平台中迁移的问题,虚拟网络平台的结构应便于主机的迁移;虚拟平台中的数据应统一存储和管理,便于对数据的维护;充分考虑资源分配的动态平衡及系统安全问题等。现有网络环境见表1。
表1
Kvm-server为虚拟网络平台,需要将已经存在的客户机Vg1、Vg2及服务器manager迁移到新建的虚拟网络平台中,由于KVM虚拟化技术已经被内置到Linux中,与Linux系统同属于开源代码,具有天然的稳定性及安全性,与Linux系统结合非常紧密,使用KVM技术搭建虚拟化网络平台是很好的选择。
2.2 部署虚拟化网络平台
2.2.1 安装虚拟化系统平台
KVM自Linux2.6.20之后就被集成到了Linux系统之中,它使用Linux自身的调度器进行管理,相对于Xen技术,其核心源码较少,KVM是目前学术界主流的VMM之一。由于KVM技术需要硬件的支持,所以在安装虚拟化网络平台之前要先检测系统的环境,看CPU是否支持KVM,使用命令如下:[root@localhost~]#grep -E -o ‘vmx|svm’ /proc/ cpuinfo,如显示信息为“vmx”,说明该机的CPU支持KVM技术,可以进行安装。安装方法为[root@ localhost~]#yum install kvm kmod-kvm qemu kvmqemu-img virt-viewer virt-manager,系统会显示安装过程及安装成功的提示。为保险,安装完成后可以再使用[root@localhost 桌面]# lsmod | grep kvm 命令检查一下,如出现“kvmxxxxxx x ”说明KVM安装成功。
2.2.2 配置虚拟网络环境
在KVM中运行的虚拟机默认采用NAT方式进行连接,无法与外界进行通讯,但可以与同台KVM下的其他虚拟机通讯,为了使虚拟机能与其他网络主机进行通讯,需要将网卡模式由NAT改为桥接方式。操作过程为先使用“yum install bridgeutils tunctl”命令安装桥接工具,安装成功后,使用“cp ifcfg-eth0 ifcfg-br0”命令将原有网卡文件复制为网桥文件,在原来的网卡配置文件中增加“BRIDGE=br0”,修改网桥配置文件,将DEVICE后面的值改为“br0”,类型设置为“bridge”,具体内容如下:
文件配置成功后,需要执行“service network restart”命令重新启动网络服务进程,以使配置生效,如开启了防火墙,需要使用“iptables -I FORWARD -m physdev -physdev-is-bridge -j ACCEPT”放行,配置完成后,可以使用“brctl show”显示虚拟网络的情况。
2.2.3 配置KVM的存储环境
本文使用存储池加LVM的方式解决KVM中虚拟机的存储问题,通过在宿主机上创建存储池,可以简化KVM存储设备的管理,实现存储空间的预留分配。使用LVM技术可以把所有存储放到一个卷组中,该卷组是物理磁盘设备的抽象,所以如果超出可用磁盘空间最大值,可向卷组中添加新的设备,从而极大简化了增加存储空间的过程,使得存储空间分配更加灵活,增加、删除存储操作更加容易。
KVM创建的存储池可以理解为一种映射关系,即将某一块挂接至宿主机上的存储空间形成可被KVM使用的逻辑存储池,以方便虚拟机的管理,默认情况下,KVM将这些存储池的配置文件存放于/etc/libvirt/storage中,KVM的存储池配置文件以“.xml”的形式存在,可以使用virsh pool命令查看、创建、激活、注册、删除存储池,本文中的存储池名为storagepool.img;存储池创建成功后,为每个虚拟机创建逻辑卷,作为虚拟主机的硬盘。以服务器“manager”为例,为其创建容量为100 G,初始分配10 G,文件格式为qcow2的存储空间,逻辑卷的创建方法为virsh vol-create-as —pool manager_pool —name manager.img —capacity 100 G —allocation 10 G —format qcow2,虚拟主机VG1和VG2的创建方法与manager相同,不再重复。
2.2.4 虚拟网络平台主机迁移
迁移技术分为静态迁移和动态迁移两种,静态迁移是指虚拟机关机的情况下从一台物理机迁移到另一台物理机,只需要将原虚拟机镜像和对应的配置文件迁移到另一台物理机上就可以了。静态迁移技术相对简单,但迁移过程中,被迁移的虚拟主机必须停止运行。动态迁移也称为在线迁移,即保证虚拟机上服务正常运行的同时,将一个虚拟机系统从一个物理主机移动到另一个物理主机的过程,该过程不会对最终用户造成明显的影响,迁移过程对用户而言是透明的[5],动态迁移适应于对虚拟机服务可用性要求高的场合。本处使用KVM动态迁移技术实现manager,Vg1,Vg2的动态迁移。以迁移manager为例,实现方法如下。第一步,打开虚拟机管理器,方法是在命令行中输入“virt-manager”或单击“应用程序→管理工具→虚拟系统管理器”。第二步,右击“localhost (QEMU)”→“Details”,在新弹出的界面中选择“存储”选项卡。第三步,点击左下角的添加符号,添加存储池,并选择存储池类型,选择存储池路径→“完成”。第四步,选中刚创建的存储池,点击“新建卷”,输入存储卷名称及空间容量即可。第五步,点击虚拟系统管理器中的“创建新虚拟机”,根据向导选择系统参数,存储设备选择刚创建的逻辑卷。第六步,在虚拟系统管理器选择“文件”菜单中的“添加连接”,选择远程主机,主机名为“192.168.1.23”,点击“连接”。第七步,在虚拟系统管理器中右击刚安装好的系统→“迁移”,在“连接性”处输入“192.168.1.23”,点击“迁移”,迁移工作完成,Vg1和Vg2的操作方法与manager相同,此处不再说明。
3 虚拟网络平台性能分析
将Vg1,Vg2,manager部署到虚拟网络平台中,使用virsh start 命令激活,均成功启动,说明该网络平台的部署是成功的。通过虚拟化平台的运行,将各个相对独立的主机整合到一个虚拟网络平台上,大大提高了服务器的资源利用率,降低了维护和管理的成本。将上述内容部署到一台CPU型号为corei3的PC机上,Linux可模拟出4个CPU,一般情况下, CPU的使用率在5%~30%左右,内存使用率为30%左右,访问高峰时CPU的利用率可达到80%以上,网络和存储I/O的使用率达到物理设备的85%以上。由此可以看出,在虚拟平台运行过程中,整个系统受到物理主机的制约较大,在物理主机方面,CPU,RAM,数据存储及I/O访问还存在提升空间,Linux系统支持多网卡的绑定,可以在系统中增加网卡,将多块网卡绑定形成一张逻辑网卡,实现链路的冗余及流量的负载均衡,通过改善硬件环境,可以对虚拟网络平台起到一定的优化作用。
4 结束语
随着网络技术的发展和完善,虚拟化的实现方法也是多种多样,数据的可靠性、安全性、存储容量和管理方法也有越来越多的解决方案,本文使用Linux系统,采用主流的KVM虚拟化技术搭建虚拟网络平台,对虚拟网络平台的网络环境、存储环境及主机迁移等问题进行了探讨,较大的提升了主机的利用率。基于网络的虚拟化技术作为未来的发展方向,受到了更多人的关注,也必将给人们的生活带来更大的改变。
[1]虚拟化技术基础[EB/OL].http://blog.chinaunix.net/ u3/110913/showart_2185421.html.
[2]KVM 开源项目[EB/OL].http://www.Linux-kvm.org/ page/Main_Page.
[3]JinHai, LiaoXiaofei. Virtualization Technology for Computing System[J].China Basic Science,2008,10(6):12.
[4]Zhang Y.virtualization Technology for Trustworthy Network Research[J].Chinese Journal of Computers,2009,32(3):417-423.
[5]The Xensource Company[EB/OL]. http://www.Xensource. com/, 2011.
Design and Implementation of Network Platform Based on Virtualization Technology
Zhao Kai
Beijing Polytechnic, Beijing, 100016, China
After decades of development, bring the beat all changes to people's life, there are many new applications and requirements, at the same time, the Internet and its architecture in scalability, security, mobility, energy consumption and other issues are also increasingly prominent. Network virtualization can effectively solve the existing problems in the Internet and its system structure, this paper mainly discussed in the virtual environment system structure, resource management and the use of virtualization technology to construct network platform, improve the stability of the server and utilization rate, reduce the cost and complexity of the data maintenance
virtualization; network platform; resource management
2015-07-07
赵凯,硕士,副教授。