安装kvm支持库,qemu也是一款虚拟软件,但是只在kvm里虚拟网络、磁盘等io信息
yum install -y qemu-kvm qemu-key-tools virt-manager libvirt virt-install   python-virtinst bridge-utils

创建磁盘 -f 指定磁盘格式为raw
qemu-img create -f raw /opt/Centos-7-x86_64.raw 10G

开机自启动
systemctl enable libvirtd.service
开启libvirtd管理工具
systemctl start libvirtd.service
查看状态
systemctl status libvirtd.service

创建一台kvm虚拟机,--name指定虚拟机名字为CentOS-7-x86_64,--virt-type指定虚拟机类型为kvm(也可以指定xen等),cdrom镜像光盘路径为/opt/CentOS-7.iso,--disk 指定path路径为/opt/Centos-7-x86_64.raw,network为默认
virt-install --name CentOS-7-x86_64 --virt-type kvm --ram 1024 --cdrom=/opt/CentOS-7.iso --disk path=/opt/Centos-7-x86_64.raw --network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
查看kvm安装状态
ps aux |grep kvm
cd /etc/libvirt/qemu/
查看创建虚拟机配置文件,不能手动更改,需要更改的话需要使用virsh edit CentOS-7-x86_64
cat CentOS-7-x86_64.xml 

查看运行中的kvm虚拟机(只显示运行中的)
virsh list
查看所有状态的虚拟机(包括关闭的)
virsh list --all

通过查看过滤dns进程,发现宿主机会自动启动dhcp服务
ps -aux |grep dns
查看分配dhcp配置文件
cat /var/lib/libvirt/dnsmasq/default.conf
编辑虚拟机配置文件
virsh  edit CentOS-7-x86_64
停止kvm虚拟机
virsh  shutdown CentOS-7-x86_64
启动创建的虚拟机
virsh  start CentOS-7-x86_64
动态设置虚拟机cpu核数,在虚拟机配置文件中修改配置项4,最大使用4个,placement设置为auto,current设置实际使用几核
virsh setvcpus CentOS-7-x86_64 2 --live
设置完之后得关闭kvm虚拟机,重启生效
virsh shutdown CentOS-7-x86_64
动态设置cpu核数为5个,但是会报错,因为最大设置为4个
virsh setvcpus CentOS-7-x86_64 5 --live
virsh start CentOS-7-x86_64

编辑虚拟机配置文件,配置最大使用内存2048576,当前使用内存1048576
virsh  edit CentOS-7-x86_64
重启kvm虚拟机
virsh  shutdown CentOS-7-x86_64
virsh  start CentOS-7-x86_64
动态调节内存大小
virsh qemu-monitor-command --help
virsh qemu-monitor-command CentOS-7-x86_64 --hmp --cmd info
查看当前分配虚拟机的内存
virsh qemu-monitor-command CentOS-7-x86_64 --hmp --cmd info balloon
动态设置虚拟机的内存
virsh qemu-monitor-command CentOS-7-x86_64 --hmp --cmd  balloon 600
virsh qemu-monitor-command CentOS-7-x86_64 --hmp --cmd  balloon 2000

#硬盘
全镜像模式 :
    raw格式--
        --一次性全部分配,
        --写入比较快
        --方便转换成其他格式
        --性能最优的
        压缩、快照是不支持的

稀疏模式
    qcow2
        --支持压缩、快照
        --更小的存储空间,用多少占多少
qemu-img操作磁盘动作

kvm网络默认是nat的,生产下最多用的是网桥的

添加一个网桥br0
brctl addbr br0
显示当前网桥
brctl show

把eth0加入到网桥br0中,执行完这个命令后,网络会断,建议直接 用&&进行执行
brctl addif br0 eth0
删除eth0
ip addr del dev eth0 192.168.159.128/24
给br0设置ip,并打开
ifconfig br0 192.168.159.128/24 up

彻底删除kvm虚拟机
virsh undefine
如果想恢复,要及时备份虚拟机XML配置文件

导出XML文件,使用一下命令
virsh save-image-dumpxml