libvirt架构概述:
libvirt是用来管理虚拟机或虚拟化功能的软件集合,主要包括:libvirt API,libvirtd进程和virsh工具集三部分。最初的目的是为不同的hypervisor提供统一的管理接口。
libvirtd该后台进程主要实现以下功能:
(1)远程代理
所有remote client发送来的命令,由该进程监测执行
(2)本地环境初始化
libvirt服务的启停,用户connection的响应等
(3)根据环境注册各种Driver(qemu, xen, storage…)的实现
不同虚拟化技术以Driver的形式实现,由于libvirt对外提供的是统一的接口,
所以各个Driver就是实现这些接口,即将Driver注册到libvirt中。
如果libvirtd服务停止运行,那么你将不能管理虚拟机,也就是不能使用virt-manager等工具来管理虚拟机。
虚拟机的所有配置是放置在一个xml文件中,位置在/etc/libvirt/qemu/目录中
libvirt的xml文件分为几个重要部分:
虚拟机整体信息
系统信息
硬件资源特性
突发事件处理
虚拟磁盘(单个或者多个)
虚拟光盘(可选)
虚拟网络(单个或者多个)
vnc/spice配置
详细可以查看 http://libvirt.org/formatdomain.html
使用virsh来管理虚拟机
virsh是使用libvirt management API构建的管理工具
virsh的名称的含义是virtualization shell。它有两种工作模式:
立即模式, 交互模式
virsh常用命令
attach-device 使用XML文件中的设备定义在虚拟机中添加设备
attach-disk 在虚拟机中附加新磁盘设备
attach-interface 在虚拟机中附加新网络接口
create 从XML配置文件生成虚拟机并启动新虚拟机
define 为虚拟机输出XML配置文件
destroy 强制虚拟机停止
detach-device 从虚拟机中分离设备,使用同样的XML描述作为命令attach-device
detach-disk 从虚拟机中分离磁盘设备
detach-interface 从虚拟机中分离网络接口
domblkstat 显示正在运行的虚拟机的块设备统计
domid 显示虚拟机ID
domifstat 显示正在运行的虚拟机的网络接口统计
dominfo 显示虚拟机信息
domname 显示虚拟机名称
domstate 显示虚拟机状态
domuuid 显示虚拟机UUID
dumpxml 输出虚拟机XML配置文件
help 打印基本帮助信息
list 列出所有虚拟机
miqrate 将虚拟机迁移到另一台主机中
nodeinfo 有关管理程序的输出信息
quit 退出这个互动终端
reboot 重新启动虚拟机
restore 恢复以前保存在文件中的虚拟机
resume 恢复暂停的虚拟机
save 将虚拟机当前状态保存到某个文件中
setmaxmem 为管理程序设定内存上限
setmem 为虚拟机设定分配的内存
setvcpus 修改为虚拟机分配的虚拟CPU数目
shutdown 关闭某个虚拟机
start 启动未激活的虚拟机
suspend 暂停虚拟机
undefine 删除与虚拟机关联的所有文件
vcpuinfo 显示虚拟机的虚拟CPU信息
vcpupin 控制虚拟机的虚拟CPU亲和性
version 显示virsh版本
ctrl+] 退出虚拟机
配置文件启动虚拟机系统实例
virsh create /etc/libvirt/qemu/vmtest3.xml
域 vmtest3 被创建(从/etc/libvirt/qemu/vmest3.xml)
配置虚拟机实例伴随宿主机自动启动
virsh autostart vmtest3
上述命令将创建/etc/libvirt/qemu/autostart/目录,里面内容为开机自动启动的系统
关闭自启动
virsh autostart --disable vmtest3
导出虚拟机配置
virsh dumpxml vmtest3 > /etc/libvirt/qemu/vmtest3-bak.xml
删除虚拟机
virsh shutdown vmtest3
virsh undefine vmtest3
(配置文件被删除,但是磁盘文件不会删除)
通过备份的配置文件重新定义虚拟机:
mv /etc/libvirt/qemu/vmtest3-bak.xml /etc/libvirt/qemu/vmtest3.xml
virsh define /etc/libvirt/qemu/vmtest3.xml
定义域 vmtest3(从 /etc/libvirt/qemu/vmtest3.xml)
修改虚拟机配置信息
vim /etc/libvirt/qemu/vmtest3.xml
或
virsh edit vmtest3
从vmtest3克隆岛vmtest4
virt-clone -o vmtest3 -n vmtest4 -f /kvm-vm/vm0test4.qcow2
注:首先先关闭虚拟机
快照实际上做的是虚拟机的XML配置文件,默认快照XML文件在/var/lib/libvirt/qemu/snapshot/虚拟机名/下,快照只支持qcow2磁盘格式的系统。
对虚拟机vmtest3做快照
virsh snapshot-create-as vmtest3 snapshot-name(起个名字)
查看快照信息
virsh snapshot-list vmtest3
查看当前快照信息
virsh snapshot-current vmtest3
恢复虚拟机状态到snapshot-name
virsh snapshot-revert vmtest3 snapshot-name
删除快照
virsh snapshot-delete vmtest3 snapshot-name