群英欢迎您,请 登录 | 注册 | 群英主页
快捷导航
本帖最后由 d-spot 于 2016-2-3 16:39 编辑

virsh
hotplug & hot unplug devices
# virsh attach-device rhel7 --file usb_device.xml --persistent
# virsh detach-device rhel7 --file usb_device.xml --persistent
hotplug & hot unplug interface
virsh attach-interface <domain> <type> <source> [--model virtio] --persistent
virsh detach-interface <domain> <type> [--mac <string>] --persistent

hostplug & hot unplug disk
virsh attach-disk <domain> <source> <target> --persistent
virsh detach-disk <domain> <target> --persistent

常用target 设备名称及对应bus:
target dev='hda' bus='ide'
target dev='vda' bus='virtio'
target dev='sda' bus='scsi'

--live 对正在运行的虚拟机生效,虚拟机重启后配置失效,默认为该方式
--config 虚拟机运行或关闭状态都可,写进配置文件,下次启动时生效,后续不会失效
--current 虚拟机运行或关闭状态都可;若虚拟机为运行状态,相当于--live,若虚拟机为关闭状态,相当于--config
--persistent 虚拟机运行或关闭状态都可,写进配置文件,设置马上生效,后续不会失效
变更虚拟机CDROM
virsh change-media <domain> <path> [--source <string>] [--eject] [--insert] [--update] [--current] [--live] [--config] [--force]

虚拟机随宿主机开机启动
virsh autostart <domain> [--disable]

查看虚拟机所属磁盘及磁盘状态
[root@qy49 ~]# virsh domblklist centos71 --details
Type       Device     Target     Source
------------------------------------------------
file       disk       sda        /var/lib/libvirt/images/centos71.img
block      cdrom      hda        -
[root@qy49 ~]#
[root@qy49 ~]# virsh domblkstat centos71 sda --human
Device: sda
number of read operations:      5462
number of bytes read:           142153216
number of write operations:     2254
number of bytes written:        13283840
number of flush operations:     999
total duration of reads (ns):   642620447
total duration of writes (ns):  1480232426
total duration of flushes (ns): 733411685
[root@qy49 ~]# virsh domblkinfo centos71 sda
Capacity:       8589934592
Allocation:     1123876352
Physical:       1123815424
[root@qy49 ~]#


查看虚拟机磁盘报错
[root@qy49 ~]# virsh domstate centos71 --reason
running (booted)
[root@qy49 ~]# virsh domblkerror centos71
No errors found
[root@qy49 ~]#
用于虚拟机由于I/O error被暂停时,查看磁盘错误信息。

查看虚拟机所属网卡
[root@qy49 ~]# virsh domiflist centos71_2
Interface  Type       Source     Model       MAC
-------------------------------------------------------
macvtap1   direct     br0        virtio      52:54:00:df:79:92
vnet2      network    default    virtio      52:54:00:1f:e4:db
[root@qy49 ~]#

查看、设置虚拟机网卡状态(UP/DOWN)
virsh domif-getlink <domain> <targetdevname/MAC>
virsh domif-setlink <domain> <targetdevname/MAC> up/down
eg:
[root@qy49 ~]# virsh domif-getlink centos71_2 vnet2
vnet0 up
[root@qy49 ~]#
查看虚拟机网卡收发包状态
virsh domifstat <domain> <targetdevname/MAC>[root@qy49 ~]# virsh domifstat centos71_2 vnet2
vnet2 rx_bytes 2688
vnet2 rx_packets 36
vnet2 rx_errs 0
vnet2 rx_drop 0
vnet2 tx_bytes 1560
vnet2 tx_packets 14
vnet2 tx_errs 0
vnet2 tx_drop 0
[root@qy49 ~]#

查看、设置虚拟机网卡带宽
查看 virsh domiftune <domain> <targetdevname/MAC>
[root@qy49 ~]# virsh domiftune centos71_2 vnet2
inbound.average: 0
inbound.peak   : 0
inbound.burst  : 0
inbound.floor  : 0
outbound.average: 0
outbound.peak  : 0
outbound.burst : 0
[root@qy49 ~]#

