KVM 使用 | virsh命令行管理工具
Libvirt有两种控制方式,命令行和图形界面
-
图形界面:
通过执行名virt-manager,启动libvirt的图形界面,在图形界面下可以一步一步的创建虚拟机,管理虚拟机,还可以直接控制虚拟机的桌面。
-
命令行:
virsh工具功能非常丰富,它可以全生命周期的管理kvm;比如创建虚拟机,查看虚拟机,动态热插拔硬盘,给虚拟机做快照,迁移、启动、停止、挂起、暂停、删除虚拟机等等操作;
1、查看virsh命令帮助信息
# virsh help
分组的命令:
Domain Management (使用关键字 'domain' 来显示帮助信息):
attach-device 从一个XML文件附加装置
attach-disk 附加磁盘设备
attach-interface 获得网络界面
autostart 自动开始一个域
blkdeviotune 设定或者查询块设备 I/O 调节参数。
blkiotune 获取或者数值 blkio 参数
blockcommit 启动块提交操作。
blockcopy 启动块复制操作。
blockjob 管理活跃块操作
blockpull 使用其后端映像填充磁盘。
blockresize 创新定义域块设备大小
change-media 更改 CD 介质或者软盘驱动器
console 连接到客户会话
cpu-stats 显示域 cpu 统计数据
create 从一个 XML 文件创建一个域
define 从一个 XML 文件定义(但不开始)一个域
desc 显示或者设定域描述或者标题
destroy 销毁(停止)域
detach-device 从一个 XML 文件分离设备
detach-device-alias detach device from an alias
detach-disk 分离磁盘设备
detach-interface 分离网络界面
domdisplay 域显示连接 URI
domfsfreeze Freeze domain\'s mounted filesystems.
domfsthaw Thaw domain\'s mounted filesystems.
domfsinfo Get information of domain\'s mounted filesystems.
domfstrim 在域挂载的文件系统中调用 fstrim。
domhostname 输出域主机名
domid 把一个域名或 UUID 转换为域 id
domif-setlink 设定虚拟接口的链接状态
domiftune 获取/设定虚拟接口参数
domjobabort 忽略活跃域任务
domjobinfo 域任务信息
domname 将域 id 或 UUID 转换为域名
domrename rename a domain
dompmsuspend 使用电源管理功能挂起域
dompmwakeup 从 pmsuspended 状态唤醒域
domuuid 把一个域名或 id 转换为域 UUID
domxml-from-native 将原始配置转换为域 XML
domxml-to-native 将域 XML 转换为原始配置
dump 把一个域的内核 dump 到一个文件中以方便分析
dumpxml XML 中的域信息
edit 编辑某个域的 XML 配置
event Domain Events
inject-nmi 在虚拟机中输入 NMI
iothreadinfo view domain IOThreads
iothreadpin control domain IOThread affinity
iothreadadd add an IOThread to the guest domain
iothreadset modifies an existing IOThread of the guest domain
iothreaddel delete an IOThread from the guest domain
send-key 向虚拟机发送序列号
send-process-signal 向进程发送信号
lxc-enter-namespace LXC 虚拟机进入名称空间
managedsave 管理域状态的保存
managedsave-remove 删除域的管理保存
managedsave-edit edit XML for a domain\'s managed save state file
managedsave-dumpxml Domain information of managed save state file in XML
managedsave-define redefine the XML for a domain\'s managed save state file
memtune 获取或者数值内存参数
perf Get or set perf event
metadata show or set domain\'s custom XML metadata
migrate 将域迁移到另一个主机中
migrate-setmaxdowntime 设定最大可耐受故障时间
migrate-getmaxdowntime get maximum tolerable downtime
migrate-compcache 获取/设定压缩缓存大小
migrate-setspeed 设定迁移带宽的最大值
migrate-getspeed 获取最长迁移带宽
migrate-postcopy Switch running migration from pre-copy to post-copy
numatune 获取或者数值 numa 参数
qemu-attach QEMU 附加
qemu-monitor-command QEMU 监控程序命令
qemu-monitor-event QEMU Monitor Events
qemu-agent-command QEMU 虚拟机代理命令
guest-agent-timeout Set the guest agent timeout
reboot 重新启动一个域
reset 重新设定域
restore 从一个存在一个文件中的状态恢复一个域
resume 重新恢复一个域
save 把一个域的状态保存到一个文件
save-image-define 为域的保存状态文件重新定义 XML
save-image-dumpxml 在 XML 中保存状态域信息
save-image-edit 为域保存状态文件编辑 XML
schedinfo 显示/设置日程安排变量
screenshot 提取当前域控制台快照并保存到文件中
set-lifecycle-action change lifecycle actions
set-user-password set the user password inside the domain
setmaxmem 改变最大内存限制值
setmem 改变内存的分配
setvcpus 改变虚拟 CPU 的号
shutdown 关闭一个域
start 开始一个(以前定义的)非活跃的域
suspend 挂起一个域
ttyconsole tty 控制台
undefine 取消定义一个域
update-device 从 XML 文件中关系设备
vcpucount 域 vcpu 计数
vcpuinfo 详细的域 vcpu 信息
vcpupin 控制或者查询域 vcpu 亲和性
emulatorpin 控制火车查询域模拟器亲和性
vncdisplay vnc 显示
guestvcpus query or modify state of vcpu in the guest (via agent)
setvcpu attach/detach vcpu or groups of threads
domblkthreshold set the threshold for block-threshold event for a given block device or it\'s backing chain element
guestinfo query information about the guest (via agent)
Domain Monitoring (使用关键字 'monitor' 来显示帮助信息):
domblkerror 在块设备中显示错误
domblkinfo 域块设备大小信息
domblklist 列出所有域块
domblkstat 获得域设备块状态
domcontrol 域控制接口状态
domif-getlink 获取虚拟接口链接状态
domifaddr Get network interfaces\' addresses for a running domain
domiflist 列出所有域虚拟接口
domifstat 获得域网络接口状态
dominfo 域信息
dommemstat 获取域的内存统计
domstate 域状态
domstats get statistics about one or multiple domains
domtime domain time
list 列出域
Host and Hypervisor (使用关键字 'host' 来显示帮助信息):
allocpages Manipulate pages pool size
capabilities 性能
cpu-baseline 计算基线 CPU
cpu-compare 使用 XML 文件中描述的 CPU 与主机 CPU 进行对比
cpu-models CPU models
domcapabilities domain capabilities
freecell NUMA可用内存
freepages NUMA free pages
hostname 打印管理程序主机名
hypervisor-cpu-baseline compute baseline CPU usable by a specific hypervisor
hypervisor-cpu-compare compare a CPU with the CPU created by a hypervisor on the host
maxvcpus 连接 vcpu 最大值
node-memory-tune 获取或者设定节点内存参数
nodecpumap 节点 cpu 映射
nodecpustats 输出节点的 cpu 状统计数据。
nodeinfo 节点信息
nodememstats 输出节点的内存状统计数据。
nodesuspend 在给定时间段挂起主机节点
sysinfo 输出 hypervisor sysinfo
uri 打印管理程序典型的URI
version 显示版本
Checkpoint (使用关键字 'checkpoint' 来显示帮助信息):
checkpoint-create Create a checkpoint from XML
checkpoint-create-as Create a checkpoint from a set of args
checkpoint-delete Delete a domain checkpoint
checkpoint-dumpxml Dump XML for a domain checkpoint
checkpoint-edit edit XML for a checkpoint
checkpoint-info checkpoint information
checkpoint-list List checkpoints for a domain
checkpoint-parent Get the name of the parent of a checkpoint
Interface (使用关键字 'interface' 来显示帮助信息):
iface-begin 生成当前接口设置快照,可在今后用于提交 (iface-commit) 或者恢复 (iface-rollback)
iface-bridge 生成桥接设备并为其附加一个现有网络设备
iface-commit 提交 iface-begin 后的更改并释放恢复点
iface-define define an inactive persistent physical host interface or modify an existing persistent one from an XML file
iface-destroy 删除物理主机接口(启用它请执行 "if-down")
iface-dumpxml XML 中的接口信息
iface-edit 为物理主机界面编辑 XML 配置
iface-list 物理主机接口列表
iface-mac 将接口名称转换为接口 MAC 地址
iface-name 将接口 MAC 地址转换为接口名称
iface-rollback 恢复到之前保存的使用 iface-begin 生成的更改
iface-start 启动物理主机接口(启用它请执行 "if-up")
iface-unbridge 分离其辅助设备后取消定义桥接设备
iface-undefine 取消定义物理主机接口(从配置中删除)
Network Filter (使用关键字 'filter' 来显示帮助信息):
nwfilter-define 使用 XML 文件定义或者更新网络过滤器
nwfilter-dumpxml XML 中的网络过滤器信息
nwfilter-edit 为网络过滤器编辑 XML 配置
nwfilter-list 列出网络过滤器
nwfilter-undefine 取消定义网络过滤器
nwfilter-binding-create create a network filter binding from an XML file
nwfilter-binding-delete delete a network filter binding
nwfilter-binding-dumpxml XML 中的网络过滤器信息
nwfilter-binding-list list network filter bindings
Networking (使用关键字 'network' 来显示帮助信息):
net-autostart 自动开始网络
net-create 从一个 XML 文件创建一个网络
net-define define an inactive persistent virtual network or modify an existing persistent one from an XML file
net-destroy 销毁(停止)网络
net-dhcp-leases print lease info for a given network
net-dumpxml XML 中的网络信息
net-edit 为网络编辑 XML 配置
net-event Network Events
net-info 网络信息
net-list 列出网络
net-name 把一个网络UUID 转换为网络名
net-start 开始一个(以前定义的)不活跃的网络
net-undefine undefine a persistent network
net-update 更新现有网络配置的部分
net-uuid 把一个网络名转换为网络UUID
net-port-list list network ports
net-port-create create a network port from an XML file
net-port-dumpxml network port information in XML
net-port-delete delete the specified network port
Node Device (使用关键字 'nodedev' 来显示帮助信息):
nodedev-create 根据节点中的 XML 文件定义生成设备
nodedev-destroy 销毁(停止)节点中的设备
nodedev-detach 将节点设备与其设备驱动程序分离
nodedev-dumpxml XML 中的节点设备详情
nodedev-list 这台主机中的枚举设备
nodedev-reattach 重新将节点设备附加到他的设备驱动程序中
nodedev-reset 重置节点设备
nodedev-event Node Device Events
Secret (使用关键字 'secret' 来显示帮助信息):
secret-define 定义或者修改 XML 中的 secret
secret-dumpxml XML 中的 secret 属性
secret-event Secret Events
secret-get-value secret 值输出
secret-list 列出 secret
secret-set-value 设定 secret 值
secret-undefine 取消定义 secret
Snapshot (使用关键字 'snapshot' 来显示帮助信息):
snapshot-create 使用 XML 生成快照
snapshot-create-as 使用一组参数生成快照
snapshot-current 获取或者设定当前快照
snapshot-delete 删除域快照
snapshot-dumpxml 为域快照转储 XML
snapshot-edit 编辑快照 XML
snapshot-info 快照信息
snapshot-list 为域列出快照
snapshot-parent 获取快照的上级快照名称
snapshot-revert 将域转换为快照
Backup (使用关键字 'backup' 来显示帮助信息):
backup-begin Start a disk backup of a live domain
backup-dumpxml Dump XML for an ongoing domain block backup job
Storage Pool (使用关键字 'pool' 来显示帮助信息):
find-storage-pool-sources-as 找到潜在存储池源
find-storage-pool-sources 发现潜在存储池源
pool-autostart 自动启动某个池
pool-build 建立池
pool-create-as 从一组变量中创建一个池
pool-create 从一个 XML 文件中创建一个池
pool-define-as 在一组变量中定义池
pool-define define an inactive persistent storage pool or modify an existing persistent one from an XML file
pool-delete 删除池
pool-destroy 销毁(删除)池
pool-dumpxml XML 中的池信息
pool-edit 为存储池编辑 XML 配置
pool-info 存储池信息
pool-list 列出池
pool-name 将池 UUID 转换为池名称
pool-refresh 刷新池
pool-start 启动一个(以前定义的)非活跃的池
pool-undefine 取消定义一个不活跃的池
pool-uuid 把一个池名称转换为池 UUID
pool-event Storage Pool Events
pool-capabilities storage pool capabilities
Storage Volume (使用关键字 'volume' 来显示帮助信息):
vol-clone 克隆卷。
vol-create-as 从一组变量中创建卷
vol-create 从一个 XML 文件创建一个卷
vol-create-from 生成卷,使用另一个卷作为输入。
vol-delete 删除卷
vol-download 将卷内容下载到文件中
vol-dumpxml XML 中的卷信息
vol-info 存储卷信息
vol-key 为给定密钥或者路径返回卷密钥
vol-list 列出卷
vol-name 为给定密钥或者路径返回卷名
vol-path 为给定密钥或者路径返回卷路径
vol-pool 为给定密钥或者路径返回存储池
vol-resize 创新定义卷大小
vol-upload 将文件内容上传到卷中
vol-wipe 擦除卷
Virsh itself (使用关键字 'virsh' 来显示帮助信息):
cd 更改当前目录
echo 对参数进行编码
exit 退出当前的交互式终端
help 显示帮助信息
pwd 显示当前目录
quit 退出当前的交互式终端
connect 连接(或重新连接)管理程序(即虚拟化层)
提示:从上面的信息可以看到,virsh命令大概分了,Domain Management(域管理),Domain Monitoring(域监控)、 Host and Hypervisor(主机及虚拟化)、Interface(网卡接口)、Network Filter(网络防火墙)、Networking(网络)、Node Device(节点设备驱动)、Secret、Snapshot(快照)、Storage Pool(存储池或存储策略)、Storage Volume(存储卷)、Virsh itself(virsh shell自身相关)这些组,如果查看某一组帮助信息,我们可以使用virsh help +组名;比如查看storage volume组相关命令有哪些,可以使用virsh help volume;如果查看组里的某个命令的用法,可以使用virsh help +命令即可。
2、virsh管理虚拟机相关命令
virsh list
列出当前宿主机上的域(虚拟机)列表,默认不加任何选项表示列出当前处于运行状态的域(虚拟机)列表(活跃的)
# virsh help list
命令名称
list - 列出域
概览
list [--inactive] [--all] [--transient] [--persistent] [--with-snapshot] [--without-snapshot] [--with-checkpoint] [--without-checkpoint] [--state-running] [--state-paused] [--state-shutoff] [--state-other] [--autostart] [--no-autostart] [--with-managed-save] [--without-managed-save] [--uuid] [--name] [--table] [--managed-save] [--title]
说明
返回域列表
选项
--inactive 列出不活跃的域
--all 不活跃和活跃的域列表
--transient 列出临时域
--persistent 列出持久域
--with-snapshot 列出现有快照的域
--without-snapshot 列出没有快照的域
--with-checkpoint list domains with existing checkpoint
--without-checkpoint list domains without a checkpoint
--state-running 运行状态的域列表
--state-paused 列出暂停状态的域
--state-shutoff 列出关闭状态的域
--state-other 列出其他状态的域
--autostart 列出启用 autostart 的域
--no-autostart 列出禁用 autostart 的域
--with-managed-save 列出有管理的保存状态的域
--without-managed-save 列出没有管理的保存状态的域
--uuid 只列出 uuid
--name 只列出域名
--table 列出表格(默认)
--managed-save 标记有管理的保存状态的域
--title show domain title
# virsh list
Id 名称 状态
-----------------------
1 Kylin running
# virsh list --all
Id 名称 状态
----------------------------------
1 Kylin running
- UOS-Server-1000c 关闭
- UOS-server-1020a 关闭
virsh create
从一个 XML 文件创建一个域(虚拟机)
# virsh help create
命令名称
create - 从一个 XML 文件创建一个域
概览
create <file> [--console] [--paused] [--autodestroy] [--pass-fds <字符串>] [--validate]
说明
创建一个域
选项
[--file] <字符串> 文件包括一个 XML 域描述
--console 创建后附加到控制台
--paused 生成后让虚拟机保持暂停状态
--autodestroy virsh 断开连接时自动销毁虚拟机
--pass-fds <字符串> 向虚拟机传递文件描述符 N、M......
--validate validate the XML against the schema
virsh define
从一个 XML 文件定义(但不开始)一个域(虚拟机),create是创建并运行;
# virsh help define
命令名称
define - 从一个 XML 文件定义(但不开始)一个域
概览
define <file> [--validate]
说明
定义一个域。
选项
[--file] <字符串> 文件包括一个 XML 域描述
--validate validate the XML against the schema
virsh console
连接到客户会话(即连接到虚拟机内shell)
# virsh help console
命令名称
console - 连接到客户会话
概览
console <domain> [--devname <字符串>] [--force] [--safe]
说明
连接客户真实串行控制台
选项
[--domain] <字符串> 域名,id 或 uuid
--devname <字符串> 字符设备名称
--force 强制控制台连接(断开已连接的会话)
--safe 只有在支持安全控制台处理时方可连接
# virsh console Kylin
连接到域 Kylin
换码符为 ^]
MiWiFi-R4A-srv login: root
密码:
上次登录:Sun Sep 26 09:44:54 于 ttyAMA0
Authorized users only. All activities may be monitored and reported.
[虚拟机内]#
提示:可以看到在宿主机上我们可以直接使用virsh console命令来连接指定客户机的串行控制台;退出控制台回到宿主机需要使用【Ctrl】+ 【]】(即右中括号);
virsh shutdown
关闭一个域(虚拟机)
# virsh help shutdown
命令名称
shutdown - 关闭一个域
概览
shutdown <domain> [--mode <字符串>]
说明
在目标域中执行关闭行为。
选项
[--domain] <字符串> 域名,id 或 uuid
--mode <字符串> shutdown mode: acpi|agent|initctl|signal|paravirt
提示:使用shutdown子命令,有时候会关不掉,我们需要使用destroy子命令来强制关机;强制删除有点类似我们使用kill -9强制杀死一个进程一样,其实kvm上的虚拟在宿主机机上的表现形式就是一个进程,如下所示;
ps -aux |grep qemu
qemu 492272 2.4 23.5 6222464 3797888 ? Sl 09:26 0:37 /usr/libexec/qemu-kvm -name guest=Kylin,debug-threads=on -S -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-1-Kylin/master-key.aes -block...
virsh start
开始一个(以前定义的)非活跃的域(虚拟机)
virsh help start
命令名称
start - 开始一个(以前定义的)非活跃的域
概览
start <domain> [--console] [--paused] [--autodestroy] [--bypass-cache] [--force-boot] [--pass-fds <字符串>]
说明
启动域,可以从最后一个 managedsave
state,如果没有 managedsave state,
也可以从全新引导中启动。
选项
[--domain] <字符串> 非活跃域的名称
--console 创建后附加到控制台
--paused 生成后让虚拟机保持暂停状态
--autodestroy virsh 断开连接时自动销毁虚拟机
--bypass-cache 载入时避免文件系统缓存
--force-boot 采用忽略所有管理保存的方式强制刷新引导
--pass-fds <字符串> 向虚拟机传递文件描述符 N、M......
virsh reboot
重新启动一个域(虚拟机),在指定虚拟机上执行reboot命令一样;
virsh help reboot
命令名称
reboot - 重新启动一个域
概览
reboot <domain> [--mode <字符串>]
说明
在目标域中执行重新启动命令。
选项
[--domain] <字符串> 域名,id 或 uuid
--mode <字符串> shutdown mode: acpi|agent|initctl|signal|paravirt
virsh reset
重新设定域(虚拟机),对指定虚拟机执行强制重启,有点类似按机箱上的重置按钮;
virsh help reset
命令名称
reset - 重新设定域
概览
reset <domain>
说明
如同使用电源按钮重新设定目标域
选项
[--domain] <字符串> 域名,id 或 uuid
virsh undefine
取消定义一个域(虚拟机),删除指定虚拟机(会连同配置文件一并删除)
virsh help undefine
命令名称
undefine - 取消定义一个域
概览
undefine <domain> [--managed-save] [--storage <字符串>] [--remove-all-storage] [--delete-storage-volume-snapshots] [--wipe-storage] [--snapshots-metadata] [--checkpoints-metadata] [--nvram] [--keep-nvram]
说明
取消定义一个域或者将持久转换为临时。
选项
[--domain] <字符串> 域名,id 或 uuid
--managed-save 删除域管理的状态文件
--storage <字符串> 删除关联的存储卷(用逗号分开的目标或者源路径列表)(查看 domblklist)
--remove-all-storage 删除关联的存储卷(小心使用)
--delete-storage-volume-snapshots delete snapshots associated with volume(s), requires --remove-all-storage (must be supported by storage driver)
--wipe-storage 擦除删除卷中的数据
--snapshots-metadata remove all domain snapshot metadata (vm must be inactive)
--checkpoints-metadata remove all domain checkpoint metadata (vm must be inactive)
--nvram remove nvram file, if inactive
--keep-nvram keep nvram file, if inactive
提示:默认使用undefine只会把对应配置文件和虚拟机实例删除,如果还需要删除存储卷,可以在后面加上对应的选项指定即可;
virsh autostart
自动开始一个域(虚拟机),指定虚拟机为随宿主机启动而自动启动
virsh help autostart
命令名称
autostart - 自动开始一个域
概览
autostart <domain> [--disable]
说明
设置一个域在启动时自动开始.
选项
[--domain] <字符串> 域名,id 或 uuid
--disable 禁止自动启动
以上仅列出部分用到的命令,其他命令参数可参看帮助信息
由于时间仓促,错误与疏忽之处在所难免,希望各位朋友们以邮件的形式反馈问题给我,再次表示感谢!
- 作者:xmlwch
- 原文链接:https://m730.xmlwch.cn/2021/09/24/chlinux/virsh-manage-tools.html
- 版权声明:本作品采用 知识共享 署名-相同方式共享 4.0 国际(CC BY-SA 4.0)许可协议 进行许可,转载无需与我联系,但请注明出处。