虚拟化技术案例818.docx

上传人:b****7 文档编号:11520919 上传时间:2023-03-02 格式:DOCX 页数:24 大小:1.67MB
下载 相关 举报
虚拟化技术案例818.docx_第1页
第1页 / 共24页
虚拟化技术案例818.docx_第2页
第2页 / 共24页
虚拟化技术案例818.docx_第3页
第3页 / 共24页
虚拟化技术案例818.docx_第4页
第4页 / 共24页
虚拟化技术案例818.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

虚拟化技术案例818.docx

《虚拟化技术案例818.docx》由会员分享,可在线阅读,更多相关《虚拟化技术案例818.docx(24页珍藏版)》请在冰豆网上搜索。

虚拟化技术案例818.docx

虚拟化技术案例818

虚拟化技术

案例一、KVM日常管理

一、实验目的

(1)掌握通过VIRSH对虚拟机进行日常管理的方式。

(2)掌握VNC的使用方式。

(3)理解虚拟机进行CPU扩容,内存扩容及优化的概念。

二、实验原理

可以使用多种方式创建虚拟机,例如qemu,virt-manager等。

本例使用virt-install创建Ubuntu14.04虚拟机demo。

以demo虚拟机为例,通过virsh工具进行CPU扩容,内存扩容,网络桥接,内存优化,磁盘I/O优化测试等,通过这些方式,让读者掌握KVM虚拟机的日常管理操作。

三、实验环境

宿主机操作系统:

Ubuntu14.04版本,4.2.0-27-generic内核,QEMU2.0.0版本,IP地址192.168.70.204。

虚拟机操作系统:

Ubuntu14.04版本。

四、实验内容及步骤

1、VIRSH创建和管理虚拟机

(1)在宿主机上,创建虚拟磁盘,-f指定格式,代码如下所示:

root@xjy-pc:

/home/kvm#qemu-imgcreate-fraw/home/kvm/ubuntu.raw10G

Formatting'/home/kvm/ubuntu.raw',fmt=rawsize=10737418240

(2)使用virt-install(读者也可以通过其他方式创建虚拟机),通过步骤一中创建的虚拟磁盘,创建一台Ubuntu虚拟机,命名为demo,指定VNC端口号。

如下所示:

root@xjy-pc:

/home/kvm#virt-install--namedemo--virt-typekvm--ram1024--cdrom/home/kvm/iso/ubuntu-14.04-desktop-amd64.iso--disk/home/kvm/ubuntu.raw--networknetwork=default--graphicsvnc,listen=0.0.0.0--noautoconsole

Startinginstall...

Creatingdomain...|0B00:

00

Domaininstallationstillinprogress.Youcanreconnecttotheconsoletocompletetheinstallationprocess.

(3)在另外一台Windows操作系统中,打开一个VNC客户端,输入服务器IP地址和VNC端口号(这里是192.168.70.204:

5900),连接建立的KVM虚拟机,如图1所示。

图1VNC连接KVM虚拟机

(4)将步骤二中的Ubuntu虚拟机逐步进行安装,图2为安装过程界面,安装完成后,图3所示为Ubuntu虚拟机启动后界面。

图2Ubuntu14.04的安装界面

图3Ubuntu14.04虚拟机

(5)可以使用virshlist查看已经启动的虚拟机,如果未启动,使用命令“virshstartdemo”进行启动,代码如下所示:

root@xjy-pc:

/etc/libvirt/qemu#virshlist--all

IdNameState

----------------------------------------------------

-demoshutoff

root@xjy-pc:

/etc/libvirt/qemu#virshstartdemo

Domaindemostarted

root@xjy-pc:

/etc/libvirt/qemu#virshlist--all

IdNameState

----------------------------------------------------

12demorunning

(6)可以使用“virshshutdowndemo”关闭demo虚拟机,使用“virshdestroydemo”强制关闭demo虚拟机电源。

如下所示:

root@xjy-pc:

/etc/libvirt/qemu#virshlist--all

IdNameState

----------------------------------------------------

12demorunning

root@xjy-pc:

/etc/libvirt/qemu#virshdestroydemo

Domaindemodestroyed

root@xjy-pc:

/etc/libvirt/qemu#virshlist--all

IdNameState

----------------------------------------------------

-demoshutoff

(7)KVM虚拟机配置文件默认位置为:

/etc/libvirt/qemu/,可以通过配置文件定义并启动虚拟机,命令为:

