第四章:管理虚拟机
1、libvirt架构概述
libvirt提供统一、稳定、开放的源代码的应用程序接口(API)、守护进程 (libvirtd)和一个默认命令行管理工具(virsh)。
可以实现对本地KVM和远程KVM的管理。
考察libvirtd在KVM中的角色
# 查看libvirtd服务的状态
systemctl status libvirtd
# 通过virsh查看正在运行的虚拟机
virsh
list --all
exit
# 关闭libvirtd
systemctl stop libvirtd
# 再次通过virsh查看正在运行的虚拟机
virsh
list --all
exit
# 查看kvm是否在运行
ps aux | grep kvm
# 此时kvm正常运行,但无法通过virsh连接
# 重新开启libvirtd
systemctl start libvirtd
virsh
# 可以正常连接
查看配置文件
[root@kvm ~]# cd /etc/libvirt/
[root@kvm libvirt]# ll
total 80
-rw-r--r--. 1 root root 450 Apr 28 2021 libvirt-admin.conf
-rw-r--r--. 1 root root 547 Apr 28 2021 libvirt.conf
-rw-r--r--. 1 root root 16529 Apr 28 2021 libvirtd.conf
-rw-r--r--. 1 root root 1175 Apr 28 2021 lxc.conf
drwx------. 2 root root 4096 May 10 13:51 nwfilter
drwx------. 3 root root 44 May 14 10:32 qemu
-rw-r--r--. 1 root root 30306 Apr 28 2021 qemu.conf
-rw-r--r--. 1 root root 2169 Apr 28 2021 qemu-lockd.conf
drwx------. 2 root root 6 May 10 13:51 secrets
drwxr-xr-x. 3 root root 57 May 14 10:32 storage
-rw-r--r--. 1 root root 3202 Apr 28 2021 virtlockd.conf
-rw-r--r--. 1 root root 3247 Apr 28 2021 virtlogd.conf
[root@kvm libvirt]# cd qemu/
[root@kvm qemu]# ll
total 8
-rw-------. 1 root root 4486 May 14 10:32 centos6.10.xml
drwx------. 3 root root 42 May 10 13:51 networks
[root@kvm qemu]# vim centos6.10.xml
2、使用virt-manager管理虚拟机
virt-manager主要功能
定义和创建虚拟机
硬件管理
性能监视
虚拟机的保存和恢复、暂停和继续、关闭和启动
控制台
在线和离线迁移
启用virt-manager
方法一:Applications > System Tools > Virtual Machine Manager (virt-manager)
方法二:在SSH会话中输入virt-manager
配置虚拟机启动项
附加USB设备给虚拟机
dmesg
点击Add Hardware添加新设备,选择USB Host Device
USB重定向
virt-manager管理远程KVM宿主机
virt-manager性能监视
3、使用virsh来管理虚拟机
virsh 概述
virsh是使用 libvirt management API 构建的管理工具
virsh 的名称的含义是virtualization shell
它有两种工作模式:
立即模式
交互模式
操作日志
[root@kvm ~]# virsh list --all
Id Name State
----------------------------------------------------
2 centos6.10 running
[root@kvm ~]# virsh
Welcome to virsh, the virtualization interactive terminal.
Type: 'help' for help with commands
'quit' to quit
virsh # list --all
Id Name State
----------------------------------------------------
2 centos6.10 running
virsh # exit
[root@kvm ~]# virsh --help
virsh [options]... [<command_string>]
virsh [options]... <command> [args...]
options:
-c | --connect=URI hypervisor connection URI
-d | --debug=NUM debug level [0-4]
-e | --escape <char> set escape sequence for console
-h | --help this help
-k | --keepalive-interval=NUM
keepalive interval in seconds, 0 for disable
-K | --keepalive-count=NUM
number of possible missed keepalive messages
-l | --log=FILE output logging to file
-q | --quiet quiet mode
-r | --readonly connect readonly
-t | --timing print timing information
-v short version
-V long version
--version[=TYPE] version, TYPE is short or long (default short)
commands (non interactive mode):
Domain Management (help keyword 'domain')
attach-device attach device from an XML file
attach-disk attach disk device
attach-interface attach network interface
autostart autostart a domain
blkdeviotune Set or query a block device I/O tuning parameters.
blkiotune Get or set blkio parameters
blockcommit Start a block commit operation.
blockcopy Start a block copy operation.
blockjob Manage active block operations
blockpull Populate a disk from its backing image.
blockresize Resize block device of domain.
change-media Change media of CD or floppy drive
console connect to the guest console
cpu-stats show domain cpu statistics
create create a domain from an XML file
define define (but don't start) a domain from an XML file
desc show or set domain's description or title
destroy destroy (stop) a domain
detach-device detach device from an XML file
detach-device-alias detach device from an alias
detach-disk detach disk device
detach-interface detach network interface
domdisplay domain display connection URI
domfsfreeze Freeze domain's mounted filesystems.
domfsthaw Thaw domain's mounted filesystems.
domfsinfo Get information of domain's mounted filesystems.
domfstrim Invoke fstrim on domain's mounted filesystems.
domhostname print the domain's hostname
domid convert a domain name or UUID to domain id
domif-setlink set link state of a virtual interface
domiftune get/set parameters of a virtual interface
domjobabort abort active domain job
domjobinfo domain job information
domname convert a domain id or UUID to domain name
domrename rename a domain
dompmsuspend suspend a domain gracefully using power management functions
dompmwakeup wakeup a domain from pmsuspended state
domuuid convert a domain name or id to domain UUID
domxml-from-native Convert native config to domain XML
domxml-to-native Convert domain XML to native config
dump dump the core of a domain to a file for analysis
dumpxml domain information in XML
edit edit XML configuration for a domain
event Domain Events
inject-nmi Inject NMI to the guest
iothreadinfo view domain IOThreads
iothreadpin control domain IOThread affinity
iothreadadd add an IOThread to the guest domain
iothreaddel delete an IOThread from the guest domain
send-key Send keycodes to the guest
send-process-signal Send signals to processes
lxc-enter-namespace LXC Guest Enter Namespace
managedsave managed save of a domain state
managedsave-remove Remove managed save of a domain
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 Get or set memory parameters
perf Get or set perf event
metadata show or set domain's custom XML metadata
migrate migrate domain to another host
migrate-setmaxdowntime set maximum tolerable downtime
migrate-getmaxdowntime get maximum tolerable downtime
migrate-compcache get/set compression cache size
migrate-setspeed Set the maximum migration bandwidth
migrate-getspeed Get the maximum migration bandwidth
migrate-postcopy Switch running migration from pre-copy to post-copy
numatune Get or set numa parameters
qemu-attach QEMU Attach
qemu-monitor-command QEMU Monitor Command
qemu-monitor-event QEMU Monitor Events
qemu-agent-command QEMU Guest Agent Command
reboot reboot a domain
reset reset a domain
restore restore a domain from a saved state in a file
resume resume a domain
save save a domain state to a file
save-image-define redefine the XML for a domain's saved state file
save-image-dumpxml saved state domain information in XML
save-image-edit edit XML for a domain's saved state file
schedinfo show/set scheduler parameters
screenshot take a screenshot of a current domain console and store it into a file
set-lifecycle-action change lifecycle actions
set-user-password set the user password inside the domain
setmaxmem change maximum memory limit
setmem change memory allocation
setvcpus change number of virtual CPUs
shutdown gracefully shutdown a domain
start start a (previously defined) inactive domain
suspend suspend a domain
ttyconsole tty console
undefine undefine a domain
update-device update device from an XML file
vcpucount domain vcpu counts
vcpuinfo detailed domain vcpu information
vcpupin control or query domain vcpu affinity
emulatorpin control or query domain emulator affinity
vncdisplay vnc display
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
Domain Monitoring (help keyword 'monitor')
domblkerror Show errors on block devices
domblkinfo domain block device size information
domblklist list all domain blocks
domblkstat get device block stats for a domain
domcontrol domain control interface state
domif-getlink get link state of a virtual interface
domifaddr Get network interfaces' addresses for a running domain
domiflist list all domain virtual interfaces
domifstat get network interface stats for a domain
dominfo domain information
dommemstat get memory statistics for a domain
domstate domain state
domstats get statistics about one or multiple domains
domtime domain time
list list domains
Host and Hypervisor (help keyword 'host')
allocpages Manipulate pages pool size
capabilities capabilities
cpu-baseline compute baseline CPU
cpu-compare compare host CPU with a CPU described by an XML file
cpu-models CPU models
domcapabilities domain capabilities
freecell NUMA free memory
freepages NUMA free pages
hostname print the hypervisor 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 connection vcpu maximum
node-memory-tune Get or set node memory parameters
nodecpumap node cpu map
nodecpustats Prints cpu stats of the node.
nodeinfo node information
nodememstats Prints memory stats of the node.
nodesuspend suspend the host node for a given time duration
sysinfo print the hypervisor sysinfo
uri print the hypervisor canonical URI
version show version
Interface (help keyword 'interface')
iface-begin create a snapshot of current interfaces settings, which can be later committed (iface-commit) or restored (iface-rollback)
iface-bridge create a bridge device and attach an existing network device to it
iface-commit commit changes made since iface-begin and free restore point
iface-define define an inactive persistent physical host interface or modify an existing persistent one from an XML file
iface-destroy destroy a physical host interface (disable it / "if-down")
iface-dumpxml interface information in XML
iface-edit edit XML configuration for a physical host interface
iface-list list physical host interfaces
iface-mac convert an interface name to interface MAC address
iface-name convert an interface MAC address to interface name
iface-rollback rollback to previous saved configuration created via iface-begin
iface-start start a physical host interface (enable it / "if-up")
iface-unbridge undefine a bridge device after detaching its slave device
iface-undefine undefine a physical host interface (remove it from configuration)
Network Filter (help keyword 'filter')
nwfilter-define define or update a network filter from an XML file
nwfilter-dumpxml network filter information in XML
nwfilter-edit edit XML configuration for a network filter
nwfilter-list list network filters
nwfilter-undefine undefine a network filter
nwfilter-binding-create create a network filter binding from an XML file
nwfilter-binding-delete delete a network filter binding
nwfilter-binding-dumpxml network filter information in XML
nwfilter-binding-list list network filter bindings
Networking (help keyword 'network')
net-autostart autostart a network
net-create create a network from an XML file
net-define define an inactive persistent virtual network or modify an existing persistent one from an XML file
net-destroy destroy (stop) a network
net-dhcp-leases print lease info for a given network
net-dumpxml network information in XML
net-edit edit XML configuration for a network
net-event Network Events
net-info network information
net-list list networks
net-name convert a network UUID to network name
net-start start a (previously defined) inactive network
net-undefine undefine a persistent network
net-update update parts of an existing network's configuration
net-uuid convert a network name to network UUID
Node Device (help keyword 'nodedev')
nodedev-create create a device defined by an XML file on the node
nodedev-destroy destroy (stop) a device on the node
nodedev-detach detach node device from its device driver
nodedev-dumpxml node device details in XML
nodedev-list enumerate devices on this host
nodedev-reattach reattach node device to its device driver
nodedev-reset reset node device
nodedev-event Node Device Events
Secret (help keyword 'secret')
secret-define define or modify a secret from an XML file
secret-dumpxml secret attributes in XML
secret-event Secret Events
secret-get-value Output a secret value
secret-list list secrets
secret-set-value set a secret value
secret-undefine undefine a secret
Snapshot (help keyword 'snapshot')
snapshot-create Create a snapshot from XML
snapshot-create-as Create a snapshot from a set of args
snapshot-current Get or set the current snapshot
snapshot-delete Delete a domain snapshot
snapshot-dumpxml Dump XML for a domain snapshot
snapshot-edit edit XML for a snapshot
snapshot-info snapshot information
snapshot-list List snapshots for a domain
snapshot-parent Get the name of the parent of a snapshot
snapshot-revert Revert a domain to a snapshot
Storage Pool (help keyword 'pool')
find-storage-pool-sources-as find potential storage pool sources
find-storage-pool-sources discover potential storage pool sources
pool-autostart autostart a pool
pool-build build a pool
pool-create-as create a pool from a set of args
pool-create create a pool from an XML file
pool-define-as define a pool from a set of args
pool-define define an inactive persistent storage pool or modify an existing persistent one from an XML file
pool-delete delete a pool
pool-destroy destroy (stop) a pool
pool-dumpxml pool information in XML
pool-edit edit XML configuration for a storage pool
pool-info storage pool information
pool-list list pools
pool-name convert a pool UUID to pool name
pool-refresh refresh a pool
pool-start start a (previously defined) inactive pool
pool-undefine undefine an inactive pool
pool-uuid convert a pool name to pool UUID
pool-event Storage Pool Events
Storage Volume (help keyword 'volume')
vol-clone clone a volume.
vol-create-as create a volume from a set of args
vol-create create a vol from an XML file
vol-create-from create a vol, using another volume as input
vol-delete delete a vol
vol-download download volume contents to a file
vol-dumpxml vol information in XML
vol-info storage vol information
vol-key returns the volume key for a given volume name or path
vol-list list vols
vol-name returns the volume name for a given volume key or path
vol-path returns the volume path for a given volume name or key
vol-pool returns the storage pool for a given volume key or path
vol-resize resize a vol
vol-upload upload file contents to a volume
vol-wipe wipe a vol
Virsh itself (help keyword 'virsh')
cd change the current directory
echo echo arguments
exit quit this interactive terminal
help print help
pwd print the current directory
quit quit this interactive terminal
connect (re)connect to hypervisor
(specify help <group> for details about the commands in the group)
(specify help <command> for details about the command)
virsh 常用命令
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
列出所有虚拟机
migrate
将虚拟机迁移到另一台主机中
nodeinfo
有关管理程序的输出信息
quit
退出这个互动终端
reboot
重新启动虚拟机
restore
恢复以前保存在文件中的虚拟机
resume
恢复暂停的虚拟机
save
将虚拟机当前状态保存到某个文件中
setmaxmem
为管理程序设定内存上限
setmem
为虚拟机设定分配的内存
setvcpus
修改为虚拟机分配的虚拟CPU数目
shutdown
关闭某个虚拟机
start
启动未激活的虚拟机
suspend
暂停虚拟机
undefine
删除与虚拟机关联的所有文件
vcpuinfo
显示虚拟机的虚拟CPU信息
vcpupin
控制虚拟机的虚拟CPU亲和性
version
显示virsh版本
[root@kvm ~]# virsh
Welcome to virsh, the virtualization interactive terminal.
Type: 'help' for help with commands
'quit' to quit
virsh # list --all
Id Name State
----------------------------------------------------
- centos6.10 shut off
virsh # start centos6.10
Domain centos6.10 started
virsh # list --all
Id Name State
----------------------------------------------------
3 centos6.10 running
virsh # shutdown 3
Domain 3 is being shutdown
virsh # destroy 3
Domain 3 destroyed
virsh # list --all
Id Name State
----------------------------------------------------
- centos6.10 shut off
[root@kvm ~]# virsh
Welcome to virsh, the virtualization interactive terminal.
Type: 'help' for help with commands
'quit' to quit
virsh # list --all
Id Name State
----------------------------------------------------
- centos6.10 shut off
virsh # start centos6.10
Domain centos6.10 started
virsh # list --all
Id Name State
----------------------------------------------------
4 centos6.10 running
virsh # suspend centos6.10
Domain centos6.10 suspended
virsh # list --all
Id Name State
----------------------------------------------------
4 centos6.10 paused
# 在暂停状态下,虚拟机进程仍然存在
virsh # resume 4
Domain 4 resumed
virsh # list --all
Id Name State
----------------------------------------------------
4 centos6.10 running
virsh # domuuid 4
215fb36f-93c3-4cc5-a285-90cd56e0d4ff
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律