设置 virsh domiftune <domain> <targetdevname/MAC> [[--config] [--live] | [--current]] [--inbound average,peak,burst] [--outbound average,peak,burst]
[root@qy49 ~]# virsh domiftune centos71_2 vnet2 --outbound 600,900,225 --live
[root@qy49 ~]# virsh domiftune centos71_2 vnet2
inbound.average: 0
inbound.peak   : 0
inbound.burst  : 0
inbound.floor  : 0
outbound.average: 600
outbound.peak  : 900
outbound.burst : 225
[root@qy49 ~]#

单位:平均值average kbyte/s 峰值peak kbyte/s 突发值burst kbyte
实际限速值average, 峰值peak和突发值burst是可以合理计算出来的
建议的值: peak=1.5*average burst=peak/8*2=3average/8


查看虚拟机内存使用情况
virsh dommemstat <domain> [--period (sec)] [[--config][--live]|[--current]]
设置--period 变量,若值大于0,balloon driver 在指定间隔时间更新可用内存信息;若设置为0,balloon drive 会停止收集可用内存信息。
[root@qy49 ~]# virsh dommemstat centos71
actual 2097152
swap_in 20782776320
minor_fault 1237161859874816
rss 573272
[root@qy49 ~]# virsh dommemstat centos71 --period 30
[root@qy49 ~]# virsh dommemstat centos71
actual 2097152
swap_in 0
swap_out 0
major_fault 443
minor_fault 1427316
unused 1630328
available 1884208
rss 573272
[root@qy49 ~]#

磁盘整理
# virsh domfstrim <domain> [--minimum <number>] [--mountpoint <string>]

查看虚拟机的基本信息
# virsh dominfo <domain>
[root@qy49 ~]# virsh dominfo centos71
Id:             49
Name:           centos71
UUID:           3a9ba89b-c750-4c66-8aec-d1a961eae444
OS Type:        hvm
State:          running
CPU(s):         2
CPU time:       192.1s
Max memory:     2097152 KiB
Used memory:    2097152 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: none
Security DOI:   0
[root@qy49 ~]#

查看虚拟机的UUID
[root@qy49 ~]# virsh domuuid centos71
3a9ba89b-c750-4c66-8aec-d1a961eae444
[root@qy49 ~]#

查看虚拟机任务
# virsh domjobinfo <domain> [--completed]

停止虚拟机当前任务
# virsh domjobabort <domain>
dump虚拟机的内核
# virsh dump <domain> <file> [--verbose] [--memory-only]
当虚拟机出现故障需要诊断时,可以通过以上命令dump 虚拟机的内核。
--memory-only 参数表示仅dump内存和CPU的通用寄存器文件,可用在无法dump出完整内核的情况下;
(dump任务可通过domjobinfo查看,通过domjobabort取消。)

查看虚拟机至VMM接口状态
# virsh domcontrol <domain>
# virsh domcontrol vm1-centos71
ok

dump虚拟机core file
# virsh dump <domain> filepath

导出当前虚拟机的配置文件
# virsh dumpxml domain > filepath

保存虚拟机当前状态后关闭虚拟机
# virsh managedsave domain --verbose
该操作是为了下次启动虚拟机时可以恢复当前的操作。
如果希望保存虚拟机当前状态后不关闭虚拟机,可以添加--running 参数试其仍然运行,或者--pause 参数使其挂起。
如果保存了虚拟机状态,但又希望下次开机重新开始,可以使用virsh managedsave-remove <domain> 命令删除保存的状态。
(managedsave任务可通过domjobinfo查看,通过domjobabort取消。)

虚拟机截图
# virsh screenshot domain

查看虚拟机图形连接URI
[root@qy49 ~]# virsh domdisplay centos71 --include-password
vnc://123456@localhost:10
[root@qy49 ~]#
这里的结果显示为vnc连接,加上--include-password 参数能同时显示vnc连接的密码123456。
如果加上--type 可以指定图形连接类型,比如vnc, spice, rdp。

查看虚拟机VNC连接端口
[root@qy49 ~]# virsh vncdisplay centos71
:10
[root@qy49 ~]#

