管理虚拟机

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文件分为几个重要部分:

<domain type='kvm'>
   虚拟机整体信息
   系统信息
   硬件资源特性
   突发事件处理
   虚拟磁盘(单个或者多个)
   虚拟光盘(可选)
   虚拟网络(单个或者多个)
   vnc/spice配置
</domain>

详细可以查看 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

KVM虚拟机克隆

从vmtest3克隆岛vmtest4

virt-clone -o vmtest3 -n vmtest4 -f /kvm-vm/vm0test4.qcow2

注:首先先关闭虚拟机

KVM虚拟机快照

快照实际上做的是虚拟机的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
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