KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V

目录:
(3.1)了解cgroup工做机制
(3.2)KVM环境中对CPU资源的限制
(3.3)KVM环境中对网络资源的限制
(3.4)P2V
(3.5)V2Vcentos


(3.1)了解cgroup工做机制
cgroup,其名称源自控制组群(control groups)的简写,是Linux内核的一个功能,用来限制、控制与分离一个进程组的资源(如CPU、内存、磁盘输入输出等)。这个项目最先是由Google的工程师在2006年发起,最先的名称为进程容器。在2007年时,由于在Linux内核中,容器(container)这个名词有许多不一样的意义,为了不混乱,被重命名为cgroup,而且被合并到2.6.24版的内核中去。自那之后,又添加了不少功能。cgroup的一个设计目标是为不一样的应用状况提供统一的接口,从控制单一的进程到操做系统层虚拟化。cgroup提供:
资源限制:组能够被设置不超过设定的内存限制,也包括虚拟内存
优先级:一些组可能会获得大量的CPU或磁盘IO吞吐量
结算:用来衡量系统确实把多少资源用到合适的目的上
控制:冻结组或检查点和重启动
cgroup是一个很重要的资源控制机制,有时候咱们须要对CPU进行限制,对网络进行限制,对内存或者磁盘IO进行限制,若是没有作限制极可能会由于某个程序或者进程大量消耗资源而致使系统崩溃,此时咱们使用cgroup进行资源管理就会很是的有效。
(3.1.1)CPU管控器在kerner中被默认启动,这可以使全部系统service的可用CPU量相同,而与其所包含进程数量无关。此项默认设定可使用/etc/systemd/system.conf配置文件中的defaultControllers参数来修改。如需管理CPU的分配,请使用单位配置文件[Service]部分中的下列指令:CPUShares=value,请使用CPU share的数量代替value。默认值为1024,您能够增长此数值来给单位分配更多CPU。通常咱们对CPU资源进行限制主要是经过命令行进行操做或者经过修改配置文件这样两种方式。如今咱们先在vms002主机上安装Apache服务。
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.1.2)接着咱们在经过systemd-cgtop命令发现此时并无对httpd服务作任何的限制。通常咱们服务的启动脚本是放在/usr/lib/systemd/system/目录下的httpd.service文件中的。
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.1.3)而咱们须要对服务的属性进行设置的时候,主要是经过命令# systemctl set-property httpd.service CPUShares=2048来完成的,此时在/etc/systemd/system/目录下便会产生一个关于httpd.service的目录文件。而且在90-CPUShares.conf文件中会产生咱们命令行设置的信息,此时经过# systemd-cgtop命令查看,也已经产生了httpd的一行信息。
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.1.4)对CPU等资源进行限制的时候,只有这个资源紧张的时候,这种分配才生效,当这种资源不紧张的时候,设置无效。咱们发现此时vms002主机的系统中是有2个CPU在运行的,接着咱们进入到/sys/devices/system/cpu/目录中看到cpu1/online的数值为1开启状态,咱们能够将cpu1/online的设置为0关闭禁用
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.1.5)接着咱们在vms002主机上安装一个cpuload软件,并将cpuload可执行文件复制独立的两个文件cpuload1和cpuload2。同时建立cpuload1.service和cpuload2.service两个定制服务文件,并将配置文件拷贝到/usr/lib/systemd/system/目录下。自定义服务,定制服务
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.1.6)此时在系统中咱们即可以看到两个服务cpuload1.service和cpuload2.service,而且都是没有启动的状态。咱们将两个服务启动起来,此时经过以下的命令# ps mo pid,comm,psr `pgrep cpuload`,即可以看到cpuload1和cpuload2都是运行在0号CPU上的。此时咱们经过top命令能够发现两个cpuload服务的资源使用率基本差很少,也可使用# systemd-cgtop命令查看。
# ps mo pid,comm,psr `pgrep cpuload`
# top -d 1
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.1.7)接着咱们使用命令行的方式对cpuload1进行资源限制,此时在/etc/systemd/system/目录下便产生了一个cpuload1.service.d的目录。而后咱们使用修改配置文件的方式建立cpuload2.service.d,而且在cpuload2.service.d目录下的90-CPUShares.conf配置文件中将CPUShares的值更改成1024
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.1.8)而后咱们将服务重载一下,再将cpuload2的服务启动起来,此时cpuload2服务就已经正常的运行了。
# systemctl daemon-reload
# systemctl restart cpuload2.service
# systemctl status cpuload2
# top -d 1
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.1.9)此时咱们经过top命令发现cpuload1服务的CPU使用率基本是cpuload2服务CPU使用率的2倍,与咱们设置的指望值一致。咱们经过# systemd-cgtop命令一样发现cpuload1服务也基本是cpuload2服务的CPU使用率的2倍
# top -d 1
# systemd-cgtop
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.1.10)接着咱们对内存进行管理限制,咱们先安装一个内存测试的工具memload,同时在/usr/lib/systemd/system目录下建立一个定制服务的配置文件memtest.service消耗1024M的内存。自定义服务,自定义一个服务,定制服务
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.1.11)咱们将memtest服务启动起来,此时便会发现可用的内存先后大约少了1024M左右
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.1.12)接着咱们使用修改配置文件的方式来对内存资源作限制操做,咱们进入到/etc/systemd/system/目录中,建立一个目录memtest.service.d,接着在memtest.service.d目录中建立一个配置文件90-MemoryLimit.conf用来限制内存最大使用512M。
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.1.13)服务中是设置了消耗1024M的内存,但实际上通过了cgroup的资源限制后,咱们发现系统只是消耗了512M的内存了
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.1.14)接下来咱们设置对CPU的亲和性作限制,所谓CPU的亲和性(affinity)就是指定进程在哪一个特定的CPU上运行。正常的状况下httpd服务的进程是会随机的运行在系统中的任意的CPU上的(图3-32)。如今假设咱们的系统有4核的CPU,此时若是咱们有多个服务在同时运行,咱们能够指定1号CPU运行Apache,2号CPU运行Nginx,3号CPU运行MySQL,同时单独指定4号CPU不运行任何的服务,使得不一样的服务运行在不一样的CPU上,此时若是MySQL服务出现了异常,CPU的使用率已经达到了100%了,那么也只是3号CPU的资源枯竭,不会影响到其余CPU上服务的运行,此时咱们做为管理员即可以使用4号CPU来作管理,管理员能够正常的登陆系统将系统中异常的进程kill掉。
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.1.15)咱们在/etc/systemd/system/httpd.service.d目录下,建立一个资源限制的文件90-CPUAffinity.conf,在配置文件中使用cgroup设置CPU资源的亲和性为0号CPU
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.1.16)接着咱们将服务所有从新加载一下,再将httpd服务从新启动一下。此时发现httpd的进程通过了资源限制后,已经所有在0号CPU运行了。
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V服务器