创建虚拟机屏幕截图
# virsh screenshot <domain>




查询虚拟机在物理机每个逻辑CPU运行的时间
# virsh cpu-stats <domain> [--total] [--start <number>] [--count <number>]
若指定--total,则显示虚拟机在物理机所有CPU运行的时间。
如果指定--start 和--count,则显示虚拟机在从start开始的count个逻辑CPU的运行时间。
[root@kvm71 ~]# virsh cpu-stats vm1-centos71 --start 2 --count 2
CPU2:
        cpu_time           114.120410519 seconds
        vcpu_time          105.002563180 seconds
CPU3:
        cpu_time            76.777906528 seconds
        vcpu_time           70.528838208 seconds
[root@kvm71 ~]#



NUMA
1. 查看物理机NUMA状态
[root@qy49 ~]# virsh nodeinfo
CPU model:           x86_64
CPU(s):              24
CPU frequency:       2394 MHz
CPU socket(s):       1                               #每个NUMA包含的CPU socket数量
Core(s) per socket:  6
Thread(s) per core:  2
NUMA cell(s):        2                              #NUMA node总数
Memory size:         16318892 KiB
[root@qy49 ~]#


2. 设置虚拟机的NUMA CELL 绑定信息
# virsh numatune <domain> [--mode <string>] [--nodeset <string>] [--config] [--live] [--current]
其中,mode指虚拟机所在节点(node/cell)访问内存的方式,可以是strict(指定的), interleave(交叉的), perferred(就近的)。如果虚拟机不是以strict mode启动,则后续不能在线修改此mode。
--nodeset后面跟NUMA的cell号,不同cell以逗号分隔,可以使用连字符指定一定范围的cell,当要排除范围内某个cell时,可用脱字符实现,例如: --nodeset 0,2-5,^4 (指定CELL0,2,3,5)

3. 查看物理机每个NUMA CELL 的空闲内存
# virshfreecell [--cellno <number>] [--all]

4. 查看物理机各CPU的在线状态
# virsh nodecpumap [--pretty]
--pretty, 以易读方式显示
[root@qy49 ~]# virsh nodecpumap
CPUs present:   24
CPUs online:    24
CPU map:        yyyyyyyyyyyyyyyyyyyyyyyy
[root@qy49 ~]# virsh nodecpumap --pretty
CPUs present:   24
CPUs online:    24
CPU map:        0-23
[root@qy49 ~]#


5. 查看物理机CPU使用情况
# virsh nodecpustats [--cpu <number>] [--percent]
[root@qy49 ~]# virsh nodecpustats 23 --percent
usage:            0.0%
user:             0.0%
system:           0.0%
idle:           100.0%
iowait:           0.0%
[root@qy49 ~]#


6. 设置主机休眠
# virsh nodesuspend <target> <duration>
其中target 可以是mem, disk, hybrid,mem指内存挂起,disk指硬盘挂起,hybrid为前两者的混合。
duration 指休眠的时间,数字,单位为秒,至少为60s。

7. 查看和设置物理机NUMA 共享内存参数
查看:
[root@qy49 ~]# virsh node-memory-tune
Shared memory:
        shm_pages_to_scan 100
        shm_sleep_millisecs 20
        shm_pages_shared 0
        shm_pages_sharing 0
        shm_pages_unshared 0
        shm_pages_volatile 0
        shm_full_scans  0
        shm_merge_across_nodes 1
[root@qy49 ~]#

设置:
# virsh node-memory-tune [--shm-pages-to-scan <number>] [--shm-sleep-millisecs <number>] [--shm-merge-across-nodes <number>]
--shm-pages-to-scan 扫描共享内存页数
--shm-sleep-millisec 每次扫描的时间间隔(单位微秒)
--shm-merge-across-nodes 是否允许合并不同NUMA节点的内存,0为不许,1为允许,默认为1.
8. 查询虚拟机vCPU状态
# virsh vcpuinfo domain [--pretty]
[root@qy49 ~]# virsh vcpuinfo centos71 --pretty
VCPU:           0
CPU:            8
State:          running
CPU time:       32.2s
CPU Affinity:   0-23 (out of 24)
VCPU:           1
CPU:            5
State:          running
CPU time:       18.8s
CPU Affinity:   0-23 (out of 24)
[root@qy49 ~]#

