kvm


kvm是什么

Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM之一。


一、虚拟机管理

启动虚拟机

virsh start <虚拟机名称>

关闭虚拟机

virsh shutdown <虚拟机名称>

重启虚拟机

virsh reboot <虚拟机名称>

查看kvm虚拟机状态

virsh list

查看所有虚拟机状态

virsh list --all

强制关闭虚拟机

virsh destroy <虚拟机名称>

挂起虚拟机

virsh suspend <虚拟机名称>

恢复虚拟机挂起状态

virsh resume <虚拟机名称>

删除虚拟机(不删除文件)

virsh undefine <虚拟机名称>

删除虚拟机并删除磁盘文件

virsh undefine <虚拟机名称> --storage 目标文件(用逗号分开的目标或者源路径
列表)(查看 domblklist)

删除虚拟机并删除所有磁盘文件

virsh undefine <虚拟机名称> --remove-all-storage

二、查看系统类型

osinfo-query os

三、安装

1、安装centos

virt-install --os-variant rhel7
–name rhel7_back
–memory 4096,maxmemory=4096
–vcpus 4,maxvcpus=4
–network bridge=br1,model=virtio
–disk device=disk,path=/data8/zhangdong,format=qcow2,size=20,bus=virtio,cache=writeback,io=threads
–location /opt/CentOS-7-x86_64-Minimal-1804 (1).iso
–graphics vnc,port=-1
–autostart

2、安装windows

virt-install --virt-type kvm
–os-variant=win2k12r2
–name win2012-test
–memory 8192,maxmemory=8192
–vcpus 4,maxvcpus=4
–cpu core2duo,+require,disable=vmx
–network bridge=br1,model=rtl8139
–disk device=disk,path=/home/lib/libvirt/images/win2012-test.disk01,format=qcow2,size=40,bus=ide,cache=writeback,io=threads
–disk device=disk,path=/mnt/images/win2012-test.disk01,format=qcow2,size=100,bus=ide,cache=writeback,io=threads
–cdrom /data/cn_windows_server_2012_r2_with_update_x64_dvd_6052725.iso
–graphics vnc,port=-1
–autostart

四、kvm 虚拟机 重命名

1、强制关闭虚拟机<原虚拟机名为back><修改后名称为rhel6>

virsh destroy back

2、导出虚拟机xml配置文件

cd /etc/libvirt/qemu/
virsh dumpxml back > rhel6.xml
修改rhel6.xml
vim rhel6.xml

3、修改开头的back
4、删除虚拟机,不删除文件

virsh undefine back

5、注册新的虚拟机

virsh define rhel6.xml

五、kvm虚拟机随物理机开机启动

virsh autostart <虚拟机名称>
#禁止开机启动
virsh autostart <虚拟机名称> --disable

六、快照管理

克隆虚拟机

virt-clone -o <虚拟机名称> -n <新虚拟机名称> -f /var/lib/libvirt/images/test4.qcow2
#命令帮助信息
virt-clone --help
#克隆完成后需要修改IP、HOSTNAME、centos6需要删除/etc/udev/rule.d/70-*-net文件并重启
#virt-clone -f指定的文件不要事先创建,如果有多个磁盘文件就用多个-f选项 如
virt-clone -o <虚拟机名称> -n <新虚拟机名称> -f /home/lib/libvirt/images/test4.qcow2 -f /mnt/images/test4-add1.qcow2

创建快照

virsh snapshot-create-as <虚拟机名称> --name <快照名称> --description “this is a test snapshot”
#查看帮助信息
virsh snapshot-create-as --help

使用xml生成快照

#创建快照,以随机数字密码
virsh snapshot-create test1

查看快照列表

virsh snapshot-list <虚拟机名称>

查看当前快照的上一级快照

virsh snapshot-parent <虚拟机名称> --current

编辑快照

virsh snapshot-edit <虚拟机名称> --snapshotname <快照名>

查看镜像文件信息

qemu-img info <虚拟机镜像>

恢复快照

virsh snapshot-revert <虚拟机名称> --snapshotname <快照名>

删除快照

virsh snapshot-delete <虚拟机名称> --snapshotname <快照名>

七、vcpu管理

建议关机情况下设置(–live设置运行的域)

设置最大vcpu数(只能用–config,下次运行生效)

virsh setvcpus <虚拟机名称> 4 --maximum --config

使用vcpu数

virsh setvcpus <虚拟机名称> 4 --config

查看vcpu信息

virsh vcpuinfo <虚拟机名称>

查询域 vcpu 亲和性

virsh vcpupin <虚拟机名称>

显示本机vcpu最大值

virsh maxvcpus

减少vcpu

virsh setvcpus <虚拟机名称> 1 --config
virsh setvcpus <虚拟机名称> 1 --maximum --config

八、内存管理

建议关机情况下设置(–live设置运行的域)

设置最大内存限制值

virsh setmaxmem <虚拟机名称> [–size] 2G --current

设置内存分配

virsh setmem <虚拟机名称> [–size] 2G --current

减少内存

virsh setmem <虚拟机名称> [–size] 512M --current
virsh setmaxmem <虚拟机名称> [–size] 512M --current

九、硬盘管理

创建磁盘文件

#qcow2是文件类型,test1-add1.qcow2是磁盘文件,5G是大小
qemu-img create -f qcow2 /var/lib/libvirt/images/test1-add1.qcow2 5G

创建磁盘XML文件(注意,不要和现有文件重名)

virsh attach-disk <虚拟机名称>
–source /var/lib/libvirt/images/test1-add2.qcow2
–target vdd
–sourcetype file
–type disk
–driver qemu
–subdriver qcow2
–cache none
–targetbus virtio
–print-xml > /etc/libvirt/qemu/test2-add.xml

从XML文件附加设备

#–persistent持久生效
virsh attach-device <虚拟机名称> /etc/libvirt/qemu/test2-add.xml --persistent

卸载磁盘设备

分离XML配置设备

virsh detach-device <虚拟机名称> /etc/libvirt/qemu/test2-add.xml --persistent

删除文件

rm -f /etc/libvirt/qemu/test2-add.xml
rm -f /var/lib/libvirt/images/test1-add1.qcow2