帮助中心 >  技术知识库 >  云服务器 >  服务器教程 >  Linux虚拟化KVM基础介绍、虚机管理与虚拟网络配置

Linux虚拟化KVM基础介绍、虚机管理与虚拟网络配置

2016-11-24 01:06:33 8854

1.KVM虚拟化

1.1.虚拟化介绍

虚拟化技术指通过技术手段,将物理资源虚拟化成多个独立运行的逻辑资源,以服务器计算资源虚拟化为例,可以通过虚拟化技术,将一台物理服务器虚拟成多个独立运行、不相互干扰的虚拟主机。

虚拟化层(Hypervisor)通常是以内核驱动的形式提供,它运行于操作系统之上,在虚拟化层之上虚拟出来一个个虚拟主机,而虚拟主机多数以操作系统进程的形式存在,而针对虚拟主机的命令请求,虚拟化层或调用操作系统命令进行解释执行,或透过操作系统直接操作硬件芯片进行命令执行。

典型的虚拟化工作层次如下图所示。

Linux虚拟化KVM基础介绍、虚机管理与虚拟网络配置

1虚拟化工作层次

虚拟化有多种分类,包括全虚拟化、半虚拟化、操作系统虚拟化等,不同的虚拟化原理上略有差异,但本质上是相似的,这里以全虚拟化为例。

全虚拟化就是上面介绍的在操作系统和硬件之间存在一个虚拟化层,由虚拟化层完整的模拟虚拟主机运行环境。

典型的全虚拟化包括VMware、IBM zSeries等,本文所讲解的KVM也被认为是典型的全虚拟化技术。

1.2.KVM简介

KVM从提出到应用时间并不算长,但是由于主流厂商的支持,以及KVM自身开源的特性,使得大量用户开始熟悉并使用这一虚拟化技术?

从使用上讲KVM运行于Linux操作系统这上,但是支持linux、windows等虚拟主机的制备与运行,在服务器虚拟化应用方面,可面向大型IDC数据中心、企业级数据中心提供稳定的虚拟化支撑技术;在桌面虚拟化方面,可面向各类企事业单位、实验室、教学环境提供稳定的虚拟桌面解决方案。

1.3.KVM主要特性

KVM在内存、存储、驱动设备、性能等方面有比较好的特性,下面简述其这些特性:

一、内存管理

KVM继承了Linux的内存管理功能,其虚拟机内存管理相当于Linux 进程中内存管理,即可以在内存区域内以大页面形式进行高性能交换,也可以磁盘文件的形式进行内存扩展。

KVM 支持来CPU芯片厂商最新的内存虚拟化功能,支持 Intel 的扩展页面表 (EPT) 和 AMD 的快速虚拟化索引 (RVI),以实现更低的 CPU 利用率和更高的吞吐量。此外通过内存页面共享技术,可以实现更高效的内存管理,这些技术名为内核同页合并 (KernelSame-page Merging, KSM)。KSM 扫描每个虚拟机的内存,如果虚拟机拥有相同的内存页面,KSM 将这些页面合并?一个在虚拟机之间共享的页面,仅存储一个副本。如果一个来宾尝试更改这个共享页面,它将得到自己的专用副本。

?、存储管理

KVM 可使用多种存储协议来存储虚拟机镜像,如:本地磁盘(IDE、SCSI与SATA)、NAS、NFS、SAMBA/CIFS、iSCSI、FC SAN。

KVM 支持全局文件系统 (GFS2) 等共享文件系统上的虚拟机镜像,以允许虚拟机镜像在多个宿主之间共享或使用逻辑卷共享。虚拟主?磁盘镜像支持瘦配置,支持通过仅在虚拟机需要时分配存储空间,而不是提前分配整个存储空间,以节约存储空间。

KVM 的原生磁盘格式为 QCOW2,它多级快照、压缩?加密。

三、迁移管理

KVM 支持冷迁移与热迁移,特别是热迁移可使虚拟主机在不同的物理宿主之间在线转移而不中断服务。热迁移对用户是透明的。

四、设备驱动程序

KVM 支持混合虚拟化,允许虚拟机使用优化的 I/O 接口而不使用模拟的设备,以提供网络与块设备的I/O性能。

KVM 支持半虚拟化驱动要求采用IBM 和 Red Hat 联合 Linux 社区开发的VirtIO标准,它是一个与虚拟机管理程序独立的、构建设备驱动程序的接口,允许为多个虚拟机管理程序使用一组相同的设备驱动程序,能够实现更出色的虚拟主机互操作性。

五、性能和可伸缩性

KVM有极强的性能和可伸缩性,单虚拟主机最多支持16 个虚拟 CPU 、 256GB 内存,可运行于2565个特理CPU核、1TB以上内存的物理主机中。

2.KVM部署与安装

2.1.软硬件环境

常规的x86服务器(32位或64位),要求服务器的CPU芯片或支持AMD-V或支持Intel-VT等硬件虚拟化技术。

[root@kvm /]# cat /proc/cpuinfo | grep 'vmx smx' | less

flags : fpu vme de pse tscmsr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr ssesse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebsbts rep_good xtopology nonstop_tsc aperfmperf pni pclmulqdq dtes64 monitords_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt aeslahf_lm ida arat tpr_shadow vnmi flexpriority ept vpid

KVM需要运行于Linux操作系统环境下,通常宿主机器是64位,KVM上面的虚拟主机可以是64位也可以是32位,如果宿主机器是32位,KVM上面的虚拟主机只能是32位。

2.2.安装KVM及相关软件

在Linux下通过yum命令可自动下载并安装 KVM,操作如下:

[root@kvm /]#yum –y install kvm kmod-kvm qemukvm-qemu-img