9. 查询/设置vCPU亲和性
# virsh vcpupin <domain> [--vcpu <number>] [--cpulist <string>] [--config] [--live] [--current]
查询全部或某个vCPU的亲和性:
# virsh vcpupin <domain> [--vcpu <number>]
设置某vCPU的亲和性:
virsh vcpupin <domain> [--vcpu <number>] [--cpulist <string>] [--config] [--live] [--current]



启动虚拟机
# virsh start <domain> [--console] [--paused] [--autodestroy] [--bypass-cache] [--force-boot] [--pass-fds <string>]
--console 启动后进入console

暂停虚拟机
# virsh suspend <domain>
恢复虚拟机
# virsh resume <domain>

虚拟机休眠/待机
# virsh dompmsuspend <domain> <target> [--duration <number>]
target 可以是mem, disk或 hybrid。
唤醒休眠状态虚拟机
#virsh dompmwakeup <domain>

撤销虚拟机
# virsh undefine <domain> [--managed-save] [--storage <string>] [--remove-all-storage] [--wipe-storage] [--snapshots-metadata] [--nvram]
--managed-save 适用于虚拟机之前用virsh managedsave domain命令关闭的情况
--snapshots-metadata 在虚拟机运行状态,撤销虚拟机的同时删除快照
--storage 在虚拟机关闭时,撤销虚拟机的同时删除--storage指定的镜像(多个镜像用逗号隔开)
--remove-all-storage 撤销虚拟机的同时删除虚拟机所有的镜像
--wipe-storage 撤销虚拟机的同时删除虚拟机所有的镜像


虚拟机关机/重启/强制关机
#virsh shutdown/reboot/destory <domain>

重置虚拟机
# virsh reset <domain>
模拟机器的电源reset按钮,使用该命令时应确保虚拟机处于shut off 状态,否则可能会有数据丢失。

查看虚拟机的名字,ID,UUID
# virsh domname <domain-id or domain-uuid>
# virsh domuuid <domain-id or domain-name>
# virsh domuuid <domain-id or domain-name>

查看虚拟机的概况
#virsh dominfo <domain>

列出指定条件的虚拟机
# virsh list [--inactive] [--all] [--transient] [--persistent] [--with-snapshot] [--without-snapshot] [--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 所有虚拟机(一个七种状态:running, idle, paused, shutdown, shut off, crashed, dying)
--with-snapshot 有快照的虚拟机
--without-snapshot 没有快照的虚拟机
--state-running 运行状态的虚拟机
--state-pause 挂起状态的虚拟机
--state-shutoff 关闭的虚拟机
--state-other 其他状态的虚拟机--autostart 设置了自动启动的虚拟机
--no-autostart 没有设置自动启动的虚拟机


保存虚拟机的内存状态:
# virsh save <domain> <file> [--verbose]
将运行中虚拟机内存状态保存在一个文件中,保存完成后关闭虚拟机。
(效果类似于virsh suspend,但同时保存了内存文件。)

恢复虚拟机:
# virsh restore <file>
导入虚拟机的内存文件。

查询虚拟机vcpu个数:
# virsh vcpucount <domain>
[root@kvm71 ~]# virsh vcpucount vm1-centos71
maximum      config         4
current      config         2
[root@kvm71 ~]#
[root@localhost ~]# virsh vcpucount centos67
maximum      config         2
maximum      live           2
current      config         1
current      live           1
[root@localhost ~]#




设置虚拟机最大/当前vcpu数量:
# virsh setvcpus <domain> <count> [--maximum] [--config] [--live] 【--current]
如果不加额外参数(即默认的--live),修改当前vcpu 个数,配置马上生效,但虚拟机重启后配置丢失。
添加--config,修改当前vcpu个数,配置在下次启动时生效。
添加--maximum和--config(为maximum的必须参数),修改最大vcpu个数,配置在下次启动时生效。