(3.2)KVM环境中对CPU资源的限制
(3.2.1)咱们先在vms002主机的KVM环境中建立一个rhel7-1的虚拟机。发现这台rhel7-1虚拟机的线程是同时任意运行在当前vms002主机的0号和1号CPU上的。
# ps mo pid,lwp,comm,psr,args `pgrep qemu-kvm`
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.2.2)咱们能够在virt-manager的界面配置rhel7-1虚拟机的亲和性为1号CPU。此时rhel7-1虚拟机的全部进程都默认是在1号CPU上运行
# virsh edit rhel7-1
# ps mo pid,lwp,comm,psr,args `pgrep qemu-kvm`
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.2.3)接着咱们再建立一个虚拟机rhel7-2,而且设置rhel7-2虚拟机也是运行在1号CPU上,此时咱们发现rhel7-1和rhel7-2两台虚拟机都运行在1号CPU上了。并且使用# top -d 1命令发现,两台虚拟机的CPU使用率基本是持平的。
# ps mo pid,lwp,comm,psr,args `pgrep qemu-kvm`
# top -d 1
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.2.4)接着咱们来调整KVM环境里两台虚拟机的CPU消耗的属性,咱们先将两台虚拟机关机,而后再分别编辑rhel7-1和rhel7-2,经过命令# virsh edit rhel7-1对rhel7-1虚拟机进行设置,cputune表示调优,咱们设置CPUShares的值为2048,设置rhel7-2虚拟机的CPUShares的值为1024
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.2.5)接着咱们将两台虚拟机关机后在从新开机启动,并执行# cat /dev/zero > /dev/null的命令,经过# top -d 1命令查询到rhel7-1虚拟机的CPU使用率基本是rhel7-2虚拟机使用率的2倍,使用# systemd-cgtop命令也基本能够看出两台虚拟机在0号CPU运行,且rhel7-1的使用率是rhel7-2的使用率的2倍
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V网络


(3.3)KVM环境中对网络资源的限制
(3.3.1)注意:若是咱们在vms002(192.168.26.102)主机上搭建了一个FTP服务,而且在/var/ftp目录下床架了一个dvd的目录,此时使用挂载将vms002主机上的光盘镜像挂载到/var/ftp/dvd目录上,此时若是在KVM环境中有一台虚拟机rhel7-1(192.168.122.65)主机,那么这个rhel7-1虚拟机是能够经过ftp://192.168.122.1/dvd 访问到光盘镜像的内容的。
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.3.2)咱们能够经过修改配置文件的方式对KVM环境中的虚拟机的网络资源进行限制。在rhel7-1(192.168.122.65)虚拟机上设置进流量和出流量最大都是128k,而rhel7-2(192.168.122.115)虚拟机不做任何的网络流量限制。
# virsh edit rhel7-1
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.3.3)而后咱们在vms002主机上建立一个200M的文件,并经过scp的方式拷贝到两台虚拟机,以便比较其传输速度的快慢。测试发现200M的文件拷贝到rhel7-2主机用了7秒,而将200M的文件拷贝到rhel7-1主机上至少用了7分钟,从而说明了咱们的网络资源限制的配置生效了。
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2Vide


(3.4)P2V
(3.4.1)注意:若是出现了如下报错“状态 :睡眠中,进程ID:3475”,能够经过执行以下的命令处理。
# rm -rf /var/run/yum.pid
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.4.2)物理到虚拟,即Physical to virtual,简称P2V。它是指将操做系统、应用程序或者数据从计算机的物理硬盘中迁移到一个虚拟化环境中或是磁盘分区中。P2V能够手工建立或定义一个虚拟环境,并在此环境中安装操做系统、应用程序或者数据,这可能会是一个冗长或不肯定的过程,尤为是在一个包含大量旧的硬件条件的新环境中。为了简化操做,会有一些支持所有或者部分虚拟化的自动软件工具,也就是咱们所熟识的迁移工具。一般P2V就是建立虚拟的应用服务器环境,如在IBM服务器上搭建虚拟环境从而运行Windows系统。
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.4.3)如今咱们准备完成的P2V迁移的拓扑图以下所示,物理机被迁移的系统使用的是rhel7.1的版本,同时物理机须要使用virt-p2v-0.9.1-2.1.el6.centos.noarch镜像盘来引导,虚拟化环境的宿主机使用的是rhel6.6的系统,且在咱们的虚拟化环境中须要安装virt-v2v软件。
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.4.4)咱们使用KVMhost(192.168.26.131)做为宿主机,安装rhel6.6的系统,而后使用TestRhel7做为被迁移的物理机,安装的是rhel7.1的系统。咱们将virt-p2v-0.9.1-2.20130730.1.el6.centos.noarch.rpm软件放置到KVMhost宿主机上,并将virt-p2v使用rpm安装起来,随后咱们便获得了一个virt-p2v-0.9.1-2.20130730.1.el6.centos.iso的镜像文件,这个文件咱们将做为TestRhel7系统在被迁移时的引导盘。
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.4.5)接着咱们设置TestRhel7物理机在开机时,使用virt-p2v-0.9.1-2.20130730.1.el6.centos.iso这个引导盘进入系统。
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.4.6)接着咱们设置KVMhost主机,将rhel6.6的光盘镜像挂载到/mnt目录下,而且设置好aa.repo的YUM源。并在KVMhost主机的系统中将虚拟化的环境安装一下,同时将KVMhost主机的CPU虚拟化功能打开。
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.4.7)因为须要打开图形化功能,因此咱们须要保证KVMhost主机上的xorg-x11-xauth.x86_64这个软件包安装起来。配置完成后将系统重启一下便可。
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.4.8)接着咱们还要在KVMhost主机上安装virt-v2v软件,并在/etc/fstab文件中进行光盘自动挂载的配置(/dev/cdrom光盘镜像挂载到/mnt目录下)
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
/dev/cdrom /mnt iso9660 defaults,ro,loop 0 0
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.4.9)接着咱们在KVMhost主机上的/etc/virt-v2v.conf配置文件中进行配置,咱们设置默认的存储storage生效,并设置默认的网络network生效,并将virt-manager打开
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.4.10)接着咱们将TestRhel7主机启动并使用光盘镜像引导,进入到了virt-p2v的界面,选择链接网络,而后输入KVMhost主机的IP地址和密码
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.4.11)此时做为物理机的TestRhel7此时便已经迁移到了咱们KVMhost主机的虚拟机上了,设置好网卡、硬盘、显示的相关协议后,由物理机迁移过来的虚拟机即可以正常的启动了。
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V工具


(3.5)V2V
(3.5.1)V2V(Virtual-to-Virtual)迁移是在虚拟机之间移动操做系统和数据,照顾主机级别的差别和处理不一样的虚拟硬件。虚拟机从一个物理机上的VMM迁移到另外一个物理机的VMM,这两个VMM的类型能够相同,也能够不一样。如VMware迁移到KVM,KVM迁移到KVM。能够经过多种方式将虚拟机从一个VM Host系统移动到另外一个VM Host系统
(3.5.2)如今咱们准备完成的V2V迁移的拓扑图以下所示,被迁移的虚拟机是vmware环境中的一台rhel7.1的虚拟机,虚拟化环境中使用的宿主机是rhel6.6的系统,其中rhel7.1的虚拟机是TestRhel7,rhel6.6主机是KVMhost。咱们须要将TestRhel7做为虚拟机迁移到KVMhost宿主机中做为虚拟机运行。
注意:若是是要把物理机的Windows系统P2V到KVM里的话,不要忘记了要在Windows系统安装半虚拟化驱动
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.5.2)其中vmdk文件是TestRhel7虚拟机的硬盘文件,vmx文件是TestRhel7虚拟机的配置文件,咱们将这两个文件拷贝到KVMhost宿主机中
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.5.3)首先咱们要将vmware的硬盘文件转换成KVM所能读取的硬盘格式。
# qemu-img convert -O qcow2 -f vmdk TestRhel7.vmdk TestRhel7.qcow2
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.5.4)因为vmware虚拟机的配置文件的格式是文本的格式,一行一个条目,而KVM虚拟机的配置文件的格式是xml格式,两种配置文件不通用,因此咱们须要把vmware的配置文件转换成KVM所能读懂的配置文件,咱们使用virt-goodies_0.4.tar.gz软件,找到vmware2libvirt可执行文件,并生成TestRhel7.xml文件。
注意:故障排错,须要将TestRhel7.xml和TestRhel7.vmdk放在同一个文件夹里而后执行转换xml文件的操做
# ./vmware2libvirt -f /root/TestRhel7.vmx > /root/TestRhel7.xml
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.5.5)修改一下名称为v_TestRhel7,将模拟器的值修改成/usr/libexec/qemu-kvm,同时存储须要设置磁盘的格式为vda,且硬盘的位置为/var/lib/libvirt/images/TestRhel7.qcow2
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.5.6)接着将TestRhel7.xml配置文件拷贝到/etc/libvirt/qemu的目录中,将TestRhel7.qcow2的硬盘文件拷贝到存储池中,而后建立迁移到KVMhost宿主机中的虚拟机v_TestRhel7
# virsh define TestRhel7.xml---此处指的是文件名称
# virsh start v_TestRhel7---此处指的是虚拟机的名称
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
(3.5.7)而后将v_TestRhel7虚拟机的硬盘格式更改成qcow2格式,而后启动虚拟机,此时虚拟机即可以正常的启动了。
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2V
KVM虚拟化技术详解(三)--guestos资源限制及P2V,V2Voop

—————— 本文至此结束,感谢阅读 ——————测试

相关文章
相关标签/搜索