首页 » 网站建设 » phpipping技巧_KVM虚拟机热操作分娩情形总结

phpipping技巧_KVM虚拟机热操作分娩情形总结

访客 2024-12-04 0

扫一扫用手机浏览

文章目录 [+]

提到KVM热操作,还有一个对应的便是冷操作,所谓冷热操作,差异在于是否须要对虚拟机系统进行重启操作。

本篇紧张先容,在KVM虚拟化实践中,哪些是可以热操作的,不须要重启虚拟机即可使变动的配置生效。

phpipping技巧_KVM虚拟机热操作分娩情形总结

包含以下内容:

phpipping技巧_KVM虚拟机热操作分娩情形总结
(图片来自网络侵删)

1. KVM虚拟机硬盘热添加

2. KVM虚拟机热添加内存

3. KVM虚拟机热添加CPU

4. KVM虚拟机热添加网卡

5.在线刷新防火墙策略

6. CPU动态绑定

1. KVM虚拟机硬盘热添加

热添加硬盘有两个方法,一个是通过命令行,来添加;二个是手动创建xml文件,然后利用attach-device热添加硬盘。

方法一:

创建一块50G的硬盘命名为attack-disk.qcow2,格式指定为qcow2;

[root@localhost ~]qemu-img create -f qcow2 /datapool/attack-disk.qcow2 50G

查看须要热添加硬盘的虚拟机当前磁盘的状态

[root@localhost ~]virsh domblklist e364bba5-12dd-4044-a52b-4e7c8cf65148

Target Source

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

vda /dev/vmVG/1deced67-0959-44b6-89bb-d1b1eb401d2f

解释:e364bba5-12dd-4044-a52b-4e7c8cf65148是虚拟机名称,当前这台虚拟机只有一块磁盘vda;

热添加磁盘attack-disk.qcow2到虚拟机中

[root@localhost ~]#virsh attach-disk e364bba5-12dd-4044-a52b-4e7c8cf65148 /datapool/attack-disk.qcow2 vdb --cache none --subdriver qcow2

Disk attached successfully

解释:attach-disk后面跟的参数vdb表示硬盘的标识,不能和已有的硬盘标识相同,--cache,指定硬盘缓存策略为none;--subdriver,指定添加磁盘的格式为qcow2默认是raw格式;

查看效果

[root@ localhost ~]# virsh domblklist e364bba5-12dd-4044-a52b-4e7c8cf65148

Target Source

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

vda /dev/vmVG/1deced67-0959-44b6-89bb-d1b1eb401d2f

vdb /datapool/attack-disk.qcow2

查看磁盘状态,多了一块vdb磁盘

[root@guest ~]#fdisk -l

Disk /dev/vdb: 53.6 GB, 53687091200 bytes

16 heads, 63 sectors/track, 104025 cylinders

Units = cylinders of 1008 512 = 516096 bytes

Disk /dev/vdb doesn't contain a valid partition table

在虚拟机内部查看,硬盘已经添加进来了

把稳:在热添加磁盘的时候,在虚拟机内部须要先确定acpiphp是否已经加载。

[root@centos5 ~]# lsmod |grep acpiphp

acpiphp 58841 0

如果未加载的话,须要先加载,虚拟机内部无法看到热添加的磁盘。

方法二:

创建须要热添加硬盘的xml文件, attack-disk.xml

[root@localhost ~]# cat attack-disk.xml

<disk type='file' device='disk'>

<driver name='qemu' type='qcow2' cache='none'/>

<source file='/datapool/attack-disk.qcow2'/>

<target dev='vdb' bus='virtio'/>

<alias name='virtio-disk2'/>

</disk>

利用attach-device加载xml文件

[root@localhost ~]#virsh attach-device e364bba5-12dd-4044-a52b-4e7c8cf65148 attack-disk.xml

把稳:

在完成了热添加硬盘之后,须要编辑虚拟机的xml配置文件将新添加硬盘部分的配置添加进去。
否则下次重启的时候,新添加的硬盘就消逝了。

