----本文修改整理自网络,非本人原创。
查看虚拟机信息
查看正在运行的虚拟机
# virsh list Id Name State ---------------------------------------------------- 2 Centos running
(可使用--all参数查看所有虚机状态)
查看虚拟机基本信息
# virsh dominfo Centos Id: 2 Name: Centos UUID: b7b54aa3-138d-4975-81e6-263bfbf1b929 OS Type: hvm State: running CPU(s): 1 CPU time: 73.3s Max memory: 1048576 KiB Used memory: 1048576 KiB Persistent: yes Autostart: disable Managed save: no Security model: none Security DOI: 0
查看所有虚拟机运行状态
# virt-top virt-top 03:37:19 - x86_64 2/2CPU 3292MHz 2047MB 0.7% 1 domains, 1 active, 1 running, 0 sleeping, 0 paused, 0 inactive D:0 O:0 X:0 CPU: 0.7% Mem: 1024 MB (1024 MB by guests) ID S RDRQ WRRQ RXBY TXBY %CPU %MEM TIME NAME 2 R 0 0 0 0 0.7 50.0 1:15.43 Centos
(virt-top可从宿主机查看所有VM运行状态。工具安装yum install virt-top)
查看虚拟机文件系统状态
# virt-df -h Centos Filesystem Size Used Available Use% Centos:/dev/sda1 497M 94M 402M 19% Centos:/dev/centos/root 3.1G 1.2G 1.9G 39%
(virt-df可从宿主机查看VM的文件系统状态。安装命令yum install libguestfs-tools)
启动和关闭虚拟机
# virsh shutdown Centos Domain Centos is being shutdown (关闭虚拟机) # virsh start Centos Domain Centos started (启动虚拟机) # virsh autostart Centos Domain Centos marked as autostarted (激活虚机自动启动) # virsh autostart --disable Centos Domain Centos unmarked as autostarted (取消虚机自动启动)
克隆虚拟机
# virsh suspend Centos Domain Centos suspended (挂起克隆源虚拟机。主要是为了完全关闭数据和网络I/O,保证数据的静态) # virt-clone --original Centos --name Centos01 --file /kvmdir/Centos01 参数解释: --original 克隆的源主机 --name 克隆的目标主机 --file 克隆目标主机的文件路径 # virsh resume Centos Domain Centos resumed (恢复克隆源虚拟机) # virsh start Centos01 Domain Centos01 started (启动克隆目标主机) # virsh list Id Name State ---------------------------------------------------- 4 Centos running 5 Centos01 running (克隆成功,需要注意的是得登录到Centos01主机里面修改主机名和IP后才能远程访问)
CentOS7会有点问题,需要修改xxx.xml文件,然后重新定义虚拟机
可以直接根据xml文件创建虚拟机
cd /etc/libvirt/qemu
复制一个现有的xml文件,修改内容,
virsh create xxx.xml #启动虚拟机
需要给新的虚拟机复制img文件,把源img文件复制一份即可
virsh define xxx.xml #定义虚拟机
删除虚拟机
# virsh destroy Centos01 Domain Centos01 destroyed (摧毁虚拟机) # virsh list --all Id Name State ---------------------------------------------------- 4 Centos running - Centos01 shut off # virsh undefine Centos01 Domain Centos01 has been undefined (取消虚拟机的定义) # virsh list --all Id Name State ---------------------------------------------------- 4 Centos running # rm -f /kvmdir/Centos01 (删除虚拟机在KVM宿主机的文件)
虚拟机资源管理
MEM资源修改
在设置Used Memory的最终数值小于Max Memory的情况下,可以使用setmem在线进行内存配置的修改。
# virsh dominfo Centos |grep memory Max memory: 1048576 KiB Used memory: 1048576 KiB (查看当前内存配置) #virsh setmem Centos 512428 (需要注意的是内存数值的单位为KB) # virsh dominfo Centos |grep memory Max memory: 1048576 KiB Used memory: 512428 KiB (内存修改成功)
在设置Used Memory的最终数值大于Max Memory的情况下,需要关闭虚拟机并修改虚拟机定义文件。
# virsh shutdown Centos Domain Centos is being shutdown (关闭虚拟机) # virsh edit Centos Domain docker01 XML configuration edited. (编辑虚拟机的XML文件) 文件变更内容: <memory unit='KiB'>1048576</memory> ###虚拟机支持使用的最大内存 <currentMemory unit='KiB'>1048576</currentMemory> ###虚拟机当前可使用的内存 # virsh create /etc/libvirt/qemu/Centos.xml Domain Centos created from /etc/libvirt/qemu/Centos.xml (使用新的XML文件启动虚拟机) # virsh dominfo Centos |grep memory Max memory: 2097152 KiB Used memory: 1048576 KiB (内存修改成功)
CPU资源修改
# virsh dominfo Centos |grep -i cpu CPU(s): 1 CPU time: 40.1s (查看当前CPU配置) # virsh shutdown Centos Domain Centos is being shutdown (关闭虚拟机)
# virsh edit Centos Domain Centos XML configuration edited. <vcpu placement='static'>2</vcpu> (将vCPU的数量设置为需要的数值) # virsh create /etc/libvirt/qemu/Centos.xml Domain Centos created from /etc/libvirt/qemu/Centos.xml # virsh dominfo Centos |grep -i cpu CPU(s): 2 CPU time: 4.1s (CPU修改成功)
DISK资源修改
DISK资源的配置只能在停止续集的情况下修改
# virsh shutdown Centos Domain Centos is being shutdown (关闭虚拟机) # dd if=/dev/zero of=/kvmdir/test-add01.qcow2 bs=1M count=4096 4096+0 records in 4096+0 records out 4294967296 bytes (4.3 GB) copied, 58.2544 s, 73.7 MB/s (在KVM宿主机创建一块裸设备) # qemu-img convert -f raw test-add01.qcow2 -O qcow2 test-add01.qcow2 (将raw设备转换成KVM虚拟机识别的qcow2设备) # virsh edit Centos Domain Centos XML configuration edited. 文件变更内容: <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/kvmdir/test.img'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </disk> <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/kvmdir/test-add01.qcow2'/> <target dev='vdb' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </disk> (虚机本身就有一块vda的盘,按照同样的格式添加新增的vdb就行。这里需要注意的是,需要把dev参数改为vdX。另外slot参数需要检索整个XML文件,选择一个不重复的数值配置。)
# virsh create /etc/libvirt/qemu/Centos.xml
Domain Centos created from /etc/libvirt/qemu/Centos.xml
(使用新的XML启动虚拟机)
# fdisk -l /dev/vdb
Disk /dev/vdb: 4294 MB, 4294967296 bytes, 8388608 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
(登录到虚机查看磁盘已经添加成功)
Kvm虚拟机创建快照
raw磁盘格式不支持快照功能,需要先转换磁盘格式
# qemu-img info centos7-node8.img 查看磁盘格式 image: centos7-node8.img file format: raw virtual size: 29G (31458328576 bytes) disk size: 29G # qemu-img convert -f raw -O qcow2 centos7-node8.img centos7-node8.img #修改磁盘格式 # qemu-img info centos7-node8.img image: centos7-node8.img file format: qcow2 virtual size: 29G (31458328576 bytes) disk size: 960K cluster_size: 65536 Format specific information: compat: 1.1 lazy refcounts: false
编辑xml文件,将磁盘类型修改为qcow2格式。
# vim centos7-node8.xml <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> #此处修改 <source file='/data/kvm-img/centos7-node8.img'/> #文件名字没有变化不修改,否则需要修改 # virsh define centos7-node8.xml #修改配置文件后需要重新定义域 定义域 centos7-node8(从 centos7-node8.xml) # virsh snapshot-create centos7-node8 #创建快照 已生成域快照 1513603416 # # virsh snapshot-list centos7-node8 #查看快照 名称 生成时间 状态 ------------------------------------------------------------ 1513603416 2017-12-18 21:23:36 +0800 shutoff # ll /var/lib/libvirt/qemu/snapshot/ #快照文件存在此目录下 总用量 0 drwxr-xr-x 2 root root 27 12月 18 21:23 centos7-node8 回复虚拟机快照之前首先要把虚拟机关闭 # virsh shutdown xxxx # virsh snapshot-rever xxxx #回复快照 xxx为版本