设置虚拟机当前内存:
# virsh setmem <domain> <size> [--config] [--live] [--current]
其中size 的默认单位是k,即KiB,也可指定其他单位,如M(或MiB), G(或GiB), T(或TiB)。
(注:上面这些单位的进位单位都是1024,如果使用KB,MB,GB或者TB,则进位单位为1000.)
--config 等参数的解释同上。

设置虚拟机的最大内存:
# virsh setmaxmem <domain> <size> [--config] [--live] [--current]
size单位及参数解释同上。

查询虚拟机磁盘统计情况:
# virsh domblkstat <domain> [--device <string>] [--human]
[root@kvm71 ~]# virsh domblkstat vm6-centos71 vda
vda rd_req 145
vda rd_bytes 1781760
vda wr_req 227
vda wr_bytes 1438208
vda flush_operations 165
vda rd_total_times 44855994
vda wr_total_times 169349123
vda flush_total_times 435495342
[root@kvm71 ~]# virsh domblkstat vm6-centos71 vda --human
Device: vda
number of read operations:      145
number of bytes read:           1781760
number of write operations:     227
number of bytes written:        1438208
number of flush operations:     165
total duration of reads (ns):   44855994
total duration of writes (ns):  169349123
total duration of flushes (ns): 435495342
[root@kvm71 ~]#



宿主机上虚拟机网络命令:
查询虚拟机网络:
# virsh net-list --all


查询网络配置文件:
# virsh net-dumpxml <network> [--inactive]
--inactive 查询非活动网络的配置文件

设置网卡自动启动:
# virsh net-autostart <network> [--disable]
加上--disable表示取消自动启动

由配置文件创建网络:
# virsh net-create <xmlfile>

由配置文件定义网络:
# virsh net-define <xmlfile>


停止网络:
# virsh net-destroy <net>

由网络名查询网络的UUID:
# virsh net-name <netUUID>

由网络UUID查询网络名:
# virsh net-uuid <netname>


启动一个非活动网络:
# virsh net-start <InactiveNet>
注:该网络应为已定义过的网络。


取消网络:
# virsh net-undefine <InactiveNet>

查看虚拟机磁盘读写次数
# virsh qemu-monitor-command domain --hmp --cmd info blockstats
[root@localhost ~]# date
2016 01 29 星期五 10:06:04 CST
[root@localhost ~]# virsh qemu-monitor-command centos71 --hmp --cmd info blockstats
drive-virtio-disk0: rd_bytes=168390144 wr_bytes=165299712 rd_operations=9016 wr_operations=29550 flush_operations=20020 wr_total_time_ns=13997884903 rd_total_time_ns=944691453 flush_total_time_ns=18132615806 rd_merged=761 wr_merged=310 idle_time_ns=3605645445
[root@localhost ~]# date
2016 01 29 星期五 10:06:09 CST
[root@localhost ~]# virsh qemu-monitor-command centos71 --hmp --cmd info blockstats
drive-virtio-disk0: rd_bytes=168390144 wr_bytes=165307904 rd_operations=9016 wr_operations=29551 flush_operations=20020 wr_total_time_ns=13998106355 rd_total_time_ns=944691453 flush_total_time_ns=18132615806 rd_merged=761 wr_merged=310 idle_time_ns=2820217463
[root@localhost ~]#
             可以看到,大约5秒的时间间隔内,对磁盘disk0的读次数为0,写次数为1。

























































查看虚拟机的hostname
[root@qy49 ~]# virsh domhostname centos71
error: failed to get hostname
error: this function is not supported by the connection driver: virDomainGetHostname
[root@qy49 ~]#

管理虚拟机进程
# virsh send-process-signal <domain> <pid> <signame>
例如:
[root@qy49 ~]# virsh send-process-signal centos71 2400 kill
error: this function is not supported by the connection driver: virDomainSendProcessSignal
[root@qy49 ~]#






















举报 使用道具
| 回复

共 0 个关于virsh 命令详情 (version 1.2.21)的回复 最后回复于 2016-11-30 14:48

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表