2. KVM虚拟机热添加内存

对付KVM虚拟机热添加内存,目前利用Libvirt实现并不完备,但是Libvirt供应了一个变通的办法,便是可以在线变更虚拟机内存大小。
真正的热添加内存qemu-kvm也可以实现,但是存在诸多限定和繁琐的配置,有兴趣的朋友可以参考这个链接http://blog.csdn.net/cybertan/article/details/8333791,由于通用性太低,所有这边就不做先容了。
以下看看,如何利用Libvirt来对虚拟机进行内存增减。

查看当前虚拟机内存干系的配置项

[root@localhost ~]#virsh dumpxml e364bba5-12dd-4044-a52b-4e7c8cf65148

<…>

<memory unit='KiB'>2096128</memory>

<currentMemory unit='KiB'>2096128</currentMemory>

<…>

包括两个配置项,memory表示内存大小2096128/1024/1024=2G,这个配置项解释虚拟机最大用2G,currentMemory表示当前利用内网2096128/1024/1024=2G也是2G,一样平常情形下,这两个值是一样的,如果要在线增加内存就弗成了,但是如果业务许可的话,可以在线减内存。
如果要实现在线加内存,须要实现配置较大内预制内存。

[root@localhost ~]# setmaxmem e364bba5-12dd-4044-a52b-4e7c8cf65148 4G

virsh # setmaxmem e364bba5-12dd-4044-a52b-4e7c8cf65148 4G

error: Unable to change MaxMemorySize

error: Requested operation is not valid: cannot resize the maximum memory on an active domain

这个命令须要再关机情形下实行,否则涌现如上报错。

关机情形下调度预制内存大小,并开机

[root@localhost ~]# virsh setmaxmem e364bba5-12dd-4044-a52b-4e7c8cf65148 4G

[root@localhost ~]# virsh start e364bba5-12dd-4044-a52b-4e7c8cf65148

利用setmem在线调度虚拟机内存大小

[root@localhost ~]# virsh setmem e364bba5-12dd-4044-a52b-4e7c8cf65148 1G

实行完成之后,虚拟机内存就在线调度了。

把稳:

在线热添加内存,有以下3个把稳点:

1)须要在虚拟机关机的情形下调度预制内存大小,之后才能热添加内存;

2)经测试,linux centos5,6的虚拟机可以实时生效,对付windows的虚拟机无法直接识别。

3) 如果你的虚拟机通过define再start的,须要编辑对付的xml文件,否则下次启动变更会失落效。

3. KVM虚拟机热添加CPU

首先须要解释一下,对付cpu的热添加支持,从RedHat RHEL6.5 发行版才开始支持。

查看xml配置文件中关于vcpu的项

[root@localhost ~]# virsh setmem e364bba5-12dd-4044-a52b-4e7c8cf65148 1G

[root@ localhost ~]# virsh dumpxml 9f2464c8-9250-4d90-833f-0d79490b0761|grep vcpu

<vcpu placement='static' current='6'>8</vcpu>

解释:8 表示可以利用的vcpu是8核,利用热添加的vcpu核数最多为8核;current=6,表示当前vcpn的核数为6;

热添加cpu

[root@localhost ~]# virsh setvcpus 9f2464c8-9250-4d90-833f-0d79490b0761 8

解释:添加成功无任何返回提示信息,如果你的宿主机系统低于redhat6.5发行版,会看到如下提示error:Operation not supported: qemu didn't unplug the vCPUs properly

查看虚拟机内部cpu情形

[root@localhost ~]# numactl --hardware

available: 1 nodes (0)

node 0 cpus: 0 1 2 3 4 5 6 7

node 0 size: 8191 MB

node 0 free: 7695 MB

node distances:

node 0

0: 10

解释:可以看到当前是1个物理cpu,里面包含8个核心。

把稳:

热添加cpu有三把稳点:

1)宿主机的发行版须要大于redhat6.5;

