基本管理命令
- 列出在运行状态中的虚拟机
virsh list
- 列出所有虚拟机
virsh list --all
- 查看kvm虚拟机配置文件
virsh dumpxml 虚拟机名字
- 将vm2虚拟机的配置文件保存至vm3.xml
virsh dumpxml vm3 > /etc/libvirt/qemu/vm4.xml
- 启动
virsh start vm_name
- 挂起
virsh suspend vm_name
- 恢复
virsh resume vm_name
- 关闭 1.
virsh shutdown vm_name
2.virsh destroy vm_name
- 重启
virsh reboot vm_name
- 重置
virsh reset vm_name
- 删除虚拟机
virsh undefine vm_name
注意:虚拟机在开启的情况下undefine时无法删除的只是删除定义将配置文件删除了,不能删除磁盘文件。需要手动rm。 - 虚拟机开机自动启动
virsh autostart vm_name
- 查看开机启动的虚拟机
ls /etc/libvirt/qemu/autostart/
#此目录默认不存在,在有开机启动的虚拟机时自动创建 - 关闭开机启动
virsh autostart --disable vm_name
- 查看已启动的虚拟机ip地址
virsh domifaddr vm_name
KVM高级命令
磁盘镜像文件格式:
1. raw 原始格式,性能最好,直接占用你一开始给多少 系统就占多少 不支持快照
2. qcow2 性能上还是不如raw,但是raw不支持快照,qcow2支持快照
现在默认安装好的用的是raw格式,做快照要把它转换成qcow2格式
写实拷贝:
raw立刻分配空间,不管你有没有用到那么度空间
qcow2只是承诺给你分配空间,但是只有当你需要用空间的时候,才会给你空间。最多只给你承诺空间的大小,避免空间浪费。
cd /var/lib/libvirt/images
qemu-img create -f qcow2 test.img 5G #建立qcow2格式磁盘文件
qemu-img create -f raw test.raw 5G #建立raw格式磁盘文件
qemu-img info #查看已经创建的虚拟磁盘文件
============================================================
挂在磁盘:将虚拟机先关闭
virt-df -h -d vm2 #查看vm2的磁盘镜像分区信息
mkdir /test #创建一个挂在目录
guestmount -d vm2 -m /dev/centos/root --rw /test/ #挂载虚拟机的根分区到test目录
guestunmount /test #取消挂载
虚拟机添加设备
- 图形模式
- 注意:要关闭添加硬件的虚拟机
- 修改配置文件方式
- 给vm3添加磁盘为例,首先需要创建出要添加的磁盘;
qemu-img create -f qcow2 /var/lib/libvirt/images/vm4-1.qcow2 5G #创建一个5G的空的磁盘文件
cd /etc/libvirt/qemu/
vim vm3.xml
systemctl restart libvirtd
virsh list -all
virsh start vm3
虚拟机克隆
- 图形界面:
Applications (左上角)-----> System Tools ------>Virtual Machine Manager
关闭要克隆的虚拟机,右键点击虚拟机选择Clone - 字符终端,命令克隆
virt-clone -o vm2 -n vm6 -f /var/lib/libvirt/images/vm6.img
-o:origin-原始
-n:指定新客户机的名字
-f:为新客户机使用新的磁盘镜像文件
KVM存储配置
- 概念:kvm必须要配置一个目录当作存储磁盘镜像的目录,我们称这个目录为存储池‘
- 默认位置
/var/lib/libvirt/images
mkdir -p /data/vmfs #创建基于文件夹的存储池
virsh pool-define-as vmdisk --type dir --target /data/vmfs #定义储存池与其目录,vmdisk是存储池的名称,可自定义
virsh pool-build vmdisk #创建已定义的存储池
virsh pool-list --all #查看已定义的存储池
virsh pool-start vmdisk
virsh pool-autostart vmdisk #激活并启动启动已定义的存储池
virsh vol-create-as vmdisk vm99.qcow2 2G --format qcow2 #在存储池中创建虚拟机存储卷,vm99.qcow2是存储卷的名字
ll /data/vmfs/ -h #查看存储卷
注意:
1. KVM虚拟池主要是体现一种管理方式,可以通过挂载存储目录,lvm逻辑卷的方式创建存储池。
2. KVM存储池也要用于虚拟机迁移任务。
#存储池相关管理命令
virsh vol-delete --pool vmdisk vm99.qcow2 #在存储池中删除虚拟机存储卷
virsh pool-destroy vmdisk #取消激活存储池
virsh pool-delete vmdisk #删除存储池定义的目录/data/vmfs
virsh pool-undefine vmdisk #取消定义存储池
KVM快照
virsh snapshot-create-as vm2 vm2.snap1 #为虚拟机vm2创建一个快照(磁盘格式必须为qcow2)
qemu-img info /var/lib/libvirt/images/vm2.qcow2 #查看磁盘文件格式
virsh snapshot-list vm2 #查看某台虚拟机设备的快照
======
qemu-img create -f raw /var/lib/libvirt/images/vm2-1.raw 2G 创建一块磁盘
ll -h /var/lib/libvirt/images/vm2-1.raw
cd /etc/libvirt/qemu/
vim vm2.xml #将其添加到vm2虚拟机上面
virsh define /etc/libvirt/qemu/vm2.xml
virsh start vm2
virsh snapshot-create-as vm2 vm2.snap1
#会报错,不支持的配置:存储类型 vdb 不支持磁盘 raw 的内部快照,所以我们要进行磁盘格式的转换
qemu-img convert -O qcow2 /var/lib/libvirt/images/vm2-1.raw /var/lib/libvirt/images/vm2-1.qcow2
cd /var/lib/libvirt/images/
ll -h
qemu-img info /var/lib/libvirt/images/vm2-1.qcow2
vim /etc/libvirt/qemu/vm2.xml
virsh define /etc/libvirt/qemu/vm2.xml
virsh snapshot-create-as vm2 vm2.snap2 #创建快照
virsh shutdown vm2
virsh snapshot-revert vm2 vm2-snap3 #恢复到快照vm2-sanap3
virsh snapshot-delete --snapshotname vm2-snap3 vm2 #删除vm2-snap3