Libvirt是用于管理虚拟化平台的开源API,后台程序和管理工具。它可以用于管理KVM、Xen、VMware ESX、QEMU和其他虚拟化技术。
ibvirt是提供了一个方便的方式来管理虚拟机和其他虚拟化功能的软件的集合,如存储和网络接口管理。这些软件包括一个API库,一个守护进程(Libvirtd),和一个命令行实用程序(virsh)。
本次针对“Libvirt 命令”主要针对libvirt的命令行工具“virsh”进行记录。
Hypervisor也称虚拟机监控器(VMM),是虚拟化中的一个底层软件层,它可以虚拟化一个节点让其运行多个虚拟客户机。
Domain(域)也就是实例、客户机操作系统(Guest OS)、虚拟机(Virtual Machine),它们都是同一个概念。
virsh是使用C语言写的一个使用libvirt API的虚拟化管理工具。在使用virsh命令进行虚拟化管理操作时,可以使用两个工作模式:交互模式和非交互模式。
交互模式,是连接到相应的Hypervisor上,然后输入一个命令得到一个返回结果,知道用户使用quit
命令退出连接。
非交互模式,是直接在命令行中一个建立连接的URI之后添加需要执行的一个或多个命令,执行完成后将命令的输出结果返回到当前终端上,然后自动断开连接。
在某个节点上直接使用virsh
命令,就默认连接到本节点的Hypervisor。
virsh的最重要的功能之一就是实现对域的管理。
命令 | 功能描述 |
---|---|
list | 获取当前节点 |
domstate <ID or Name or UUID> | 获取一个域的运行状态 |
dominfo <ID> | 获取一个域的基本信息 |
domid <Name or UUID> | 根据域的名称或UUID返回域的ID值 |
domname <ID or UUID> | 根域域的ID或UUID返回域的名称 |
dommemstat <ID> | 获取一个域的内存使用情况的统计信息 |
setmen <ID> <men-size> | 设置一个域的内存大小(默认单位为KB) |
vcpuinfo <ID> | 获取一个域的vCPU的基本信息 |
vcpupin <ID> <vCPU> <pCPU> | 将一个域的vCPU绑定到某个物理CPU上 |
setvcpus <ID> <vCPU-num> | 设置一个域的vCPU的个数 |
vncdisplay <ID> | 获取一个域的VNC连接IP地址和端口 |
create <dom.xml> | 根据域的XML配置文件创建一个域(客户机) |
susped <ID> | 暂停一个域 |
resume <ID> | 唤醒一个域 |
shutdown <ID> | 让一个域执行关机操作 |
reboot <ID> | 让一个域执行重启操作 |
reset <ID> | 强制重启一个域,相当于在物理机器上按电源“reset”按钮(可能会损坏该域的文件系统) |
destroy <ID> | 立即关闭一个域,相当于直接拔掉物理机器的电源线(可能会算坏该域的文件系统) |
save <ID> <file.img> | 保存一个运行中的域的状态到一个文件中 |
restore <file.img> | 从一个被保存的文件中恢复一个域的运行 |
migrate <ID> <dest_url> | 将一个域迁移到另外一个目的的地址 |
dumpxml <ID> | 以XML格式转存出一个域的信息到标准输出中 |
attach-device <ID> <device.xml> | 向一个域添加XML文件中的设备(热插拔) |
detach-device <ID> <device.xml> | 将XML文件中额设备从一个域中移除 |
console <ID> | 连接到一个域的控制台 |
命令 | 功能描述 |
---|---|
version | 显示libvirt和Hypervisor的版本信息 |
sysinfo | 以XML格式打印宿主主机系统的信息 |
nodeinfo | 显示该节点的基本信息 |
uri | 显示当前连接的URI |
hostname | 显示当前节点的主机名 |
capabilities | 显示该节点宿主机和客户机的架构和特性 |
freecell | 显示当前MUMA单元的可用空闲内存 |
nodememstats <cell> | 显示该节点的内存单元使用情况的统计 |
connect <URL> | 连接到URI指示的Hypervisor |
nodecpustats <cpu-num> | 显示该节点的(某个)CPU使用情况的统计 |
qemu-attach <pid> | 根据PID添加一个QEMU进程到libvirt中 |
quemu-monitor-command domain [--hmp] command | 向域的QEMUmonitor中发送一个命令,一般需要"--hmp"参数,以便直接传入monitor中的命令而不需要转换 |
命令 | 功能描述 |
---|---|
iface-list | 显示除物理主机的网络接口列表 |
iface-mac <if-name> | 根据网络接口名称查询其对应的MAC地址 |
iface-name <MAC> | 根据MAC地址查询其对应的网络接口名称 |
iface-deit <if-name-or-UUID> | 编辑一个物理主机的网络接口的XML配置文件 |
iface-dumpxml <if-name-or-UUID> | 以XML格式转存出一个网络接口的状态信息 |
iface-destory <if-name-or-UUID> | 关闭宿主机上的一个物理网络接口 |
net-list | 列出libvirt管理的虚拟网络 |
net-info <net-name-or-UUID> | 根据名称查询一个虚拟网络的基本信息 |
net-uuid <net-name> | 根据名称查询一个虚拟网络的UUID |
net-name <net-UUID> | 根据UUID查询一个虚拟网络的名称 |
net-create <net.xml> | 根据一个网络的XML配置文件创建一个虚拟网络 |
net-edit <net-name-or-UUID> | 编辑一个虚拟网络的XML配置文件 |
net-dumpxml <net-name-or-UUID> | 转存出一个虚拟网络的XML格式化的配置信息 |
net-destory <net-name-or-UUID> | 销毁一个虚拟网络 |
命令 | 功能描述 |
---|---|
pool-list | 显示出libvirt管理的存储池 |
pool-info <pool-name> | 根据一个存储池名称查询其基本信息 |
pool-uuid <pool-name> | 根据存储池名称查询其UUID |
pool-create <pool.xml> | 根据XML配置文件的信息创建一个存储池 |
pool-edit <pool-name-or-UUID> | 编辑一个存储池的XML配置文件 |
pool-destroy <pool-name-or-UUID> | 关闭一个存储池(在libvirt可见范围内) |
pool-delete <pool-name-or-UUID> | 删除一个存储池(不可恢复) |
vol-list <pool-name-or-UUID> | 查询一个存储池中的存储卷的列表 |
vol-name <vol-key-or-path> | 查询一个存储卷的名称 |
vol-path --pool <pool> <vol-name-or-key> | 查询一个春初卷的路径 |
vol-create <vol.xml> | 根据XML配置文件创建一个存储池 |
vol-clone <vol-name-path> <name> | 克隆一个存储卷 |
vol-delete <vol-name-or-key-or-path> | 删除一个存储卷 |