KVM常用命令合集(2)

修改虚拟机内存和CPU

virsh list --all 查看虚拟机列表

virsh shutdown vm12 关闭虚拟机

virsh destroy vm12 强制断电虚拟机

virsh edit vm12 查看和修改内存和CPU 大小
virsh start vm12   然后重启虚拟机
动态修改VCPU

VCPU只能热增加,不能减少

 进入虚拟机查看当前逻辑CPU数量
[root@192-168-5-90 ~]# cat /proc/cpuinfo| grep "processor"| wc -l
1
# 动态增加到4个
virsh setvcpus node-192.168.5.90-test 4 --live
# 再次查看CPU数量
[root@192-168-5-90 ~]# cat /proc/cpuinfo| grep "processor"| wc -l
4

# 动态修改内存(增减都可以)
# virsh qemu-monitor-command vm12 --hmp --cmd info balloon       # 查看当前内存大小
balloon: actual=7023his
# virsh qemu-monitor-command node-192.168.5.90-test --hmp --cmd balloon 8190       # 设置当前内存为8G

# virsh qemu-monitor-command node-192.168.5.90-test --hmp --cmd info balloon       # 查看当前内存大小
balloon: actual=8000
# virsh qemu-monitor-command node-192.168.5.90-test --hmp --cmd balloon 6000       # 设置当前内存为6G

# virsh qemu-monitor-command node-192.168.5.90-test --hmp --cmd info balloon       # 查看当前内存大小
balloon: actual=6000

修改虚拟机的名字

[root@kvm-server ~]# virsh shutdown CentOS-7.2-x86_64                                           #需要先关机,然后对虚拟机进行改名
[root@kvm-server ~]# cp /etc/libvirt/qemu/vm-node2.xml /etc/libvirt/qemu/vm-test.xml       #拷贝xml文件为要修改的名称,如:vm-test
[root@kvm-server ~]# grep '<name>' /etc/libvirt/qemu/vm-test.xml         #修改vm-test.xml中的name字段为vm-test <name>vm-test</name>
[root@kvm-server ~]# virsh undefine vm-node2                                                                 #删除之前的虚拟机
Domain vm-node2 has been undefined

[root@kvm-server ~]# virsh define /etc/libvirt/qemu/vm-test.xml                                               #定义新的虚拟机
Domain vm-test defined from /etc/libvirt/qemu/vm-test.xml

[root@kvm-server ~]# virsh list --all                                                                         #已完成改名操作
Id   Name                           State
\----------------------------------------------------
\-     CentOS-7.2-x86_64             shut off
\-     vm-node1                       shut off
\-     vm-test                       shut off

虚拟机增加磁盘

KVM虚拟机的磁盘镜像从存储方式上看,可以分为两种方式,第一种方式为存储于文件系统上,第二种方式为直接使用裸设备。裸设备的使用方式可以是直接使用裸盘,也可以是用LVM的方式。存于文件系统上的镜像有很多格式,如raw、cloop、cow、qcow、qcow2、vmdlk、vdi等,经常使用的是raw和qcow2。

raw:是简单的二进制镜像文件,一次性会把分配的磁盘空间占用。raw支持稀疏文件特性,稀疏文件特性就是文件系统会把分配的空字节文件记录在元数据中,而不会实际占用磁盘空间。

qcow2:第二代的QEMU写时复制格式,支持很多特性,如快照、在不支持稀疏特性的文件系统上也支持精简方式、AES加密、zlib压缩、后备方式。


[root@kvm-server ~]# qemu-img create -f raw /Data/vm-node1-10G.raw 10G                               #创建raw格式并且大小为10G的磁盘
Formatting '/Data/vm-node1-10G.raw', fmt=raw size=10737418240

[root@kvm-server ~]# qemu-img info /Data/vm-node1-10G.raw
image: /Data/vm-node1-10G.raw
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 0

[root@kvm-server ~]# virsh attach-disk vm-node1 /Data/vm-node1-10G.raw vdb --cache none               #临时生效,关机再开机后失效
Disk attached successfully

[root@kvm-server ~]# virsh dumpxml vm-node1                                                           #通过dumpxml找到下段配置文件
[root@kvm-server ~]# virsh edit vm-node1                                                               #使用edit命令,把找到的内容加到vda磁盘后面即可
  <disk type='file' device='disk'>
    <driver name='qemu' type='raw' cache='none'/>
    <source file='/Data/vm-node1-10G.raw'/>
    <backingStore/>
    <target dev='vdb' bus='virtio'/>
    <alias name='virtio-disk1'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
  </disk>

[root@vm-node1 ~]# fdisk -l                                                     #数据盘已挂载,可以进行分区、格式化、挂载等操作

Disk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00009df9

  Device Boot     Start         End     Blocks   Id System