安装相关联软件包,如virt-viewer、virt-manager、libvirt、libvirt-python、python-virtinst等,命令如下:

[root@kvm /]# yum install virt-viewer virt-managerlibvirt libvirt-python python-virtinst

2.3.虚拟网络

KVM自身没有虚拟网络的设置功能,主要依赖于Linux自带的网络工具来实现虚拟网络搭建,常用的虚拟网络是网桥、VLAN,常用的命令包括:brctl、ifconfig、vconfig、tunctl、route等。

情况下的multi-host配置模式。

2.3.1.brctl

brctl是一个Linux下的网桥专用工具,常见用法如下:

命令原型示例说明
brctl showbrctl show显示已有网桥
brctl addbr <bridge>brctl addbr br0增加网桥br0
brctl delbr <bridge>brctl delbr br0删除网桥br0
brctl addif <bridge> <device>brctl addif br0 eth0将接口eth0接到网桥br0
brctl delif <bridge> <device>brctl delif br0 eth0从网桥上删除一个接口

2.3.2.桥接操作

常规的网桥操作是先查看物理网卡,去除网卡上已有的IP地址,建立网桥,将网桥绑定物理网卡,配置网桥的IP地址,命令如下所示:

[root@kvm /]# ifconfig -a |grep eth

eth0 Linkencap:Ethernet HWaddr 90:fb:a6:14:cd:42

[root@kvm /]# brctl addbr br0

[root@kvm /]#brctl addif br0 eth0

[root@kvm /]# ifconfig eth0 0.0.0.0

[root@kvm /]# ifconfig br0 192.168.1.51 up

此时查看网络设备,可以发现多了一台网桥:

[root@kvm /]# ifconfig -a |grep Ethernet

br0 Linkencap:Ethernet HWaddr 2a:24:d3:aa:99:e7

eth0 Linkencap:Ethernet HWaddr 90:fb:a6:14:cd:42

另:如果想删除网桥可以猜用如下办法,即先停用网桥再执行删除操作:

[root@kvm /]# brctl delbr br0

bridge br0 is still up; can't delete it

[root@kvm /]# ifconfig br0 down

[root@kvm /]# brctl delbr br0

为了方便用户操作,这里给出一个开机脚本,用于配置网桥:

[root@kvm /]#vi br0.sh

#!/bin/bash

# change eth0 to your network interface(eg. eth1)

ifconfig lo 127.0.0.1 up

if [ ! -z "`ifconfig -a | grep br0`" ]; then

ifconfig br0down

brctl delif br0eth0

brctl delbr br0

fi

brctl addbr br0

brctl addif br0 eth0

ifconfig eth0 0.0.0.0 up

ifconfig br0 192.168.1.51 up

route add default gw 192.168.1.1

exit 0

当然也可以写到网卡的配置文件中,在/etc/sysconfig/network-scripts/目录下建立ifcfg-br0(br0为网桥接口名称),配置网桥0:

auto lo

iface lo inet loopback

auto br0

iface br0 inet static

address 192.168.1.51

netmask 255.255.255.0

gateway 192.168.1.1

bridge_ports eth0

2.4.虚拟主机

2.4.1.kvm常用命令

kvm是虚拟主机创建与管理命令,其基本参数如下:

参数示例说明
-hda-hda /data/windows.img指定windows.img作为硬盘镜像
-cdrom-hda /data/windows.iso指定windows.iso作为光盘镜像
-boot-boot c从硬件启动
-boot d从光盘启动
-m-m 512分配512M内存给虚拟系统
-vnc-vnc :0作为vnc服务器
-cpu-cpu ?列出支持的CPU
-cpu core2duo指定CPU为core2duo
-smp-smp 2指定虚拟机有2个CPU
-net-net nic为虚拟机网卡(默认为tap0)
-net tap系统分配tap设备(默认为tap0)
-net nic -net tap将虚拟机的网卡eth0连接真机里的tap0

2.4.2.安装操作系统

通过kvm-img生成镜像文件:

[root@kvm /]# kvm-img create windows2003-x86.img 25G -f"vmdk"

通过kvm命令安装系统:

[root@kvm /]# kvm -boot d -m 512-hda ~/kvm/windows2003-x86.img -cdrom~/software/wzmb2003.iso

运行系统:

[root@kvm /]#qemu- kvm -boot c -m 512 -hda~/kvm/windows2003-x86.img -net nic -net tap

可以发现多了一个网络设备tap0,这是系统自动创建的。

[root@kvm /]# ifconfig -a |grep Ethernet

br0 Linkencap:Ethernet HWaddr 2a:24:d3:aa:99:e7

eth0 Linkencap:Ethernet HWaddr 90:fb:a6:14:cd:42

tap0 Linkencap:Ethernet HWaddr 2a:24:d3:aa:99:e7

在计算机网络中,TUN与TAP是操作系统内核中的虚拟网络设备。不同于普通靠硬件网路板卡实现的设备,这些虚拟的网络设备全部用软件实?,并向运行与操作系统上的软件提供与硬件的网络设备完全相同的功能。TAP 等同于一个以太网设备,它操作第二层数据包如以太网数据帧。TUN模拟了网络层设备,操作第三层数据包比如IP数据封包。

操作系统通过TUN/TAP设备向绑定该设备的用户空间的程序发送数据,反之,用户空间的程序也可以像操作硬件网络设备那样,通过TNU/TAP设备发送数据。在后种情况下,TUN/TAP设备向操作系统的网络栈投递(或“注入”)数据包,从而模拟从外部接受数据的过程。

2.4.3.远程登录

如果虚拟机是linux,那么就用ssh;如果是windows,那么就用rdesktop。

[root@kvm /]# rdesktop -uusername -p passwd 192.168.1.52 -f &

用Ctrl-Alt-Enter可从全屏中切回来。


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: