KVM命令管理虚拟机

1、KVM基本功能管理

  • 简要介绍KVM中经常使用的基本功能管理命令(CentOS7.4是宿主机中安装的虚拟机);
1)、virsh -h       #查看命令帮助

2)、ls /etc/libvirt/qemu       #查看KVM的配置文件存放目录(虚拟机系统实例配置文件的文件名为.xml)

3)、virsh list     #查看虚拟机状态;只查看运行的虚拟机状态

4)、virsh list --all       #查看所有虚拟机状态;包括运行的与关闭的

5)、virsh shutdownCentOS7.4      #虚拟机关机

6)、virsh start CentOS7.4         #虚拟机开机

7)、virsh create /etc/libvirt/qemu/CentOS7.4.xml      #通过配置文件启动虚拟机系统实例

8)、virsh suspend CentOS7.4       #挂起虚拟机

9)、virsh resume CentOS7.4        #恢复虚拟机

10)、virsh autostartCentOS7.4    #配置虚拟机实例伴随宿主机自动启动;此命令会创建/etc/libvirt/qemu/autostart/目录,目录内容为开机自动启动的系统

11)、Vvirsh dumpxml CentOS7.4 > /etc/libvrit/qemu/test01.xml      #导出虚拟机配置

12)、virsh undefine CentOS7.4         #删除虚拟机;删除虚拟机之前需要关闭虚拟机,配置文件会被删除,但磁盘文件不会被删除

13)、virsh defineCentOS7.4.xml       #重新定义虚拟机;需要通过备份文件重新定义虚拟机,将导出的test01.xml重命名为CentOS7.4.xml

14)、vim /etc/libvirt/qemu/CentOS7.4.xml   #通过其配置文件修改其配置信息,如:内存大小、磁盘大小

15)、virsh edit CentOS7.4      #等同于打开配置文件修改

2、KVM文件管理

  • 通过文件管理可以查看、修改、复制虚拟机的内部文件。

  • (1)、转换raw格式磁盘文件至qcow2格式

qemu-img info /abc/CentOS7.4 #查看当前磁盘格式

virsh shutdown CentOS7.4 #关机

qemu-img convert -f raw -O qcow2 /abc/CentOS7.4.img /abc/CentOS7.4.qcow2 #磁盘转换成qcow2格式

  • (2)、修改CentOS7.4的xml配置文件

virsh edit CentOS7.4

  • (3)、YUM安装libgusetfs-tools后产生的命令行工具可直接读取qcow2格式的磁盘文件

virt-cat -a /abc/CentOS7.4.qcow2 /etc/hostname #查看虚拟机主机名

virt-df -h CentOS7.4 #查看虚拟机的磁盘信息

virt-edit -a /abc/CentOS7.4.qcow2 /etc/resolv.conf #编辑DNS客户机配置文件;用法与vim基本一致

3、虚拟机快照

virsh start CentOS7.4

virsh snapshot-create CentOS7.4 #创建快照

virsh snapshot-current CentOS7.4 #查看快照版本信息

virsh snapshot-list CentOS7.4 #查看快照信息

virsh snapshot-revert CentOS7.4 1533807764 #恢复虚拟机至1533807764

virsh snapshot-delete CentOS7.4 1533807829 #删除快照

KVM性能优化

  • KVM为什么要调优:
  • 性能的耗损是关键。KVM采用全虚拟化技术,全虚拟化要有一个软件来模拟硬件层,固有一定的耗损,特别是I/O,因此需要优化。

1、CPU优化

  • 要考虑CPU的数量问题,所有guestcpu的总数目不超过物理机CPU的总数即可。

2、内存优化

    1. 、KSM(相同页合并)开启KSM会将相同的内存合并
  • 内存分配的最小单位是 page(页面),默认大小是4KB。可以将host机内容相同的内存合并,以节省内存的使用,特别是在虚拟机操作系统都一样的情况下,肯定会有很多内容相同的内存值,开启了KSM,则会将这些内存合并为一个,当然这个过程会有性能损耗,所有开启与否,需要考虑使用场景。

cd /sys/kernel/mm/ksm/ #这个目录可查看内存页共享的情况

ll #查看;pages_shared 记录了KSM共享的总页面数;pages_sharing 文件中记录了当前共享页面数

echo 1 > run #临时开启KSM;或者可以在/etc/rc.local 添加 echo 1 > /sys/kernle/mm/ksm/ run让KSM开机自运行

cat run #查看KSM是否开启 0为关闭 1为开启

echo 1000 > pages_to_scan #决定每次查看多少个页面;默认100;最大不超过2000;越大越好

  • 2)、对内存设置限制

  • 如果我们有多个虚拟机,为了防止某个虚拟机无节制地使用内存资源,导致其他虚拟机无法正常使用,就需要对内存的使用进行限制。

virsh memtune CentOS7.4 #查看虚拟机CentOS7.4内存限制

virsh memtune CentOS7.4 --hard-limit 1024000 --live #设置强制最大内存100MB;在线生效

3、大页后端内存

cat /proc/meminfo #查看内存信息,无可用大页

echo 25000 > /proc/sys/vm/nr_hugepages #指定大页需要的内存页面数,临时生效;(sysctl -w vm.nr_hugepages=25000 #永久生效)

cat /proc/meminfo | grep HugePage

  • 关闭虚拟机,编辑虚拟机XML配置文件使用大页来分配内存

virsh destroy CentOS7.4

vim /etc/libvirt/qemu/CentOS7.4.xml

<domain type='kvm'>
  <name>CentOS7.4</name>
  <uuid>0bfbdbaa-cf1d-4e8a-bf0d-6db12988de14</uuid>
  <memory unit='KiB'>2097152</memory>
  <currentMemory unit='KiB'>2097152</currentMemory>
  <memoryBacking><hugepages/></memoryBacking>               #添加,使用大页
  <vcpu placement='static'>1</vcpu>

mount -t hugetlbfs /dev/hugepages/ #挂载hugetlbfs文件系统

systemctl restart libvirtd.service #重启服务

virsh start CentOS7.4 #开启虚拟机

3、I/O优化

  • 在实际的生产环境中,为了米面过度消耗磁盘资源而对其他的虚拟机造成影响,我们希望每台虚拟机对磁盘资源的消耗是可控的,比如多个虚拟机往硬盘中写数据,谁可以优先写,就可以调整I/O的权重weight,权重越高写入磁盘的优先级越高。
  • 对磁盘I/O控制方式有两种方式:
  • 1)、在整体中的权重,范围在100~1000.
  • 2)、限制具体的I/O.

virsh blkiotune CentOS7.4 #查看当前虚拟机权重状态

virsh blkiotune CentOS7.4 --weight 500 #通过命令修改权重为500

4、系统优化工具tuned/tuned-adm

  • tuned是服务端程序,用来监控和收集系统各个组件的数据,并依据数据提供的信息动态调整系统设置,达到动态优化系统的目的。
  • tuned-adm是客户端程序,用来和tuned打交道,用命令行的管理方式和配置tuned/tuned-adm,提供了一些预先配置的优化方案可直接使用。

yum install tuned -y

service tuned start #启动服务

tuned-adm active #查看当前优化方案

tuned-adm list