/dev/vda1   *       2048   83886079   41942016   83 Linux

Disk /dev/vdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

磁盘镜像格式的转换方法:
[root@kvm-server ~]# qemu-img create -f raw test.raw 5G
Formatting 'test.raw', fmt=raw size=5368709120

[root@kvm-server ~]# qemu-img convert -p -f raw -O qcow2 test.raw test.qcow2                              
#参数-p显示进度,-f是指原有的镜像格式,-O是输出的镜像格式,然后是输入文件和输出文件
(100.00/100%)
[root@kvm-server ~]# qemu-img info test.qcow2
image: test.qcow2
file format: qcow2
virtual size: 5.0G (5368709120 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false


[root@kvm-server ~]# ll -sh test.*                                        
196K -rw-r--r-- 1 root root 193K Oct 19 16:19 test.qcow2
  0 -rw-r--r-- 1 root root 5.0G Oct 19 16:11 test.raw

克隆虚拟机


[root@kvm-server ~]# virsh shutdown CentOS-7.2-x86_64                                                     #必须要关机才能进行克隆
Domain CentOS-7.2-x86_64 is being shutdown

[root@kvm-server ~]# virsh list --all
Id   Name                           State
----------------------------------------------------
-     CentOS-7.2-x86_64             shut off
-     vm-node1                       shut off

[root@kvm-server ~]# virt-clone -o CentOS-7.2-x86_64 -n vm-node2 -f /opt/vm-node2.raw                       #参数含义:-o被克隆虚拟机的名字、-n克隆后虚拟机的名字、-f指定磁盘存储位置
WARNING The requested volume capacity will exceed the available pool space when the volume is fully allocated. (40960 M requested capacity > 36403 M available)
Allocating 'vm-node2.raw'                                                                                                             | 40 GB 00:01:03    

Clone 'vm-node2' created successfully.
[root@kvm-server ~]# virsh list --all                                                                       #克隆后为关机状态
Id   Name                           State
----------------------------------------------------
-     CentOS-7.2-x86_64             shut off
-     vm-node1                       shut off
-     vm-node2                       shut off

# 为虚拟机node-192.168.5.95-kubeadmin-master磁盘创建快照
# virsh snapshot-create-as --domain node-192.168.5.95-kubeadmin-master --name kubeadmin-sys-init --description '准备完成'
Domain snapshot kubeadmin-sys-init created

# 查看磁盘快照
# virsh snapshot-list node-192.168.5.95-kubeadmin-master
Name                 Creation Time             State
------------------------------------------------------------
kubeadmin-sys-init   2020-07-31 22:05:39 +0800 running

# 恢复磁盘快照
# virsh snapshot-revert node-192.168.5.95-kubeadmin-master kubeadmin-sys-init

# 删除磁盘快照
# virt snapshot-delete node-192.168.5.95-kubeadmin-master kubeadmin-sys-init

虚拟机增加网卡

一个完整的数据包从虚拟机到物理机的路径是:虚拟机–>QEMU虚拟机网卡–>虚拟化层–>内核网桥–>物理网卡

KVM默认情况下是由QEMU在Linux的用户空间模拟出来的并提供给虚拟机的。

全虚拟化:即客户机操作系统完全不需要修改就能运行于虚拟机中,客户机看不到真正的硬件设备,与设备的交互全是由纯软件虚拟的

半虚拟化:通过对客户机操作系统进行修改,使其意识到自己运行在虚拟机中。因此,全虚拟化和半虚拟化网卡的区别在于客户机是否需要修改才能运行在宿主机中。

半虚拟化使用virtio技术,virtio驱动因为改造了虚拟机的操作系统,让虚拟机可以直接和虚拟化层通信,从而大大提高了虚拟机性能。


[root@kvm-server ~]# virsh domiflist vm-node1
Interface Type       Source     Model       MAC
-------------------------------------------------------
vnet0     bridge     br0       virtio     52:54:00:40:75:05

[root@kvm-server ~]# virsh attach-interface vm-node1 --type bridge --source br0 --model virtio       #临时增加网卡的方法,关机后再开机新增网卡配置丢失
Interface attached successfully

[root@kvm-server ~]# virsh domiflist vm-node1
Interface Type       Source     Model       MAC
-------------------------------------------------------
vnet0     bridge     br0       virtio     52:54:00:40:75:05
vnet1     bridge     br0       virtio     52:54:00:5b:6c:cc

[root@kvm-server ~]# virsh edit vm-node1                                                               #永久生效方法一:修改配置文件增加如下内容
  <interface type='bridge'>                                                                         #永久生效方法二:使用virt-manager管理工具进行操作
    <mac address='52:54:00:11:90:7c'/>
    <source bridge='br0'/>
    <target dev='vnet1'/>
    <model type='virtio'/>
    <alias name='net1'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
  </interface>

[root@kvm-server ~]# virsh domiflist vm-node1                                                         #查找虚拟机网卡的MAC地址
Interface Type       Source     Model       MAC
-------------------------------------------------------
vnet0     bridge     br0       virtio     52:54:00:40:75:05
vnet1     bridge     br0       virtio     52:54:00:84:23:3d

[root@kvm-server ~]# virsh detach-interface vm-node1 --type bridge --mac 52:54:00:84:23:3d --current   #根据MAC地址删除网卡,即时生效,如果需要最终生效也要使用virsh edit 来修改配置文件
Interface detached successfully

[root@kvm-server ~]# virsh domiflist vm-node1
Interface Type       Source     Model       MAC
-------------------------------------------------------
vnet0     bridge     br0       virtio     52:54:00:40:75:05

virsh 常用命令

  • list [–all]: 列出虚拟机
  • nodeinfo: 查看真机信息
  • nodeinfo: 得到电脑详细配置名字
  • nodecpustats: 真机cpu 的状态
  • nodemenstats: 真机内存的详细信息
  • node-memory-tune: 允许你设置node的内存参数
  • capablilities: 打印虚拟机的特点
  • freecell: 打印出虚拟I机中可用的内存
  • virsh autostart vm-node1 #KVM物理机开机自启动虚拟机,配置后会在此目录生成配置文件/etc/libvirt/qemu/autostart/vm-node1.xmlvirsh autostart –disable vm-node1 #取消开机自启动

命令演示:

[root@desktop ~]# virsh list # 列出所有运行的虚拟机
Id   Name                           State
----------------------------------------------------
1     proxy                         running
4     web1                           running
5     web2                           running
13   cache                         running

[root@desktop ~]# virsh list --all # 列出所有虚拟机
Id   Name                           State
----------------------------------------------------
1     proxy                         running
4     web1                           running
5     web2                           running
13   cache                         running
-     client                         shut off
-     db1                           shut off
-     db2                           shut off
-     dns                           shut off

[root@desktop vm]# virsh hostname # 列出真机主机名
desktop

[root@desktop vm]# virsh sysinfo   # 列出真机的详细信息
<sysinfo type='smbios'>
<bios>
  <entry name='vendor'>HP</entry>
  <entry name='version'>Q50 Ver. 01.06.04</entry>
  <entry name='date'>02/07/2020</entry>
  <entry name='release'>6.4</entry>
</bios>
  ...
</memory_device>
</sysinfo>

[root@desktop vm]# virsh nodecpustats # 得到真机cpu状态
user:               565188290000000
system:             889250070000000
idle:             22823238820000000
iowait:               10113440000000

[root@desktop vm]# virsh nodememstats   # 得到真机内存状态
total :             7778448 KiB
free   :               469008 KiB
buffers:                 136 KiB
cached :               357196 KiB

[root@desktop vm]# virsh node-memory-tune # 允许你设置的node内存参数
Shared memory:
      shm_pages_to_scan 1250
      shm_sleep_millisecs 21
      shm_pages_shared 28710
      shm_pages_sharing 133337
      shm_pages_unshared 140701
      shm_pages_volatile 1451
      shm_full_scans 92316
      shm_merge_across_nodes 1

[root@desktop vm]# virsh capabilities # 打印虚拟机的特点
<capabilities>

<host>
  <uuid>39f13a7f-d328-0fb6-3508-5f1fea3d5774</uuid>
  <cpu>
    <arch>x86_64</arch>
    <model>Skylake-Client-IBRS</model>
    <vendor>Intel</vendor>
  ...
</capabilities>
[root@desktop vm]# virsh freecell # 打印虚拟机中可用内存
Total: 192656 KiB

virsh DOMAIN命令:

  • start|shutdown|reboot <vm-name>: 虚拟机启动、停止、重启
  • destroy <vm-name>: 强制停止虚拟机
  • define <vm-name>.xml: 根据xml文件创建
  • undefine <vm-name>: 根据虚拟机名称删除虚拟机
  • console <vm-name>: 连接虚拟机的console
  • edit <vm-name> : 修改虚拟机配置
  • autostart <vm-name>: 设置虚拟机自启动
  • domiflist <vm-name>: 查看虚拟机网卡信息
  • domblklist <vm-name>: 查看虚拟机硬盘信息
  • dominfo <vm-name>: 列出指定虚拟机的信息
  • suspend <vm-name>: 挂起指定虚拟机
  • resume <vm-name>: 恢复挂起的虚拟机
[root@desktop ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 1     proxy                          running
 4     web1                           running
 5     web2                           running
 16    cache                          running
 18    dns                            running
 -     client                         shut off
 -     db1                            shut off
 -     db2                            shut off

[root@desktop ~]# virsh shutdown dns # 关闭虚拟机dns
Domain dns is being shutdown

[root@desktop ~]# virsh start dns    # 启动虚拟机dns
Domain dns started

[root@desktop vm]# virsh dumpxml dns > dns.xml   # 导出dns虚拟机的配置文件
[root@desktop vm]# ls
dns.xml
[root@desktop vm]# virsh undefine dns            # 删除dns虚拟机
Domain dns has been undefined

[root@desktop vm]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 1     proxy                          running
 4     web1                           running
 5     web2                           running
 16    cache                          running
 -     client                         shut off
 -     db1                            shut off
 -     db2                            shut off

[root@desktop vm]# virsh define dns.xml           # 从xml配置文件生成一个虚拟机
Domain dns defined from dns.xml

[root@desktop vm]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 1     proxy                          running
 4     web1                           running
 5     web2                           running
 16    cache                          running
 -     client                         shut off
 -     db1                            shut off
 -     db2                            shut off
 -     dns                            shut off

[root@desktop vm]# virsh start dns
Domain dns started

[root@desktop vm]# virsh reboot dns               # 重启虚拟机dns
Domain dns is being rebooted

[root@desktop vm]# virsh autostart dns            # 设置虚拟机dns开机自启
Domain dns marked as autostarted

[root@desktop vm]# virsh autostart --disable dns  # 取消虚拟机dns开机自启
Domain dns unmarked as autostarted

[root@desktop vm]# virsh domiflist dns            # 显示虚拟机网卡接口
Interface  Type       Source     Model       MAC
-------------------------------------------------------

[root@desktop vm]# virsh domblklist dns            # 显示虚拟机磁盘文件
Target     Source
------------------------------------------------
vda        /opt/vm/dns.qcow2

[root@desktop vm]# virsh dominfo dns               # 显示虚拟机的信息
Id:             20
Name:           dns
UUID:           b8024ffe-9c00-4570-a802-72a94e6576ca
OS Type:        hvm
State:          running
CPU(s):         1
CPU time:       22.1s
Max memory:     2097152 KiB
Used memory:    2097152 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: selinux
Security DOI:   0
Security label: system_u:system_r:svirt_t:s0:c502,c596 (enforcing)

[root@desktop vm]# virsh suspend dns               # 挂起虚拟机
Domain dns suspended

[root@desktop vm]# virsh list
 Id    Name                           State
----------------------------------------------------
 1     proxy                          running
 4     web1                           running
 5     web2                           running
 16    cache                          running
 20    dns                            paused

[root@desktop vm]# virsh resume dns                # 继续运行挂起的虚拟机
Domain dns resumed

[root@desktop vm]# virsh desc dns                  # 显示虚拟机的描述信息
No description for domain: dns
  • domjobabort <vm-name>: 获取虚拟机的当前任务
  • dojobinfo <vm-name>: 显示虚拟机的任务
  • domstat <vm-name> : 显示虚拟机的状态
  • domcontrol<vm-name>: 返回虚拟机的状态ok or error
  • dumpxml<vm-name>: 直接显示demo的xml文件配置
  • edit <vm-name>: 编辑主机的配置文件
  • cpu-stats <vm-name>: 虚拟机的cpu状态
[root@desktop vm]# virsh domjobabort dns
error: Requested operation is not valid: no job is active on the domain

[root@desktop vm]# virsh domjobinfo dns
Job type:         None

[root@desktop vm]# virsh domstats dns
Domain: 'dns'
  state.state=1
  state.reason=5
  cpu.time=33212300555
  cpu.user=900000000
  cpu.system=4380000000
  balloon.current=2097152
  balloon.maximum=2097152
  balloon.swap_in=0
  balloon.swap_out=0
  balloon.major_fault=189
  balloon.minor_fault=161771
  balloon.unused=1879292
  balloon.available=2046976
  balloon.last-update=1647332025
  balloon.rss=492880
  vcpu.current=1
  vcpu.maximum=1
  vcpu.0.state=1
  vcpu.0.time=23010000000
  vcpu.0.wait=0
  net.count=0
  block.count=1
  block.0.name=vda
  block.0.path=/opt/vm/dns.qcow2
  block.0.rd.reqs=10188
  block.0.rd.bytes=281963008
  block.0.rd.times=1698863549
  block.0.wr.reqs=237
  block.0.wr.bytes=10442240
  block.0.wr.times=574631962
  block.0.fl.reqs=68
  block.0.fl.times=195155558
  block.0.allocation=31348801024
  block.0.capacity=42949672960
  block.0.physical=3388030976

[root@desktop vm]# virsh domcontrol dns
ok

[root@desktop vm]# virsh cpu-stats dns
CPU0:
        cpu_time             1.840709161 seconds
        vcpu_time            0.571028679 seconds
CPU1:
        cpu_time             2.275045726 seconds
        vcpu_time            0.665116430 seconds
CPU2:
        cpu_time             6.915661248 seconds
        vcpu_time            5.527787781 seconds
CPU3:
        cpu_time             3.793130275 seconds
        vcpu_time            2.515854323 seconds
CPU4:
        cpu_time             2.442409053 seconds
        vcpu_time            1.154978564 seconds
CPU5:
        cpu_time             4.330489085 seconds
        vcpu_time            3.044157700 seconds
CPU6:
        cpu_time             1.997121055 seconds
        vcpu_time            0.439759919 seconds
CPU7:
        cpu_time            10.725541636 seconds
        vcpu_time            9.225345458 seconds
Total:
        cpu_time            34.320107239 seconds
        user_time            0.900000000 seconds
        system_time          4.400000000 seconds
  • screenshot <vm-name>: 虚拟机截屏
  • setmen <vm-name> size: 设置虚拟机的内存
  • setmaxmen <vm-name> 设置虚拟机的最大内存
  • memtune <vm-name> 得到虚拟机分区的信息
  • blkiotune <vm-name> 得到虚拟机的磁盘信息
  • setvcpus(<vm-name> count) 设置虚拟机的虚拟cpu个数
  • dompmwakeup(<vm-name>) 唤醒挂起的vm-name
  • ttyconsole <vm-name> 输出设备用的终端
  • vcpucount <vm-name> 得到cpu个数
  • vcpuinfo<vm-name> 得到cpu的信息
  • vncdisplay<vm-name> 显示虚拟机vnc连接信息
[root@desktop ~]# virsh memtune dns   # 得到虚拟机分区的信息
hard_limit     : unlimited
soft_limit     : unlimited
swap_hard_limit: unlimited

[root@desktop ~]# virsh blkiotune dns  # 得到虚拟机的磁盘信息
weight         : 500
device_weight  :
device_read_iops_sec:
device_write_iops_sec:
device_read_bytes_sec:
device_write_bytes_sec:

[root@desktop ~]# virsh ttyconsole dns   # 输出设备用的终端
/dev/pts/13

[root@desktop ~]# virsh vcpucount dns    # 获取虚拟机cpu数目
maximum      config         1
maximum      live           1
current      config         1
current      live           1

[root@desktop ~]# virsh vcpuinfo dns     # Huoqu虚拟机CPU信息
VCPU:           0
CPU:            1
State:          running
CPU time:       27.0s
CPU Affinity:   yyyyyyyy

[root@desktop ~]# virsh vncdisplay dns   #  显示虚拟机vnc连接信息
:4

[root@desktop ~]# virsh dumpxml proxy | grep mac  # 宿主机上获取虚拟机proxy的IP地址
    <partition>/machine</partition>
    <type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
      <mac address='52:54:00:47:14:ea'/>
      <mac address='52:54:00:85:73:e9'/>
[root@desktop ~]#
[root@desktop ~]#
[root@desktop ~]# arp -a | grep '52:54:00:47:14:ea'
? (192.168.3.3) at 52:54:00:47:14:ea [ether] on br5

virsh 虚拟网络管理:

  • net-autostart <networkname> 自动启动网卡(default)
  • net-define <file> 把配置加载到文件
  • net-destory <networkname> 关闭网卡
  • net-dumpxml <networkname> 把网卡配置加载到文件
  • net-edit <networkname> 编辑网卡信息
  • net-info <networkname> 网卡信息
  • net-list 显示网卡
  • net-uuid <networkname> 得到网卡的id
  • net-name <id> 得到网卡的名字
  • net-start <networkname> 开启网卡
[root@desktop vm]# virsh net-list --all     # 显示所有虚拟网络
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              active     yes           yes
 lab                  active     yes           yes
 office               active     yes           yes

[root@desktop vm]# virsh net-define lab2.xml  # 从配置文件生成一个虚拟网络
Network lab2 defined from lab2.xml

[root@desktop vm]# virsh net-list --all
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              active     yes           yes
 lab                  active     yes           yes
 lab2                 inactive   no            yes
 office               active     yes           yes

[root@desktop vm]# virsh net-dumpxml lab > lab.xml   # 把虚拟网络配置保存到文件
[root@desktop vm]# virsh net-info lab
Name:           lab
UUID:           ed7ac3a2-da2b-4511-bdcc-e385d029dbd9
Active:         yes
Persistent:     yes
Autostart:      yes
Bridge:         virbr2

[root@desktop vm]# virsh net-uuid lab    #  得到虚拟的uuid
ed7ac3a2-da2b-4511-bdcc-e385d029dbd9

[root@desktop vm]# virsh net-start lab2  # 启动虚拟网络
Network lab2 started

[root@desktop vm]# virsh net-list --all
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              active     yes           yes
 lab                  active     yes           yes
 lab2                 active     no            yes
 office               active     yes           yes

[root@desktop vm]# virsh net-destroy lab2   ¥ 停止指定的虚拟网络
Network lab2 destroyed

[root@desktop vm]# virsh net-list --all
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              active     yes           yes
 lab                  active     yes           yes
 lab2                 inactive   no            yes
 office               active     yes           yes

[root@desktop vm]# virsh net-undefine lab2  # 删除指定的虚拟网络
Network lab2 has been undefined

[root@desktop vm]# virsh net-list --all
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 default              active     yes           yes
 lab                  active     yes           yes
 office               active     yes           yes

设备命令:

  • attach-device (<vm-name> file) 使用XML文件中设备定义在虚拟机中添加设备
  • attach-disk (<vm-name> ) 添加磁盘文件
  • attach-interface (<vm-name> type source ) 添加一个接口
  • update-device (<vm-name> file) 更新设备根据file
[root@desktop vm]# qemu-img create -f qcow2 test1.qcow2 1g # 创建一个1G磁盘的磁盘文件
Formatting 'test1.qcow2', fmt=qcow2 size=1073741824 encryption=off cluster_size=65536 lazy_refcounts=off
[root@desktop vm]# qemu-img create -f qcow2 test2.qcow2 1g #  # 创建一个1G磁盘的磁盘文件
Formatting 'test2.qcow2', fmt=qcow2 size=1073741824 encryption=off cluster_size=65536 lazy_refcounts=off

[root@desktop vm]# ls
dns.xml  installdisk.xml  lab2.xml  lab.xml  test1.qcow2  test2.qcow2

[root@desktop vm]# cat installdisk.xml  # 编辑一个xml文件
<disk type='file' device='disk'>
  <driver name='qemu' type='qcow2' cache='none'/>
  <source file='/root/vm/test1.qcow2'/>
  <target dev='vdb'/>
</disk>

[root@desktop ~]# virsh domblklist dns  # 查看虚拟机的磁盘文件
Target     Source
------------------------------------------------
vda        /opt/vm/dns.qcow2

[root@desktop vm]# virsh attach-device --domain dns installdisk.xml  # 使用XML文件中的设备定义在虚拟机中添加设备
Device attached successfully

[root@desktop vm]# virsh domblklist dns
Target     Source
------------------------------------------------
vda        /opt/vm/dns.qcow2
vdb        /root/vm/test1.qcow2

[root@desktop vm]# virsh attach-disk --domain dns --source /root/vm/test2.qcow2 --target vdc  --subdriver qcow2 --config --live  # 虚拟机添加磁盘文件
Disk attached successfully

[root@desktop vm]# virsh domblklist dns
Target     Source
------------------------------------------------
vda        /opt/vm/dns.qcow2
vdb        /root/vm/test1.qcow2
vdc        /root/vm/test2.qcow2

[root@desktop vm]# virsh detach-disk dns vdc  # 从虚拟机删除磁盘
Disk detached successfully

[root@desktop vm]# virsh detach-disk dns vdb
Disk detached successfully

[root@desktop vm]# virsh domblklist dns
Target     Source
------------------------------------------------
vda        /opt/vm/dns.qcow2

[root@desktop vm]# virsh domiflist dns
Interface  Type       Source     Model       MAC
-------------------------------------------------------

[root@desktop vm]# virsh attach-interface dns --type network --source default --model virtio  # 添加网卡,连接虚拟网络
Interface attached successfully

[root@desktop vm]# virsh domiflist dns
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet5      network    default    virtio      52:54:00:4d:69:d7

接口命令:

  • iface-define(file) 从文件里面定义一个接口
  • iface-dumpxml (lo) 显示接口的信息
  • iface-edit(lo) 编辑接口
  • iface-list 列出所有的接口
  • iface-name (mac) 根据mac得到名字
  • iface-mac (lo) 根据名字得到mac
  • iface-start (lo) 开启接口
  • iface-unbriged 解绑定网桥
  • iface-undefine(lo) 不定义配置文件
  • iface-begin(lo) 创建一个现有的接口设置
  • iface-commit 提交所有的改变有效,并且让接口工作
  • iface-rollbak 接口回滚
[root@desktop vm]# virsh iface-list --all      # 列出所有网卡 Name                 State      MAC Address--------------------------------------------------- br5                  active     00:0e:c6:82:4c:a0 eno1                 active     84:a9:3e:82:23:37 enp1s0f0             inactive   6c:b3:11:40:f1:46 enp1s0f1             inactive   6c:b3:11:40:f1:47 lo                   active     00:00:00:00:00:00[root@desktop vm]# virsh iface-dumpxml eno1   # 输出指定网卡信息<interface type='ethernet' name='eno1'>  <protocol family='ipv4'>    <ip address='192.168.50.228' prefix='24'/>  </protocol>  <protocol family='ipv6'>    <ip address='fe80::5669:5b18:2f36:2137' prefix='64'/>  </protocol>  <link speed='1000' state='up'/>  <mac address='84:a9:3e:82:23:37'/></interface>[root@desktop vm]# virsh iface-mac eno1       # 根据网卡名获取MAC地址84:a9:3e:82:23:37[root@desktop vm]# virsh iface-name 84:a9:3e:82:23:37  # 根据MAC地址获取网卡名eno1

存储池命令:

  • pool-auto (pool) 标记池自动启动
  • pool-build(pool) 建造一个池
  • pool-create(file) 根据文件创建池
  • pool-define(file) 定义但是不开启
  • pool-destory(pool) 销毁池,以后能恢复
  • pool-delete(pool) 删除池,以后不能恢复
  • pool-dumpxml(pool) 查看池的定义文件
  • pool-edit(pool) 编辑池的定义文件
  • pool-info 池的信息
  • pool-list 显示池列表
  • pool-name(id) 根据id得到name
  • pool-start(poop) 开启池
  • pool-uuid (pool) 返回一个池的uuid
[root@desktop vm]# virsh pool-list --all  # 列出所有池
 Name                 State      Autostart
-------------------------------------------
 bl02u2_test          active     yes
 default              active     yes
 Downloads            active     yes
 images               active     yes
 images-1             active     yes
 opt                  active     yes
 root                 active     yes
 vm                   active     yes

[root@desktop vm]# virsh pool-info vm   # 列出池vm的信息
Name:           vm
UUID:           6820e7d5-3210-496e-8573-5a19907b034e
State:          running
Persistent:     yes
Autostart:      yes
Capacity:       325.81 GiB
Allocation:     90.34 GiB
Available:      235.46 GiB

[root@desktop vm]# virsh pool-uuid vm  # 获取池vm的uuid
6820e7d5-3210-496e-8573-5a19907b034e

[root@desktop vm]# virsh pool-dumpxml vm  # 查看池的定义文件
<pool type='dir'>
  <name>vm</name>
  <uuid>6820e7d5-3210-496e-8573-5a19907b034e</uuid>
  <capacity unit='bytes'>349831188480</capacity>
  <allocation unit='bytes'>97005137920</allocation>
  <available unit='bytes'>252826050560</available>
  <source>
  </source>
  <target>
    <path>/opt/vm</path>
    <permissions>
      <mode>0755</mode>
      <owner>0</owner>
      <group>0</group>
      <label>unconfined_u:object_r:usr_t:s0</label>
    </permissions>
  </target>
</pool>

[root@desktop vm]# virsh pool-dumpxml images-1 > images-1.xml # 将池信息保存到xml文件中
[root@desktop vm]# virsh pool-destroy images-1                # 停止一个池
Pool images-1 destroyed
[root@desktop vm]# virsh pool-list --all
 Name                 State      Autostart
-------------------------------------------
 bl02u2_test          active     yes
 default              active     yes
 Downloads            active     yes
 images               active     yes
 images-1             inactive   yes
 opt                  active     yes
 root                 active     yes
 vm                   active     yes

[root@desktop vm]# virsh pool-delete images-1  # 删除一个池
Pool images-1 deleted

[root@desktop vm]# virsh pool-define images-1.xml  # 从定义文件生成一个池
Pool images-1 defined from images-1.xml

[root@desktop vm]# virsh pool-start images-1   # 启动一个池
Pool images-1 started

[root@desktop vm]# virsh pool-list
 Name                 State      Autostart
-------------------------------------------
 bl02u2_test          active     yes
 default              active     yes
 Downloads            active     yes
 images               active     yes
 images-1             active     no
 opt                  active     yes
 root                 active     yes
 vm                   active     yes

[root@desktop vm]# virsh pool-autostart  images-1   # 标记指定池自动启动
Pool images-1 marked as autostarted

[root@desktop vm]# virsh pool-list
 Name                 State      Autostart
-------------------------------------------
 bl02u2_test          active     yes
 default              active     yes
 Downloads            active     yes
 images               active     yes
 images-1             active     yes
 opt                  active     yes
 root                 active     yes
 vm                   active     yes

卷命令:

  • vol-delete(pool) 卷的删除
  • vol-upload(pool) 卷的加载
  • vol-list(pool) 列出卷
  • vol-info(default) 卷的信息
  • vol-name(path) 得到卷的名字
[root@desktop vm]# virsh vol-list vm   # 查看指定池中的卷
 Name                 Path
------------------------------------------------------------------------------
 @1@p                 /opt/vm/@1@p
 cache.qcow2          /opt/vm/cache.qcow2
 centos2.raw          /opt/vm/centos2.raw
 client.qcow2         /opt/vm/client.qcow2
 db1.qcow2            /opt/vm/db1.qcow2
 db2.qcow2            /opt/vm/db2.qcow2
 disk1.qcow2          /opt/vm/disk1.qcow2
 disk2.qcow2          /opt/vm/disk2.qcow2
 disk3.qcow2          /opt/vm/disk3.qcow2
 disk4.qcow2          /opt/vm/disk4.qcow2
 disk5.qcow2          /opt/vm/disk5.qcow2
 disk6.qcow2          /opt/vm/disk6.qcow2
 disk7.qcow2          /opt/vm/disk7.qcow2
 disk8.qcow2          /opt/vm/disk8.qcow2
 dns.qcow2            /opt/vm/dns.qcow2
 dsik9.qcow2          /opt/vm/dsik9.qcow2
 nfs.qcow2            /opt/vm/nfs.qcow2
 proxy.qcow2          /opt/vm/proxy.qcow2
 Server.qcow2         /opt/vm/Server.qcow2
 test1.qcow2          /opt/vm/test1.qcow2
 test2.qcow2          /opt/vm/test2.qcow2
 upload.txt           /opt/vm/upload.txt
 web01.qcow2          /opt/vm/web01.qcow2
 web02.qcow2          /opt/vm/web02.qcow2
 web03.qcow2          /opt/vm/web03.qcow2
 web04.qcow2          /opt/vm/web04.qcow2
 web1.qcow2           /opt/vm/web1.qcow2
 web2.qcow2           /opt/vm/web2.qcow2

[root@desktop vm]# virsh vol-info test1.qcow2 vm  # 查看存储池vm中的卷test1.qcow的信息
Name:           test1.qcow2
Type:           file
Capacity:       1.00 GiB
Allocation:     196.00 KiB

[root@desktop vm]# virsh vol-clone test1.qcow2 test1back.qcow2 vm # 在存储池中克隆卷test1.qcow2为卷test1back.qcow2

Vol test1back.qcow2 cloned from test1.qcow2

[root@desktop vm]# virsh vol-delete test1back.qcow2 vm  # 删除存储池中卷test1back.qcow2
Vol test1back.qcow2 deleted

[root@desktop vm]# virsh vol-dumpxml test1.qcow2 vm > test1.xml # 保存存储池中存储卷test1.qcow2的配置到test1.xml
[root@desktop vm]# virsh vol-delete test1.qcow2 vm
Vol test1.qcow2 deleted

[root@desktop vm]# virsh vol-create vm test1.xml  # 用配置文件test1.xml在存储池中生成一个卷
Vol test1.qcow2 created from test1.xml

复制

快照管理:

  • snapshot-create 使用 XML 生成快照
  • snapshot-create-as 使用一组参数生成快照
  • snapshot-current 获取或者设定当前快照
  • snapshot-delete 删除域快照
  • snapshot-dumpxml 为域快照转储 XML
  • snapshot-edit 编辑快照 XML
  • snapshot-info 快照信息
  • snapshot-list 为域列出快照
  • snapshot-parent 获取快照的上级快照名称
  • snapshot-revert 从快照恢复
[root@desktop ~]# virsh snapshot-list dns   # 列出虚拟机dns的快照
 Name                 Creation Time             State
------------------------------------------------------------

[root@desktop ~]# virsh snapshot-create-as --name dns-v1 --domain dns  # 为虚拟机生成快照dns-v1
Domain snapshot dns-v1 created
[root@desktop ~]# virsh snapshot-list dns
 Name                 Creation Time             State
------------------------------------------------------------
 dns-v1               2022-03-16 09:52:22 +0800 running

[root@desktop ~]# virsh snapshot-revert --domain dns --snapshotname dns-v1  # 从快照恢复

[root@desktop ~]# virsh snapshot-current --domain dns  # 获取当前快照
<domainsnapshot>
  <name>dns-v1</name>
  <state>running</state>
  <creationTime>1647395542</creationTime>
  <memory snapshot='internal'/>
  <disks>
    <disk name='vda' snapshot='internal'/>
  </disks>
...
</domainsnapshot>

[root@desktop ~]# virsh snapshot-info --domain dns --snapshotname dns-v1  # 输出指定的快照信息
Name:           dns-v1
Domain:         dns
Current:        yes
State:          running
Location:       internal
Parent:         -
Children:       0
Descendants:    0
Metadata:       yes

[root@desktop ~]# virsh snapshot-delete --domain dns --snapshotname dns-v1 # 删除快照
Domain snapshot dns-v1 deleted

[root@desktop ~]# virsh snapshot-list dns
 Name                 Creation Time             State
------------------------------------------------------------
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