KVM虚拟化

介绍

kvm–全称是基于内核的虚拟机(kernel-based Virtual Machine),基于内核的虚拟化技术,实际就是嵌入一个虚拟化模块,通过优化内核来使用虚拟技术。

libvirt 是管理虚拟机和其他虚拟化功能的软件,比如存储管理、网络管理等。由一个守护程序libvirtd和一个命令行工具virsh.

kvm虚拟机由kvm\qemu\libvirtd组成

virsh\virt-manager\virt-viewer\virt-install是libvirt用户态的工具
rpm -qa | egrep '(libvirt|virt-install|qemu-kvm)' 查看是否安装
/usr/libexec/qemu-kvm --version   查看qemu版本
systemctl start|status|enable|restart libvirtd  libvirtd服务相关命令

Command

dmesg |grep kvm ## 查看内核加载
lsmod | grep kvm ## 查看KVM模块是否被正确加载
grep -E '(vmx|svm)' /proc/cpuinfo ## 查看是否有回显信息,发现是有的,说明是支持虚拟化

  • 常用command:
virsh dumpxml vm_name | grep mac  查看mac
arp -ne | grep 52:54:00:5a:a9:9b 查看对应mac的IP地址
virsh list --all  查看所有虚机
virsh start vmhost  开启vmhost虚机
virsh shutdown vmhost 关闭虚机,正常关机,会挨个关掉虚机中已开启的服务
virsh destroy vmhost    来强制关闭虚拟机,拔电源关机
virsh dominfo VM-Name 查看宿主机信息
virsh list 查看running中运行的
virsh reboot vm-1  重启虚拟机
virsh undefine centos74  删除虚机
[root@localhost ~]# virsh undefine centos7.0   ##centos7.0 已经被取消定义
#结果: centos7.0 的配置文件已经没有了
virsh help domblklist              //列出指定虚拟机磁盘信息
[root@node1 ~]#virsh domblklist Vm_Name
virsh help domiflist           //列出指定虚拟机上的所有网卡
[root@node1 ~]# virsh domiflist Vm_Name

virsh help domifaddr   ###获取指定虚拟机上的ip地址
[root@node1 ~]# virsh domifaddr Vm_Name

virsh help domifstat  ##统计指定虚拟机上的指定网卡状态
virsh domifstat centos7 vnet1    ###查看指定虚拟机指定网卡状态
virsh dominfo centos7 ##获取指定虚拟机的简要信息
virsh help dommemstat ##获取指定虚拟机内存相关状态信息
[root@node1 ~]# virsh dommemstat Vm_Name

virsh help domstate  ##获取指定虚拟机的状态信息
[root@node1 ~]# virsh domstate Vm_Name
[root@node1 ~]#virsh domblklist centos7          //列出指定虚机磁盘信息    
[root@node1 ~]#virsh domblkinfo centos7 vda     //指定虚机指定磁盘的大小
root@node1 ~]#virsh domblkinfo centos7 vda --human   //人性化显示
virsh vcpucount centos  ##vcpucount 查看虚拟机 vcpu 的配置数量
virsh vcpuinfo cirros  ##vcpuinfo 查看 vcpu 详细信息; vcpu1 绑定到物理 cpu3 上
VCPU:           1
CPU:            3
State:          running
CPU time:       1.0s
CPU Affinity:   yyyy

[root@localhost ~]# ls /etc/libvirt/qemu/
autostart centos7.1 networks
#现在没有运行的虚拟机

#恢复删除了虚拟机:
[root@kvm images]# virsh define nebula1.xml
查看 KVM 的配置文件存放目录
kvm的配置文件:/etc/libvirt/qemu/
[root@localhost ~]# ll /etc/libvirt/qemu/
#用 ps -ef |grep qemu可以看到正在运行的虚拟机的磁盘内容等。

kvm虚拟机只要磁盘文件和xml配置文件就可以创一台新的虚机。只要有磁盘文件+配置文件,虚拟机就可以迁移到任何电脑上, 将配置文件导入, 就可以迁移到其他主机上了。
[root@kvm images]# virsh define nebula1.xml ##基于配置文件,创建虚拟机
[root@centos74-0911 ~]# virsh dumpxml centos74 >centos74back.xml ##备份

#将这个配置文件写入到一个文件里,就可以看到内存,cpu,磁盘等情况。
[root@kvm images]# virsh dumpxml centos74 >>centos74111.xml

virsh define centos74back.xml 导入配置
修改配置文件:virsh edit centos74
[root@kvm ~]#virsh vncdisplay centos74 ## 查看vnc端口
[root@kvm ~]#virsh console centos68 ## console登录
[root@kvm ~]# virsh domifaddr cic-2_vm
Name MAC address Protocol Address

[root@localhost ~]# virsh autostart centos7.0 # centos7.0标记为宿主机开机,虚机自动开机
[root@kvm autostart]# virsh autostart --disable centos7.0 ##取消自动开机
Domain centos7.0unmarked as autostarted

[root@kvm ~]# cd /etc/libvirt/qemu/autostart
[root@kvm autostart]# ls ###这个目录下没内容了,实质上就是删除了软链接
[root@kvm autostart]#

##虚拟机处于paused暂停状态,一般情况下是被admin运行了virsh suspend才会处于这种状态, 但是仍然消耗资源,只不过不被超级管理程序调度而已。
[root@localhost ~]# virsh suspend centos7.0 ## centos7.0 被挂起
[root@localhost ~]# virsh resume centos7.0 ##恢复被suspend的虚机

##虚拟机关闭后才能重命名
[root@localhost ~]# virsh shutdown centos7.0
[root@kvm images]# virsh domrename centos7.0 web-blog

CPU pinging

CPU Pinning(CPU 钉选)在KVM中运行的所有虚拟机在主机操作系统中作为用户空间的任务运行,通过钉选操作,可以将某一vCPU(虚拟CPU)与物理CPU进行绑定,可以看成是线程绑定到某一物理CPU中。
CPU Pinning是一种将虚拟机实例与物理CPU核心之间进行绑定的技术。

virsh vcpuinfo+虚拟机ID  #虚拟机CPU使用情况
virsh capabilities命令查看物理机CPU的详细信息,包括CPU个数等
virsh vcpupin 3 0 6-8 #Id为3的虚拟机的vCPU0钉选到物理CPU编号为6-8
virsh vcpupin 3 1 30-32 #vCPU1钉选到物理CPU为30-32上面
/etc/libvirt/qemu/centos74.xml
  <vcpu vcpuset='4,28' >2</vcpu><!--这里原来的内容有placement='static' 我们把它去掉,添加上vcpuset='4,28'表示将该虚拟机的vcpu钉选到物理CPU为4和28的上面-->
    <cputune>
      <vcpupin vcpu='0' cpuset='4'/><!--将vCPU 0钉选到物理CPU 4上面-->
      <vcpupin vcpu='1' cpuset='28'/><!--将vCPU 1钉选到物理CPU 28上面-->
    </cputune>
    <numatune><!--这里的配置是实现内存的钉选,表示将虚拟机使用的内存钉选到node0上面-->
      <memory mode='strict' nodeset='0'/>
    </numatune>
virsh freecell --all ##使用virsh freecell命令查看可以当前空闲内存
virsh emulatorpin 21 ##使用emulatorpin可以查看虚拟机可以使用那些物理逻辑CPU
virsh emulatorpin 21 26-31 --live ##强制让虚拟机只能在26-31这些cpu之间调度
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值