2)必须现在关机状态先调度最大vcpn的配置,之后才能实现热添加cpu。

3)如果你的虚拟机通过define再start的,须要编辑对付的xml文件,否则下次启动变更会失落效。

4. KVM虚拟机热添加网卡

热添加网卡,与热添加硬盘类似,有两种实现的方法

方法一:直策应用virsh命令实现

[root@localhost ~]# virsh attach-interface 9f2464c8-9250-4d90-833f-0d79490b0761 --type bridge --source virbr0 --model e1000

解释:9f2464c8-9250-4d90-833f-0d79490b0761为虚拟机名称,--type实行网卡类型是bridge,--source指定桥接到宿主机virbr0 网桥,--model 指定网卡的驱动e1000。

[root@gues ~]# ethtool -i eth2

driver: e1000

version: 7.3.21-k8-NAPI

firmware-version:

bus-info: 0000:00:09.0

supports-statistics: yes

supports-test: yes

supports-eeprom-access: yes

supports-register-dump: yes

supports-priv-flags: no

在虚拟机内部可以看到,新加的网卡eth2驱动为e1000

方法二:编辑xml,然后之后

创建网卡的配置文件,命名为attach-interface.xml

[root@localhost ~]# cat attach-interface.xml

<interface type='bridge'>

<mac address='52:54:00:e9:0a:6f'/>

<source bridge='virbr0'/>

<model type='virtio'/>

</interface>

解释:type指定为bridge,驱动为virtio,桥接到宿主机的virbr0上。

加载xml的配置

[root@localhost ~]# virsh attach-device 9f2464c8-9250-4d90-833f-0d79490b0761 attach-interface.xml

Device attached successfully

系统内部查看网卡情形

[root@localhost ~]# ethtool -i eth4

driver: virtio_net

version:

firmware-version:

bus-info: virtio6

supports-statistics: no

supports-test: no

supports-eeprom-access: no

supports-register-dump: no

supports-priv-flags: no

在线卸载网卡

查看当前虚拟机有哪些网卡

[root@localhost ~]# virsh domiflist 9f2464c8-9250-4d90-833f-0d79490b0761

Interface Type Source Model MAC

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

vnet3 bridge br0 virtio 00:16:3e:f1:e1:ac

vnet4 bridge br1 virtio 00:16:3e:77:42:5a

vnet9 bridge virbr0 e1000 52:54:00:05:20:a1

卸载vnet9的网卡

[root@localhost ~]#virsh detach-interface 9f2464c8-9250-4d90-833f-0d79490b0761 --type bridge --mac 52:54:00:05:20:a1

Interface detached successfully

把稳:

网卡热添加,操作完成之后,须要edit xml配置文件,将变革的部分添加进去,否则下次虚拟机关机,在启动的时候,在线添加网卡会丢失。

5.在线刷新防火墙策略

Libvirt本身供应了虚拟机防火墙的功能,利用起来也非常的方便,以下就来先容一下如何利用Libvirt来给虚拟机添加防火墙策略,并演示在线刷新虚拟机防火墙策略。

首先,先容一下环境,所有虚拟机网卡都因此桥接的办法配置的。
宿主机系统发行版今年夜于centos6.3,Libvirt版本为操作系统发行版中自带的版本,Libvirt防火墙都生效。

利用Libvirt防火墙,须要开启网桥的filter功能,编辑/etc/sysctl.conf

[root@localhost ~]#cat /etc/sysctl.conf |grep net.bridge.bridge-nf-call-iptables

net.bridge.bridge-nf-call-iptables = 1

添加net.bridge.bridge-nf-call-iptables= 1

利用virsh nwfilter-list查看当前宿主机上包含nwfilter策略

[root@localhost ~]# virsh nwfilter-list

UUID Name

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

80141227-1af8-da81-9e44-9b4a8307f967 allow-arp

f54c1fe9-0fd6-c58b-5561-9668c6e90431 allow-dhcp