virshcreate/etc/libvirt/qemu/demo.xml。

(8)通过virsh将内存中运行的虚拟机导出至虚拟机配置文件,命令为:

#virshdumpxmldemo>/etc/libvirt/qemu/demo2.xml,如图4所示。

图4将虚拟机导出xml文件

(9)通过“virsheditdemo”可以编辑KVM虚拟机配置文件,virshedit将调用vi命令编辑/etc/libvirt/qemu/demo.xml配置文件。

也可以直接通过vi命令进行编辑,修改,保存。

2、CPU扩容

(1)使用“virshedit”编辑虚拟机,为了实现CPU的热添加,就需要更改CPU的最大值,当然热添加值不能超过最大值。

修改demo虚拟机的vcpu的配置当前为1,自动扩容,最大为4,代码如下:

root@xjy-pc:

/etc/libvirt/qemu#virsheditdemo

demo

7ed0d5dd-d283-5390-9575-c1458db792fd

1048576

1048576

4

hvm

……

(2)关闭虚拟机demo,再次启动,并使用“virshsetvcpus”命令将demo热修改为2个cpu。

root@xjy-pc:

/etc/libvirt/qemu#virshshutdowndemo

Domaindemoisbeingshutdown

root@xjy-pc:

/etc/libvirt/qemu#virshstartdemo

Domaindemostarted

root@xjy-pc:

/etc/libvirt/qemu#virshsetvcpusdemo2--live

(3)通过VNC登录KVM虚拟机,使用命令“grepprocessor/proc/cpuinfo|wc-l”查看是否扩容成功,如果结果为2,说明扩容成功。

3、内存扩容

(1)内存的设置拥有一个气球(balloon)机制,可以增大也可以减少,但要设置一个最大值,默认并没有最大值,可以在安装时指定。

(2)使用virshedit编辑demo虚拟机的配置文件,标签表示最大内存。

将图5中标签内容设置为4194304(4G),如图6所示。

标签内容表示当前内存为1048576(1G)。

图5demo虚拟机配置文件

图6修改demo虚拟机配置文件

(3)配置文件修改后,关闭虚拟机demo,再次启动。

如下所示:

root@xjy-pc:

/etc/libvirt/qemu#virshshutdowndemo

Domaindemoisbeingshutdown

root@xjy-pc:

/etc/libvirt/qemu#virshstartdemo

Domaindemostarted

(4)demo虚拟机内存修改之前使用“virshqemu-monitor-command”命令查看demo的当前内存。

代码如下,“balloon:

actual=1024”表示当前的内存为1024M,即1G。

root@xjy-pc:

/etc/libvirt/qemu#virshqemu-monitor-commanddemo--hmp--cmdinfoballoon

balloon:

actual=1024

(5)将demo内存热修改为2097M,即2G。

修改完毕后再次查看当前内存,代码如下:

root@xjy-pc:

/etc/libvirt/qemu#virshqemu-monitor-commanddemo--hmp--cmdballoon2097

root@xjy-pc:

/etc/libvirt/qemu#virshqemu-monitor-commanddemo--hmp--cmdinfoballoon

balloon:

actual=2097

(6)可以看出内存已经热修改为2G。

4、网络管理

(1)在默认情况KVM的网络是NAT模式,但是在生产情况,用的多的都是网桥模式。

(2)首先在宿主机上添加一个网桥br0,并查看网桥信息。

使用命令“brctl”。

代码如下:

root@xjy-pc:

~#brctladdbrbr0

root@xjy-pc:

~#brctlshow

bridgenamebridgeidSTPenabledinterfaces

br08000.000000000000no

virbr08000.fe540048bd84yesvnet0

(3)网桥br0添加完毕后,查看br0的ip地址,代码如下:

root@xjy-pc:

~#ifconfigbr0

br0Linkencap:

EthernetHWaddr26:

f4:

b6:

0d:

7a:

7f

BROADCASTMULTICASTMTU:

1500Metric:

1

RXpackets:

0errors:

0dropped:

0overruns:

0frame:

0

TXpackets:

0errors:

0dropped:

0overruns:

0carrier:

0

collisions:

0txqueuelen:

0

RXbytes:

0(0.0B)TXbytes:

0(0.0B)

(4)接下来使用桥接模式把eth0加入网桥br0,让eth0成为br0的一个端口。