695baf56-0f42-dd57-1b8e-38edd0381bff allow-dhcp-server

8a4a8fe8-3136-c8c7-5edd-d8aad518bd0d allow-incoming-ipv4

dea9a35c-b383-698a-67e3-c4fe988b1397 allow-ipv4

1d5ba7cf-bcdb-9c17-d0e4-2b891cffb9a1 clean-traffic

de11b7ca-c5fa-a5c7-a570-25bc6ad8d71f no-arp-ip-spoofing

b36d63ae-fe50-cbb9-67a1-acf2e54e7215 no-arp-mac-spoofing

b83b084e-b3e3-aaf9-8887-d32708271f7d no-arp-spoofing

378e60c5-38b8-61a7-890d-e5481ffcbcc5 no-ip-multicast

1a59943e-39f0-f774-90ab-6b16c3fa28ae no-ip-spoofing

152dc790-fd40-fe23-ee46-074dede49b76 no-mac-broadcast

8fa76d9d-3746-35bf-1db5-afecdcd0adf7 no-mac-spoofing

7ace5f7d-a01e-5149-2186-cc0e47946be8 no-other-l2-traffic

9dcff82a-2111-b71f-957a-6f2fca823687 no-other-rarp-traffic

475cb614-0baa-c109-06d9-51142c619c25 qemu-announce-self

07b45c81-6f17-72b8-5cda-4db41a5f7911 qemu-announce-self-rarp

查看nwfilter的详细内容,可以利用nwfilter-dumpxml

[root@localhost ~]#virsh nwfilter-dumpxml clean-traffic

<filter name='clean-traffic' chain='root'>

<uuid>1d5ba7cf-bcdb-9c17-d0e4-2b891cffb9a1</uuid>

<filterref filter='no-mac-spoofing'/>

<filterref filter='no-ip-spoofing'/>

<rule action='accept' direction='out' priority='-650'>

<mac protocolid='ipv4'/>

</rule>

<filterref filter='allow-incoming-ipv4'/>

<filterref filter='no-arp-spoofing'/>

<rule action='accept' direction='inout' priority='-500'>

<mac protocolid='arp'/>

</rule>

<filterref filter='no-other-l2-traffic'/>

<filterref filter='qemu-announce-self'/>

</filter>

解释一下,clean-traffic这个策略中各定义项的含义

<filter name='clean-traffic' chain='root'> :定义策略名称,filter策略链,如果纯挚一个功能可以写root、stp、mac、vlan、ipv4、ipv6、arp、rarp;

<filterref filter='no-mac-spoofing'/> :如果你的策略中须要引用一些根本策略,可以在这个定义;

<rule action='accept' direction='out' priority='-650'>

<mac protocolid='ipv4'/>

</rule>

这是一个详细的策略,action=’accept’,这条定义的是accept策略,direction定义策略的方向,可以配置in 或者out,priority定义策略优先级[-1000,1000],值越小,优先级越高

创建一个防火墙策略的配置文件deny_ping.xml,浸染是仅许可固定ipping

<filter name='deny_ping' chain='root'>

<uuid>6c44d2b6-575f-41e8-bb47-d1a525295dbb</uuid>

<filterref filter='clean-traffic'/>

<rule action='accept' direction='in' priority='300'>

<icmp srcipaddr='192.168.1.1'/>

</rule>

<rule action='drop' direction='in' priority='300'>

<icmp/>

</rule>

</filter>

解释:在策略中定义了两条rule ,第一条是许可192.168.1.1的icmp,第二条是谢绝所有icmp

把这个策略define到nwfilter中

[root@localhost ~]#virsh nwfilter-define deny_ping.xml

Network filter deny_ping defined from deny_ping.xml

define策略之后,编辑虚拟机的配置文件,在须要配置防火墙策略的接口下添加

[root@localhost ~]#virsh dumpxml vm-name

<……>

<interface type='bridge'>

<mac address='02:00:73:b6:53:f5'/>

<source bridge='br0'/>

<target dev='vnet7'/>

<model type='e1000'/>

<filterref filter=' deny_ping '> //在这里引用策略

<parameter name='IP' value='192.168.1.2'/> //这条实现了ip绑定,在这个接口上只能配置这个ip,否则虚拟机就不通

</filterref>

<alias name='net1'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>

</interface>

<…..>

配置完成之后,启动虚拟机,nwfilter防火墙即可生效,须要修正的话,只须要编辑deny_ping.xml,然后直接define就实时生效了

把稳:

nwfilter实际上是在宿主机上有Libvirt来插入了对应的防火墙策略,以是哀求宿主机上防火墙必须开启。
如果宿主机上的防火墙关闭或者重启之后,须要重启Libvirtd,使nwfilter重新生效。
详细的策略配置请参考:http://Libvirt.org/formatnwfilter.html。

6. CPU动态绑定

在一个宿主机上,如果运行了多台虚拟机,在不做cpu绑定和限定的时候,会涌现cpu资源的争抢。
绑定cpu有方法有很多,比如在虚拟机的配文件中编辑

<vcpu placement='static' cpuset='0'>1</vcpu>

虚拟机配置1核,与物理cpu的cpu0绑定。

用这种办法绑定cpu,上风在于管理方便,操作大略,劣势便是不足灵巧。

以下先容两个动态绑定的方法。

方法一:利用cgroup来实现。

查看须要绑定虚拟机的进程和线程id

[root@localhost~]#ps -eLo pid,lwp,psr,args|grep 5e1397fd-9557-4e2c-9d76-6e5ea78b2d1f|grep -v 5e1397fd-9557-4e2c-9d76-6e5ea78b2d1f

30587 30587 2 /usr/libexec/qemu-kvm -name 5e1397fd-9557-4e2c-9d76-6e5ea78b2d1f -S -M rhel6.5.0 ……

30587 30590 2 /usr/libexec/qemu-kvm -name 5e1397fd-9557-4e2c-9d76-6e5ea78b2d1f -S -M rhel6.5.0 ……

30587 30591 5 /usr/libexec/qemu-kvm -name 5e1397fd-9557-4e2c-9d76-6e5ea78b2d1f -S -M rhel6.5.0 ……

解释:虚拟机名称为5e1397fd-9557-4e2c-9d76-6e5ea78b2d1f,虚拟机的进程号为30687,这台虚拟机有两个cpu,分别对应的线程号是30590和30591

将虚拟机的cpu绑定在物理核cpu1上

[root@localhost~]#echo \"大众1\"大众>/cgroup/cpuset/Libvirt/qemu/5e1397fd-9557-4e2c-9d76-6e5ea78b2d1f/emulator/cpuset.cpus

[root@localhost~]# echo \"大众30590\"大众>/cgroup/cpuset/Libvirt/qemu/5e1397fd-9557-4e2c-9d76-6e5ea78b2d1f/emulator/tasks

[root@localhost~]# echo \公众30591\"大众>/cgroup/cpuset/Libvirt/qemu/5e1397fd-9557-4e2c-9d76-6e5ea78b2d1f/emulator/tasks

解释:将虚拟机的两个cpu线程绑定到物理cpu1上

查看当前虚拟机cpu的亲和度

[root@localhost~]#virsh vcpuinfo 5e1397fd-9557-4e2c-9d76-6e5ea78b2d1f

VCPU: 0

CPU: 1

State: running

CPU time: 436.7s

CPU Affinity: -y------ //这项表示虚拟机对宿主机cpu的亲和度,表示虚拟机的cpu线程在cpu1上调度。

VCPU: 1

CPU: 1

State: running

CPU time: 1686.8s

CPU Affinity: -y------

在虚拟机内部做cpu压力测试,不雅观察宿主机cpu利用率,会看到压力都在cpu1上

方法二:通过taskset 来热绑定cpu

打消cgroup的配置

[root@localhost~]#echo >/cgroup/cpuset/Libvirt/qemu/5e1397fd-9557-4e2c-9d76-6e5ea78b2d1f/emulator/tasks