同时将eth0接口ip删除,给br0设置ip为192.168.70.205,24位子网掩码。

同时添加路由网关为192.168.70.2,并关闭防火墙,代码如下:

(这个步骤会导致宿主机的网络断掉,之后重新通过bridge建立网络连接,所以建立bridge这个步骤不要通过SSH连接远程配置。

root@xjy-pc:

~#brctladdifbr0eth0&&ipaddrdeldeveth0192.168.70.204/24&&ifconfigbr0192.168.70.205/24up&&routeadddefaultgw192.168.70.2&&iptables-F

(5)再次查看网桥br0的ip地址,代码如下:

root@xjy-pc:

~#ifconfigbr0

br0Linkencap:

EthernetHWaddr00:

25:

90:

76:

67:

b5

inetaddr:

192.168.70.205Bcast:

192.168.70.255Mask:

255.255.255.0

inet6addr:

fe80:

:

225:

90ff:

fe76:

67b5/64Scope:

Link

UPBROADCASTRUNNINGMULTICASTMTU:

1500Metric:

1

RXpackets:

528errors:

0dropped:

0overruns:

0frame:

0

TXpackets:

104errors:

0dropped:

0overruns:

0carrier:

0

collisions:

0txqueuelen:

0

RXbytes:

76041(76.0KB)TXbytes:

15118(15.1KB)

(6)使用virshedit命令编辑虚拟机的网络配置,修改为使用br0网桥模式。

图7demo虚拟机未修改前网络配置

图8demo虚拟机修改后网络配置

(7)将demo虚拟机关闭后重新启动,代码如下:

root@xjy-pc:

/etc/libvirt/qemu#virshshutdowndemo

Domaindemoisbeingshutdown

root@xjy-pc:

/etc/libvirt/qemu#virshstartdemo

Domaindemostarted

(8)使用VNC连接demo虚拟机,在demo虚拟机中配置其静态IP地址为192.168.70.203后重启网卡。

代码如下:

root@demo-pc:

~#ifconfigeth0

eth0Linkencap:

EthernetHWaddr51:

54:

00:

48:

bd:

84

inetaddr:

192.168.70.203Bcast:

192.168.70.255Mask:

255.255.255.0

inet6addr:

fe80:

:

225:

90ff:

fe76:

67b5/64Scope:

Link

UPBROADCASTRUNNINGMULTICASTMTU:

1500Metric:

1

RXpackets:

208452errors:

0dropped:

219overruns:

0frame:

0

TXpackets:

702108errors:

0dropped:

0overruns:

0carrier:

0

collisions:

0txqueuelen:

1000

RXbytes:

66675114(66.6MB)TXbytes:

1010891428(1.0GB)

Interrupt:

20Memory:

f7a00000-f7a20000

root@demo-pc:

~#/etc/init.d/networkingrestart

(9)在KVM服务器上使用ping命令测试与demo虚拟机的连通性,代码如下:

root@xjy-pc:

~#ping192.168.70.203-c5

PING192.168.70.203(192.168.70.203)56(84)bytesofdata.

64bytesfrom192.168.70.203:

icmp_seq=1ttl=64time=0.265ms

64bytesfrom192.168.70.203:

icmp_seq=2ttl=64time=0.329ms

64bytesfrom192.168.70.203:

icmp_seq=3ttl=64time=0.225ms

64bytesfrom192.168.70.203:

icmp_seq=4ttl=64time=0.314ms

64bytesfrom192.168.70.203:

icmp_seq=5ttl=64time=0.303ms

---192.168.70.203pingstatistics---

5packetstransmitted,5received,0%packetloss,time3999ms

rttmin/avg/max/mdev=0.225/0.287/0.329/0.039ms

(10)在demo虚拟机中使用ping命令测试与KVM服务器的连通性,代码如下:

root@demo-pc:

~#ping192.168.70.205-c5

PING192.168.70.205(192.168.70.205)56(84)bytesofdata.

64bytesfrom192.168.70.205:

icmp_seq=1ttl=64time=0.181ms

64bytesfrom192.168.70.205:

icmp_seq=2ttl=64time=0.207ms

64bytesfrom192.168.70.205:

icmp_seq=3ttl=64time=0.329ms

64bytesfrom192.168.70.205:

icmp_seq=4ttl=64time=0.388ms

64bytesfrom192.168.70.205:

icmp_seq=5ttl=64time=0.248ms

---192.168.70.205pingstatistics---

5packetstransmitted,5received,0%packetloss,time3999ms

rttmin/avg/max/mdev=0.181/0.288/0.388/0.064ms

(11)至此,虚拟机通过桥接模式和宿主机连通,和外界网络也保持了通畅。

5、内存优化

内存优化项通常包括EPT技术、透明大页和KSM技术几种。

EPT技术:

(1)EPT技术也叫扩展页表,这是Intel开创的硬件辅助内存虚拟化技术。

内存的使用,是一个逻辑地址跟物理地址转换的过程。

虚拟机内部有逻辑地址转换成物理地址的过程,然后虚拟机又要和宿主机内存进行逻辑到物理的转换过程,整个寻址过程有两次地址转换,效率非常低。

而EPT技术,能将两次地址转换变成了一次,提高效率。

这项技术基本上现在的服务器CPU都支持,只要在BIOS打开了Intel的VT设置,那么EPT也一起打开了。

(2)使用图9中命令查看CPU是否支持EPT特性,使用图10中命令查看是否已开启EPT和VPID,Y表示已经加载了EPT和VPID,如果没加载可以通过命令“Modprobekvm_intelept=0,vpid=0”加载。

如图9和10所示:

图9查看cpu是否支持EPT特性

图10查看是否开启EPT特性

透明大页:

(1)透明大页,也叫透明巨型页(TransparentHugePage,THP),它允许所有的空余内存被用作缓存以提高性能,使用大页可以显著提高CPU的命中率,所以如果GuestOS使用大内存或者内存负载比较重的情况下,通过配置透明大页可以显著提高性能。

这个设置在Ubuntu14.04中是默认开启的,不需要手动去操作。

(2)Ubuntu14.04支持透明大页,默认开启,如图11所示:

图11透明大页默认开启

(3)图11中的参数说明:

never:

关闭。

always:

尽量使用透明大页,扫描内存,有512个4k页面可以整合,就整合成一个2M的页面,需要使用swap的时候,内存被分割为4k大小。

madvise:

避免改变内存占用。

(4)默认情况下,大页的数目为0,通过下面两种方式可以查看到,代码如下:

root@xjy-pc:

~#cat/proc/sys/vm/nr_hugepages

0

root@xjy-pc:

~#cat/proc/meminfo|grepHugePage

AnonHugePages:

376832kB

HugePages_Total:

0

HugePages_Free:

0

HugePages_Rsvd:

0

HugePages_Surp:

0

(5)设置大页的数量为2000后,再次查看大页数目,此时系统有2000个可用大页,代码如下:

root@xjy-pc:

~#echo2000>/proc/sys/vm/nr_hugepages

root@xjy-pc:

~#cat/proc/sys/vm/nr_hugepages

2000

(6)修改大页数量后查看虚拟机运行状态,发现即使虚拟机在运行,透明大页也没有被使用。

root@xjy-pc:

~#virshlist--all

IdNameState

----------------------------------------------------

2demorunning

root@xjy-pc:

~#cat/proc/meminfo|grepHugePage

AnonHugePages:

374784kB

HugePages_Total:

2000

HugePages_Free:

2000

HugePages_Rsvd:

0

HugePages_Surp:

0

(7)使用命令“virshshutdowndemo”将demo虚拟机关闭,然后修改demo虚拟机配置,添加使用大页的内容,(图12中可以看到demo虚拟机的内存为1G),在图12标签下面添加标签。

如图12和13所示。

图12demo虚拟机配置文件修改前

图13demo虚拟机配置文件修改后

(8)挂载大页,然后重新启动libvirtd-bin。

root@xjy-pc:

/dev#mount-thugetlbfshutetlbfs/dev/hugepages

root@xjy-pc:

/dev#mount|tail-l

……

hutetlbfson/dev/hugepagestypehugetlbfs(rw)

root@xjy-pc:

/dev#/etc/init.d/libvirt-binrestart

*Restartinglibvirtmanagementdaemon/usr/sbin/libvirtd

...done.

(9)使用“virshstartdemo”重新开启虚拟机后查看结果。

从以下代码可以看出,共消耗了520个大页,每个大页默认大小为2M,正好是demo所有的内存。

root@xjy-pc:

/dev#cat/proc/meminfo|grep-iHugePage

AnonHugePages:

34816kB

HugePages_Total:

2000

HugePages_Free:

1480

HugePages_Rsvd:

0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 药学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1