[root@localhost~]#echo 0-7>/cgroup/cpuset/Libvirt/qemu/5e1397fd-9557-4e2c-9d76-6e5ea78b2d1f/emulator/cpuset.cpus

分别绑定虚拟机cpu的两个核到cpu3,cpu5

[root@localhost~]# taskset -p 0x8 30590

pid 30590's current affinity mask: ff

pid 30590's new affinity mask: 8

[root@localhost~]# taskset -p 0x20 30591

pid 30591's current affinity mask: ff

pid 30591's new affinity mask: 20

解释:0x8 是一个十六进制数表示,转换为8位二进制数00001000,由于物理机cpu是8核,所有转化为8位二进制数,再倒序得到 00010000,这个便是cpu3

在宿主机上查看该虚拟机的cpu亲和度

[root@localhost~]# virsh vcpuinfo 5e1397fd-9557-4e2c-9d76-6e5ea78b2d1f

VCPU: 0

CPU: 3

State: running

CPU time: 436.8s

CPU Affinity: ---y----

VCPU: 1

CPU: 5

State: running

CPU time: 1687.0s

CPU Affinity: -----y--

此时在虚拟机内部压cpu压力的时候,会看到压力落在宿主机的cpu3,cpu5上

把稳:

以上两种cpu热绑定操作,最好利用程序来操作。

总结

本篇大略的先容一下在KVM中可以实现热操作的工具。
比如硬件上有硬盘、网卡、内存、cpu,紧张的配件都可以支持热操作,但是也须要把稳有一些限定条件,比如内存、cpu的热操作须要预先在xml配置文件里面做一下预分配。
cpu热操作只在CentOS 6.5发行版之后支持。

其余本篇还先容了,两个比较常用的热操作,防火墙策略在线刷新和cpu热绑定。
本篇的先容,也只是抛砖迎玉,须要深度理解的话,可以借助一些官方文件,http://Libvirt.org/上有非常详细的先容。

作者简介:

杨俊俊

《深度实践KVM》作者,资深虚拟化专家,精通虚拟化项目的评估与履行,精通开源分布式文件系统在生产环境的运维与实践。

相关文章

介绍皮肤设置,如何打造理想肌肤状态

随着科技的发展和人们对美的追求,皮肤设置已成为美容护肤的重要一环。如何根据皮肤类型、肤质、年龄等因素进行合理设置,已成为众多爱美人...

网站建设 2025-01-03 阅读0 评论0

介绍盖章制作,传承文化,彰显权威

自古以来,盖章在我国文化中具有重要的地位。从古代的官印、私印到现代的公章、合同章,盖章已成为一种独特的文化符号,承载着丰富的历史内...

网站建设 2025-01-03 阅读0 评论0

介绍监控破坏,技术手段与法律风险并存

随着科技的飞速发展,监控设备已遍布大街小巷,成为维护社会治安的重要手段。一些不法分子为了逃避法律制裁,开始研究如何破坏监控设备。本...

网站建设 2025-01-03 阅读0 评论0

介绍登录不上之谜,技术故障还是人为疏忽

随着互联网的普及,登录已成为人们日常生活中不可或缺的一部分。在享受便捷的登录不上这一问题也困扰着许多用户。本文将深入剖析登录不上之...

网站建设 2025-01-03 阅读0 评论0

介绍电脑键盘调出方法,让操作更高效

随着科技的发展,电脑已经成为了我们日常生活中不可或缺的工具。而电脑键盘,作为电脑输入设备,更是我们与电脑进行交流的桥梁。你是否知道...

网站建设 2025-01-03 阅读0 评论0

介绍磁力链,高效便捷的文件下载利器

在互联网高速发展的今天,文件下载已成为日常生活中不可或缺的一部分。而磁力链作为一种新型的文件下载方式,凭借其高效、便捷的特点,受到...

网站建设 2025-01-03 阅读0 评论0