1. 虚拟机管理操作

  1. attach-device XML文件附加设备
  2. attach-disk 附加磁盘设备
  3. attach-interface 连接网络接口
  4. autostart 自动启动一个域
  5. blkdeviotune 设置或查询块设备I/O调整参数。
  6. blkiotune 获取或设置blkio参数
  7. blockcommit 开始块提交操作。
  8. blockcopy 开始一个块复制操作。
  9. blockjob 管理活动的块操作
  10. blockpull 从其背景图像填充磁盘。
  11. blockresize 调整域的块设备。
  12. change-media 更换CD或软驱的媒体
  13. console 连接到访客控制台
  14. cpu-baseline 计算基准CPU
  15. cpu-compare 比较主机CPU和由XML文件描述的CPU
  16. cpu-stats 显示域的CPU统计信息
  17. create XML文件创建一个域
  18. define XML文件中定义(但不要启动)域
  19. desc 显示或设置域的描述或标题
  20. destroy 摧毁(停止)一个域名
  21. detach-device XML文件中分离设备
  22. detach-disk 分离磁盘设备
  23. detach-interface 分离网络接口
  24. domdisplay 域显示连接URI
  25. domfsfreeze 冻结域的挂载文件系统。
  26. domfsthaw 解冻域的安装文件系统。
  27. domfsinfo 获取域安装的文件系统的信息。
  28. domfstrim 在域的挂载文件系统上调用fstrim
  29. domhostname 打印域的主机名
  30. domid 将域名或UUID转换为域ID
  31. domif-setlink 设置虚拟接口的链路状态
  32. domiftune 获取/设置虚拟接口的参数
  33. domjobabort 中止活动的域名工作
  34. domjobinfo 域名工作信息
  35. domname 将域IDUUID转换为域名
  36. domrename 重命名一个域
  37. dompmsuspend 使用电源管理功能优雅地暂停域
  38. dompmwakeup pmsuspended状态唤醒一个域
  39. domuuid 将域名或ID转换为域UUID
  40. domxml-from-native 将本地配置转换为域XML
  41. domxml-to-native 将域XML转换为本地配置
  42. dump 将域的核心转储到文件进行分析
  43. dumpxml XML中的域信息
  44. edit 编辑域的XML配置
  45. event 域名事件
  46. inject-nmi 向客人注入NMI
  47. iothreadinfo 查看域名IOThreads
  48. iothreadpin 控制域IOThread亲和力
  49. iothreadadd IOThread添加到来宾域
  50. iothreaddel 从来宾域中删除一个IOThread
  51. send-key 将密钥发送给客人
  52. send-process-signal 发送信号给进程
  53. lxc-enter-namespace LXC访客输入名称空间
  54. managedsave 管理域名状态保存
  55. managedsave-remove 删除管理的域名保存
  56. memtune 获取或设置内存参数
  57. perf 获取或设置perf事件
  58. metadata 显示或设置域的自定义XML元数据
  59. migrate 将域迁移到其他主机
  60. migrate-setmaxdowntime 设置最大可容忍的停机时间
  61. migrate-compcache 获取/设置压缩缓存大小
  62. migrate-setspeed 设置最大迁移带宽
  63. migrate-getspeed 获得最大的迁移带宽
  64. migrate-postcopy 切换运行从预复制到后复制的迁移
  65. numatune 获取或设置numa参数
  66. qemu-attach QEMU附件
  67. qemu-monitor-command QEMU监视器命令
  68. qemu-monitor-event QEMU监控事件
  69. qemu-agent-command QEMU访客代理命令
  70. reboot 重新启动一个域
  71. reset 重置一个域
  72. restore 从文件中保存的状态恢复域
  73. resume 恢复一个域名
  74. save 将域状态保存到文件
  75. save-image-define 重新定义一个域的保存状态文件的XML
  76. save-image-dumpxml 保存XML中的状态域信息
  77. save-image-edit 编辑域的已保存状态文件的XML
  78. schedinfo 显示/设置调度程序参数
  79. screenshot 截取当前的域控制台并将其存储到文件中
  80. set-user-password 在域内设置用户密码
  81. setmaxmem 改变最大内存限制
  82. setmem 改变内存分配
  83. setvcpus 更改虚拟CPU的数量
  84. shutdown 正常关闭域
  85. start 启动一个(以前定义的)非活动域
  86. suspend 暂停域名
  87. ttyconsole tty控制台
  88. undefine 取消定义一个域
  89. update-device XML文件更新设备
  90. vcpucount 域的vcpu数量
  91. vcpuinfo 详细的域名vcpu信息
  92. vcpupin 控制或查询域vcpu亲和力
  93. emulatorpin 控制或查询域模拟器亲和力
  94. vncdisplay vnc显示
  95. guestvcpus 查询或修改guest虚拟机中的vcpu状态(通过代理)
  96. setvcpu 附加/分离vcpu或线程组
  97. domblkthreshold 为给定块设备或其支持链元素设置块阈值事件的阈值

Domain Management(帮助关键字'Domain')

1.1 虚拟机状态

通过 virsh 管理虚拟机,虚拟机的状态显示为以下几种:

  1. runing 是运行状态
  2. idel 是空闲状态
  3. pause 暂停状态
  4. shutdown 关闭状态
  5. crash 虚拟机崩坏状态
  6. daying 垂死状态
  7. shut off 不运行完全关闭
  8. pmsuspended客户机被关掉电源中中断

1.2 虚拟机的创建、开机、重启、关机

首先看下 create 和 define 创建虚拟机异同:

  1. create 创建虚拟机
  2. [root@192.168.118.14 ~]#virsh list --all
  3. Id    Name                           State
  4. ----------------------------------------------------
  5. 76    centos                         running
  6.  
  7. [root@192.168.118.14 ~]#virsh create cirros.xml
  8. Domain cirros created from cirros.xml
  9.  
  10. [root@192.168.118.14 ~]#virsh list --all
  11. Id    Name                           State
  12. ----------------------------------------------------
  13. 76    centos                         running
  14. 79    cirros                         running
  15.  
  16. define 创建虚拟机
  17. [root@192.168.118.14 ~]#virsh list --all
  18. Id    Name                           State
  19. ----------------------------------------------------
  20. 76    centos                         running
  21.  
  22. [root@192.168.118.14 ~]#virsh define cirros.xml
  23. Domain cirros defined from cirros.xml
  24.  
  25. [root@192.168.118.14 ~]#virsh list --all
  26. Id    Name                           State
  27. ----------------------------------------------------
  28. 76    centos                         running
  29. -     cirros                         shut off

create  是通过 xml 格式文件创建虚拟机,创建完毕启动。当关闭虚拟机时,create创建的虚拟机消失。

define  是通过 xml 格式文件创建虚拟机,创建完毕不启动。当关闭虚拟机时,define 在 list 中依然能查看到。

开启、重启、关闭虚拟机

  1. 开启:
  2. virsh start domain
  3.  
  4. 重启:
  5. virsh reboot domain
  6.  
  7. 关闭:
  8. virsh shutdown domain - 正常关闭虚拟机
  9. virsh destroy domain - 直接断电关闭虚拟机

1.3 虚拟机 CPU 的操作

cpu-stats 宿主机和虚拟机cpu 运行时间状态

  1. [root@192.168.118.14 ~]#virsh cpu-stats centos
  2. CPU0:
  3.     cpu_time           131.344620748 seconds
  4.     vcpu_time           78.559064700 seconds
  5. CPU1:
  6.     cpu_time           145.769793063 seconds
  7.     vcpu_time           81.011781142 seconds
  8. CPU2:
  9.     cpu_time           132.633396527 seconds
  10.     vcpu_time           12.782286092 seconds
  11. CPU3:
  12.     cpu_time            49.708745382 seconds
  13.     vcpu_time           11.473885669 seconds
  14. Total:
  15.     cpu_time           459.456555720 seconds
  16.     user_time            8.220000000 seconds
  17.     system_time         17.180000000 seconds

vcpucount 查看虚拟机 vcpu 的配置数量

  1. [root@192.168.118.14 ~]#virsh vcpucount centos
  2. maximum      config         2
  3. maximum      live           2
  4. current      config         2
  5. current      live           2

vcpuinfo 查看 vcpu 详细信息,vcpu0 运行在宿主机的 cpu0 上。

  1. [root@192.168.118.14 ~]#virsh vcpuinfo cirros
  2. VCPU:           0
  3. CPU:            3
  4. State:          running
  5. CPU time:       8.1s
  6. CPU Affinity:   yyyy

1.3.1 vcpu 亲和性绑定

使用 virsh vcpuinfo 命令查看实例 vcpu 和 物理 cpu 的对应关系

  1. [root@192.168.118.11 ~]#virsh vcpuinfo cirros
  2. VCPU: 0
  3. CPU: 2
  4. State: running
  5. CPU time: 3.5s
  6. CPU Affinity: yyyy
  7.  
  8. VCPU: 1
  9. CPU: 3
  10. State: running
  11. CPU time: 1.0s
  12. CPU Affinity: yyyy

可以发现, vcpu0 绑定到物理 cpu2 上, vcpu1 绑定到物理 cpu3 上。

使用 emulatorpin 命令可以查看虚拟机可以使用哪些物理逻辑 cpu

  1. [root@192.168.118.11 ~]#virsh emulatorpin cirros
  2. emulator: CPU Affinity
  3. ----------------------------------
  4.        *: 0-3

宿主机本身有 4个 cpu。 意味着 cirros 虚拟机可以随意在这 4个cpu上切换。

在线绑定虚拟机 cpu

可以强制将虚拟机绑定到一个 cpu 区间。例如,将虚拟机 cirros 的 vcpu 绑定在 1-3 区间调度。

  1. [root@192.168.118.11 ~]#virsh emulatorpin cirros 1-3
  2. [root@192.168.118.11 ~]#virsh emulatorpin cirros
  3. emulator: CPU Affinity
  4. ----------------------------------
  5.        *: 1-3

这样,就绑定了虚拟机在 1-3 cpu 区间之类切换。

上面是为虚拟机设置一个物理 cpu 区间,如果要一对一绑定就需要使用 vcpupin

  1. [root@192.168.118.11 ~]#virsh vcpuinfo cirros
  2. VCPU:           0
  3. CPU:            3
  4. State:          running
  5. CPU time:       3.6s
  6. CPU Affinity:   yyyy
  7.  
  8. VCPU:           1
  9. CPU:            2
  10. State:          running
  11. CPU time:       1.0s
  12. CPU Affinity:   yyyy
  13.  
  14. # 将vcpu0 绑定到 cpu0
  15. [root@192.168.118.11 ~]#virsh vcpupin cirros 0 0
  16. # 将 vcpu1 绑定到 cpu1
  17. [root@192.168.118.11 ~]#virsh vcpupin cirros 1 1
  18. [root@192.168.118.11 ~]#virsh vcpuinfo cirros
  19. VCPU:           0
  20. CPU:            0
  21. State:          running
  22. CPU time:       3.6s
  23. CPU Affinity:   y---
  24.  
  25. VCPU:           1
  26. CPU:            1
  27. State:          running
  28. CPU time:       1.0s
  29. CPU Affinity:   -y--

cpu 绑定技术原理:cpu绑定实际上是 Libvirt 通过 cgroup 来实现的,通过cgroup直接去绑定KVM 虚拟机进程。cgroup 不仅可以做 cpu 绑定,还可以限制虚拟机磁盘、网络资源控制。

cpu 绑定技术适用的应用场景:

  系统的 CPU 压力较大

  多核 cpu 压力不平衡,可以通过 cpu vcpupin 技术人工进行调配。

1.3.2 动态调配 vcpu 个数(可增大不可减少)

在 kvm 中可动态的调整 vcpu 的个数,简单理解就是,设置一个 vcpu 最大值,这个最大值肯定是要大于当前 vcpu 数量的,然后就可以在 当前 vcpu 数量和 设置的最大vcpu数量之间 动态的调整 vcpu 的个数,如下示例演示:

(1)在虚拟机关闭的情况下,调整 vcpu 最大支持的数目

  1. [root@192.168.118.14 ~]#virsh list --all
  2. Id    Name                           State
  3. ----------------------------------------------------
  4. 76    centos                         running
  5. -     cirros                         shut off
  6.  
  7. # 查看未虚拟机 cirros 目前主机信息
  8. [root@192.168.118.14 ~]#virsh dominfo cirros
  9. Id:             -
  10. Name:           cirros
  11. UUID:           b7acba73-f70c-4c59-b144-cc20a7665ad4
  12. OS Type:        hvm
  13. State:          shut off
  14. CPU(s):         1
  15. Max memory:     1048576 KiB
  16. Used memory:    0 KiB
  17. Persistent:     yes
  18. Autostart:      disable
  19. Managed save:   no
  20. Security model: selinux
  21. Security DOI:   0
  22.  
  23. # 关机状态下修改虚拟机 cirros 最大支持的 vcpu 个数
  24. [root@192.168.118.14 ~]#virsh setvcpus cirros --maximum 4 --config

(2)开机状态下动态的调整 vcpu 的数目

  1. # 开启虚拟机
  2. [root@192.168.118.14 ~]#virsh start cirros
  3. Domain cirros started
  4.  
  5. # 查看开机 虚拟机 cirros 主机信息
  6. [root@192.168.118.14 ~]#virsh dominfo cirros
  7. Id:             89
  8. Name:           cirros
  9. UUID:           b7acba73-f70c-4c59-b144-cc20a7665ad4
  10. OS Type:        hvm
  11. State:          running
  12. CPU(s):         1
  13. CPU time:       8.0s
  14. Max memory:     1048576 KiB
  15. Used memory:    1048576 KiB
  16. Persistent:     yes
  17. Autostart:      disable
  18. Managed save:   no
  19. Security model: selinux
  20. Security DOI:   0
  21. Security label: system_u:system_r:svirt_t:s0:c123,c791 (permissive)
  22.  
  23. # 动态调整 vcpu 为 2
  24. [root@192.168.118.14 ~]#virsh setvcpus cirros 2
  25.  
  26. # 查看调整 vcpu 是否成功
  27. [root@192.168.118.14 ~]#virsh dominfo cirros
  28. Id:             89
  29. Name:           cirros
  30. UUID:           b7acba73-f70c-4c59-b144-cc20a7665ad4
  31. OS Type:        hvm
  32. State:          running
  33. CPU(s):         2
  34. CPU time:       20.7s
  35. Max memory:     1048576 KiB
  36. Used memory:    1048576 KiB
  37. Persistent:     yes
  38. Autostart:      disable
  39. Managed save:   no
  40. Security model: selinux
  41. Security DOI:   0
  42. Security label: system_u:system_r:svirt_t:s0:c123,c791 (permissive)

1.4 虚拟机 内存 操作

1.4.1 虚拟机内存限制

memtune 查看或设置内存参数

作用:限制虚拟机在物理机host上申请内存的大小。

  1. [root@192.168.118.14 ~]#virsh memtune centos
  2. hard_limit     : unlimited
  3. soft_limit     : unlimited
  4. swap_hard_limit: unlimited
  5.  
  6. hard_limit :设置虚拟机可用物理内存最大值 (单位KB
  7. soft_limit:设置虚拟机软限制最大上限(单位KB
  8. swap_hard_limit:设置虚拟机 swap 分区硬上限(单位KB

设置:

  1. [root@192.168.118.14 ~]#virsh memtune centos --hard-limit 4G --config --live
  2. [root@192.168.118.14 ~]#virsh memtune centos --swap-hard-limit 4G --config --live
  3. [root@192.168.118.14 ~]#virsh memtune centos --soft-limit 2G --config --live
  4. [root@192.168.118.14 ~]#virsh memtune centos
  5. hard_limit     : 4194304
  6. soft_limit     : 2097152
  7. swap_hard_limit: 4194304
  8.  
  9. 说明:
    --config  设置永久配置
    --live  设置当前启动状态配置

1.4.2 动态修改内存大小(可增大可减小)

动态修改内存和动态调配 vcpu 配置差不多,都是通过设置一个最大值,然后就可以设置的内存 大于等于当前内存了。

(1)关机状态下,修改虚拟机的最大内存数

  1. [root@192.168.118.14 ~]#virsh list --all
  2. Id    Name                           State
  3. ----------------------------------------------------
  4. 90    cirros                         running
  5. -     centos                         shut off
  6.  
  7. [root@192.168.118.14 ~]#virsh dominfo centos
  8. Id:             -
  9. Name:           centos
  10. UUID:           b149f8c5-f4b4-4d2d-a10d-81b8b13c68eb
  11. OS Type:        hvm
  12. State:          shut off
  13. CPU(s):         1
  14. Max memory:     1048576 KiB
  15. Used memory:    0 KiB
  16. Persistent:     yes
  17. Autostart:      disable
  18. Managed save:   no
  19. Security model: selinux
  20. Security DOI:   0
  21.  
  22. [root@192.168.118.14 ~]#virsh setmaxmem centos 10G --config
  23. [root@192.168.118.14 ~]#virsh dominfo centos
  24. Id:             -
  25. Name:           centos
  26. UUID:           b149f8c5-f4b4-4d2d-a10d-81b8b13c68eb
  27. OS Type:        hvm
  28. State:          shut off
  29. CPU(s):         1
  30. Max memory:     10485760 KiB
  31. Used memory:    0 KiB
  32. Persistent:     yes
  33. Autostart:      disable
  34. Managed save:   no
  35. Security model: selinux
  36. Security DOI:   0

(2)开启虚拟机,进行内存大小的调整

调整前,虚拟机内存大小:

  1. [root@192.168.118.14 ~]#virsh setmem centos 2G --config --live
  2. [root@192.168.118.14 ~]#virsh dominfo centos
  3. Id:             93
  4. Name:           centos
  5. UUID:           b149f8c5-f4b4-4d2d-a10d-81b8b13c68eb
  6. OS Type:        hvm
  7. State:          running
  8. CPU(s):         1
  9. CPU time:       92.1s
  10. Max memory:     10485760 KiB
  11. Used memory:    2097152 KiB
  12. Persistent:     yes
  13. Autostart:      disable
  14. Managed save:   no
  15. Security model: selinux
  16. Security DOI:   0
  17. Security label: system_u:system_r:svirt_t:s0:c645,c949 (permissive)

调整后,虚拟机内存大小:

内存动态调整完成。

1.5 虚拟机 磁盘 的操作

1.5.1 磁盘的新增和删除

磁盘的新增和删除有两种实现方式:

  (1)attach-device 和 detach-device

  (2)attach-disk 和 detach-disk

在新增或删除磁盘之前,通过 qemu-img 创建一个虚拟磁盘文件:

  1. [root@192.168.118.14 ~]#qemu-img create -f qcow2 /images/share-device.qcow2 -o size=5G,preallocation=metadata

第一种方式:

通过 attach-device 新增磁盘时,需要通过 xml 来添加。

编写 xml 文件,这里有个技巧:通过 virsh edit cirros 编辑 xml 文件,复制关于 disk 的部分进行修改,这样不容易出现报错。

  1. [root@192.168.118.14 /images]#cat share-device.xml
  2. <disk type='file' device='disk'>
  3.   <driver name='qemu' type='qcow2' cache='writeback' io='threads'/>
  4.   <source file='/images/share-device.qcow2'/>
  5.   <target dev='vdb' bus='virtio'/>
  6. </disk>

通过 attach-device 将磁盘附加到虚拟机上

  1. [root@192.168.118.14 /images]#virsh attach-device cirros /images/share-device.xml --config --live
  2. Device attached successfully
  3. # 通过 domblklist 可查看虚拟机目前挂载的磁盘信息
  4. [root@192.168.118.14 /images]#virsh domblklist cirros
  5. Target Source
  6. ------------------------------------------------
  7. vda /images/cirros-0.3.5-i386-disk.img
  8. vdb /images/share-device.qcow2

查看虚拟机磁盘:

删除添加过的磁盘:

  1. [root@192.168.118.14 /images]#virsh detach-device cirros /images/share-device.xml --config --live
  2. Device detached successfully
  3. # 通过 domblklist 可查看虚拟机目前挂载的磁盘信息
  4. [root@192.168.118.14 /images]#virsh domblklist cirros
  5. Target Source
  6. ------------------------------------------------
  7. vda /images/cirros-0.3.5-i386-disk.img

查看虚拟机磁盘:

删除成功。

注意:使用 attach-device 和 detach-device 时,文件的指向是 xml 文件,而不是虚拟磁盘文件。

第二种方式:

  通过 attach-disk 新增磁盘时,需要通过 虚拟磁盘文件 来添加。

添加虚拟磁盘:

  1. [root@192.168.118.14 /images]#virsh attach-disk cirros /images/share-device.qcow2 vdb --live --config
  2. Disk attached successfully

删除虚拟磁盘:

  1. [root@192.168.118.14 /images]#virsh detach-disk cirros /images/share-device.qcow2  --live --config
  2. Disk detached successfully

1.6 虚拟机 网卡 的操作

主要操作命令:

  1. domiflist 查看虚拟机中所有的网卡设备
  2. attach-interface 为虚拟机添加网卡设备
  3. detach-interface:删除虚拟机网卡设备

示例演示:

(1)查看虚拟机所有网络设备:

  1. [root@192.168.118.14 /images]#virsh domiflist cirros
  2. Interface  Type       Source     Model       MAC
  3. -------------------------------------------------------
  4. vnet0      network    default    rtl8139     52:54:00:c6:aa:b7

(2)为虚拟机再添加一张网卡:

  1. [root@192.168.118.14 /images]#virsh attach-interface cirros --type bridge --source virbr0 --live --config
  2. Interface attached successfully
  3.  
  4. [root@192.168.118.14 /images]#virsh domiflist cirros
  5. Interface  Type       Source     Model       MAC
  6. -------------------------------------------------------
  7. vnet0      network    default    rtl8139     52:54:00:c6:aa:b7
  8. vnet1      bridge     virbr0     rtl8139     52:54:00:de:6d:04

网卡添加成功。

(3)删除网络设备:

  1. [root@192.168.118.14 ~]#virsh detach-interface cirros --type bridge --mac 52:54:00:e0:2c:44 --live --config
  2. Interface detached successfully
  3.  
  4. [root@192.168.118.14 ~]#virsh domiflist cirros
  5. Interface  Type       Source     Model       MAC
  6. -------------------------------------------------------
  7. vnet0      network    default    rtl8139     52:54:00:c6:aa:b7

1.7 虚拟机 其他 的一些操作

1.7.1 autostart

autostart :设置物理机开机启动虚拟机

查看方式:

  1. [root@192.168.118.14 ~]#virsh dominfo cirros
  2. Id:             96
  3. Name:           cirros
  4. UUID:           3748ef4e-1c84-4f28-9a4b-53ad22310bfd
  5. OS Type:        hvm
  6. State:          running
  7. CPU(s):         1
  8. CPU time:       25.1s
  9. Max memory:     1048576 KiB
  10. Used memory:    1048576 KiB
  11. Persistent:     yes
  12. Autostart:      disable
  13. Managed save:   no
  14. Security model: selinux
  15. Security DOI:   0
  16. Security label: system_u:system_r:svirt_t:s0:c184,c860 (permissive)

其中 autostart 选项就是是否开机启动。disable 否,enable 是

设置:

  1. [root@192.168.118.14 ~]#virsh autostart cirros # 设置开机启动
  2. [root@192.168.118.14 ~]#virsh autostart cirros --disable # 关闭开机启动

1.7.2 domdisplay

显示虚拟机连接的 URI

  1. [root@192.168.118.14 ~]#virsh domdisplay centos
  2. vnc://127.0.0.1:0

1.7.3 dumpxml

导出虚拟机的 xml 文件

  1. [root@192.168.118.14 ~]#virsh dumpxml centos > centos.xml

2. 虚拟机 监控 操作

  1. domblkerror 在块设备上显示错误
  2. domblkinfo 域块设备大小信息
  3. domblklist 列出所有的域块
  4. domblkstat 获取域的设备块统计信息
  5. domcontrol 域控制接口状态
  6. domif-getlink 获取虚拟接口的链接状态
  7. domifaddr 获取正在运行的域的网络接口地址
  8. domiflist 列出所有的域虚拟接口
  9. domifstat 获取域的网络接口统计信息
  10. dominfo 域信息
  11. dommemstat 获取域的内存统计信息
  12. domstate 域状态
  13. domstats 获取有关一个或多个域的统计信息
  14. domtime 域时间
  15. list 列出域名

Domain Monitoring(帮助关键字'monitor')

命令使用详解:

domblkerror:查看虚拟机磁盘块错误信息

  1. [root@192.168.118.14 ~]#virsh domblkerror centos
  2. No errors found

domblklist:查看虚拟机磁盘信息及位置

  1. [root@192.168.118.14 ~]#virsh domblklist centos
  2. Target Source
  3. ------------------------------------------------
  4. vda /images/CentOS-7-x86_64-GenericCloud-1511.qcow2

domblkstat:查看磁盘 I/O 等信息

  1. [root@192.168.118.14 ~]#virsh domblkstat centos
  2. rd_req 5476
  3. rd_bytes 119216128
  4. wr_req 2271
  5. wr_bytes 3498496
  6. flush_operations 50
  7. rd_total_times 1649970675
  8. wr_total_times 2319258979
  9. flush_total_times 627588120

domcontrol:查看虚拟机接口信息

  1. [root@192.168.118.14 ~]#virsh domcontrol centos
  2. ok

domif-getlink:查看虚拟机某一个虚拟接口的状态

  1. [root@192.168.118.14 ~]#virsh domif-getlink centos vnet0
  2. vnet0 up

domifaddr:查看虚拟机网卡信息

  1. [root@192.168.118.14 ~]#virsh domifaddr centos
  2. Name MAC address Protocol Address
  3. -------------------------------------------------------------------------------
  4. vnet0 52:54:00:cb:f1:75 ipv4 192.168.122.40/24

domiflist:查看网卡详细信息

  1. [root@192.168.118.14 ~]#virsh domiflist centos
  2. Interface Type Source Model MAC
  3. -------------------------------------------------------
  4. vnet0 network default rtl8139 52:54:00:cb:f1:75

domifstat:查看虚拟机网卡流量详细信息

  1. [root@192.168.118.14 ~]#virsh domifstat centos vnet0
  2. vnet0 rx_bytes 49615
  3. vnet0 rx_packets 789
  4. vnet0 rx_errs 0
  5. vnet0 rx_drop 0
  6. vnet0 tx_bytes 19422
  7. vnet0 tx_packets 239
  8. vnet0 tx_errs 0
  9. vnet0 tx_drop 0

dominfo:查看虚拟机的详细信息

  1. [root@192.168.118.14 ~]#virsh dominfo centos
  2. Id: 98
  3. Name: centos
  4. UUID: 35abdeb1-ef6d-41b4-9c4c-61e3a660c666
  5. OS Type: hvm
  6. State: running
  7. CPU(s): 1
  8. CPU time: 114.0s
  9. Max memory: 1048576 KiB
  10. Used memory: 1048576 KiB
  11. Persistent: yes
  12. Autostart: disable
  13. Managed save: no
  14. Security model: selinux
  15. Security DOI: 0
  16. Security label: system_u:system_r:svirt_t:s0:c555,c926 (permissive)

dommemstat:查看内存状态

  1. [root@192.168.118.14 ~]#virsh dommemstat centos
  2. actual 1048576
  3. swap_in 3733319892074496
  4. rss 404032

domstate:查看虚拟机状态

  1. [root@192.168.118.14 ~]#virsh domstate centos
  2. running

domstats:查看虚拟机状态参数

  1. [root@192.168.118.14 ~]#virsh domstats centos
  2. Domain: 'centos'
  3. state.state=1
  4. state.reason=1
  5. cpu.time=118798719298
  6. cpu.user=7620000000
  7. cpu.system=11920000000
  8. balloon.current=1048576

3. 宿主机及 Hypervisor 信息

  1. allocpages 操纵页面池大小
  2. capabilities 功能
  3. cpu-models CPU型号
  4. domcapabilities 域功能
  5. freecell NUMA可用内存
  6. freepages NUMA免费网页
  7. hostname 打印管理程序主机名
  8. maxvcpus 连接vcpu最大
  9. node-memory-tune 获取或设置节点内存参数
  10. nodecpumap 节点cpu映射
  11. nodecpustats 打印节点的cpu统计信息。
  12. nodeinfo 节点信息
  13. nodememstats 打印节点的内存统计信息。
  14. nodesuspend 暂停主机节点一段给定的时间
  15. sysinfo 打印管理程序sysinfo
  16. uri 打印管理程序规范的URI
  17. version 显示版本
  18.  
  19. 作者:王鸣南曲
  20. 链接:https://www.jianshu.com/p/905b7db05100
  21. 来源:简书
  22. 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

Host and Hypervisor(帮助关键字'host')

主要常用的几个选项:

hostname:查看宿主机名

  1. [root@192.168.118.14 ~]#virsh hostname
  2. kvm-test

maxvcpus:查看宿主机 vcpu 使用的最大值

  1. [root@192.168.118.14 ~]#virsh maxvcpus
  2. 16

nodeinfo:查看宿主机信息

  1. [root@192.168.118.14 ~]#virsh nodeinfo
  2. CPU model: x86_64
  3. CPU(s): 4
  4. CPU frequency: 2397 MHz
  5. CPU socket(s): 4
  6. Core(s) per socket: 1
  7. Thread(s) per core: 1
  8. NUMA cell(s): 1
  9. Memory size: 8010940 KiB

sysinfo:查看宿主机系统参数信息

  1. [root@192.168.118.14 ~]#virsh sysinfo
  2. <sysinfo type='smbios'>
  3. <bios>
  4. <entry name='vendor'>Seabios</entry>
  5. <entry name='version'>0.5.1</entry>
  6. <entry name='date'>01/01/2011</entry>
  7. <entry name='release'>1.0</entry>
  8. </bios>
  9. ... ...

uri:查看连接宿主机的 uri

  1. [root@192.168.118.14 ~]#virsh uri
  2. qemu:///system

version:查看宿主机安装libvirt QEMU 的版本信息

  1. [root@192.168.118.14 ~]#virsh version
  2. Compiled against library: libvirt 1.2.17
  3. Using library: libvirt 1.2.17
  4. Using API: QEMU 1.2.17
  5. Running hypervisor: QEMU 1.5.3

4. interface 相关的选项

  1. iface-begin 创建当前接口设置的快照,可以稍后提交(iface-commit)或恢复(iface-rollback
  2. iface-bridge 创建一个桥接设备并将一个现有的网络设备连接到它
  3. iface-commit 提交自iface-开始和自由恢复点以来所做的更改
  4. iface-define 定义不活动的持久物理主机接口或从XML文件修改现有的持久物理主机接口
  5. iface-destroy 销毁一个物理主机接口(禁用它/“if-down”)
  6. iface-dumpxml 接口信息在XML
  7. iface-edit 编辑物理主机接口的XML配置
  8. iface-list 列出物理主机接口
  9. iface-mac 将接口名称转换为接口MAC地址
  10. iface-name 将接口MAC地址转换为接口名称
  11. iface-rollback 回滚到通过iface-begin创建的先前保存的配置
  12. iface-start 启动一个物理主机接口(启用/“if-up”)
  13. iface-unbridge 取消其从属设备后取消定义桥接设备
  14. iface-undefine 取消定义物理主机接口(将其从配置中移除)

Interface(帮助关键字'interface')

4.1 iface-bridge 和 iface-unbridge

iface-bridge 创建网桥

iface-unbridge 删除网桥

注意:在使用 iface-bridge 创建网桥之前,请将 NetworkManager 服务关闭,否则会造成创建完网桥之后,网络断开的情况。

  1. # 查看网桥设备
  2. [root@localhost ~]# brctl show
  3. bridge name bridge id STP enabled interfaces
  4.  
  5. # 关闭 NetworkManager 服务
  6. [root@localhost ~]# systemctl stop NetworkManager ; systemctl disable NetworkManager
  7. Removed symlink /etc/systemd/system/multi-user.target.wants/NetworkManager.service.
  8. Removed symlink /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service.
  9. Removed symlink /etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service.
  10. # 创建网桥
  11. [root@localhost ~]# virsh iface-bridge eno16777736 br0
  12. Created bridge br0 with attached device eno16777736
  13. Bridge interface br0 started
  14.  
  15. # 查看创建的网桥信息
  16. [root@localhost ~]# brctl show
  17. bridge name bridge id STP enabled interfaces
  18. br0 8000.000c293178be yes eno16777736
  19.  
  20. [root@localhost ~]# ifconfig
  21. br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  22. inet 192.168.118.11 netmask 255.255.255.0 broadcast 192.168.118.255
  23. inet6 fe80::20c:29ff:fe31:78be prefixlen 64 scopeid 0x20<link>
  24. ether 00:0c:29:31:78:be txqueuelen 0 (Ethernet)
  25. RX packets 121 bytes 16478 (16.0 KiB)
  26. RX errors 0 dropped 0 overruns 0 frame 0
  27. TX packets 66 bytes 7360 (7.1 KiB)
  28. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  29.  
  30. eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
  31. ether 00:0c:29:31:78:be txqueuelen 1000 (Ethernet)
  32. RX packets 2533 bytes 573618 (560.1 KiB)
  33. RX errors 0 dropped 0 overruns 0 frame 0
  34. TX packets 1673 bytes 643967 (628.8 KiB)
  35. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
  36.  
  37. lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
  38. inet 127.0.0.1 netmask 255.0.0.0
  39. inet6 ::1 prefixlen 128 scopeid 0x10<host>
  40. loop txqueuelen 0 (Local Loopback)
  41. RX packets 0 bytes 0 (0.0 B)
  42. RX errors 0 dropped 0 overruns 0 frame 0
  43. TX packets 0 bytes 0 (0.0 B)
  44. TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

通过上面可以看到,物理网卡 eno16777736 的ip地址已经在 br0上生效了,而 物理网卡已经作为一个桥接设备。

  1. [root@localhost ~]# cd /etc/sysconfig/network-scripts/
  2. [root@localhost network-scripts]# ls ifcfg-*
  3. ifcfg-br0 ifcfg-eno16777736 ifcfg-lo

查看配置文件,iface-bridge 是直接将配置文件也改写了,也就是说,通过 iface-bridge 创建的桥接,重启依然生效。

iface-unbridge 删除网桥的使用:

  1. [root@localhost ~]# virsh iface-unbridge br0
  2. Device eno16777736 un-attached from bridge br0
  3. Interface eno16777736 started
  4.  
  5. [root@localhost ~]# brctl show
  6. bridge name bridge id STP enabled interfaces
  7. [root@localhost ~]# virsh iface-list --all
  8. Name State MAC Address
  9. ---------------------------------------------------
  10. eno16777736 active 00:0c:29:31:78:be
  11. lo active 00:00:00:00:00:00

网桥 br0 删除成功。

4.2 iface-list 查看宿主机所有的 interface接口

  1. [root@localhost ~]# virsh iface-list --all
  2. Name State MAC Address
  3. ---------------------------------------------------
  4. br0 active 00:0c:29:31:78:be
  5. lo active 00:00:00:00:00:00

4.3 iface-edit 编辑宿主机现有的 interface

  1. [root@localhost ~]# virsh iface-edit br0
  2.  
  3. <interface type='bridge' name='br0'>
  4. <start mode='onboot'/>
  5. <protocol family='ipv4'>
  6. <ip address='192.168.118.11' prefix='24'/>
  7. <route gateway='192.168.118.1'/>
  8. </protocol>
  9. <bridge stp='on' delay='0'>
  10. <interface type='ethernet' name='eno16777736'>
  11. </interface>
  12. </bridge>
  13. </interface>

4.4 iface-dumpxml 导出宿主机现有的 interface 为 xml 文件

  1. # 查看
  2. [root@localhost ~]# virsh iface-dumpxml br0
  3. <interface type='bridge' name='br0'>
  4. <protocol family='ipv4'>
  5. <ip address='192.168.118.11' prefix='24'/>
  6. </protocol>
  7. <protocol family='ipv6'>
  8. <ip address='fe80::20c:29ff:fe31:78be' prefix='64'/>
  9. </protocol>
  10. <bridge>
  11. <interface type='ethernet' name='vnet0'>
  12. <link state='unknown'/>
  13. <mac address='fe:54:00:9c:b2:32'/>
  14. </interface>
  15. <interface type='ethernet' name='eno16777736'>
  16. <link speed='1000' state='up'/>
  17. <mac address='00:0c:29:31:78:be'/>
  18. </interface>
  19. </bridge>
  20. </interface>
  21.  
  22. # 导入到 xml 文件
  23. [root@localhost ~]# virsh iface-dumpxml br0 > br0.xml

4.5 iface-destroy 和 iface-start

iface-destroy 将 interface 设置为 不活动状态
iface-start 将 interface 设置为 活动状态

  1. [root@localhost ~]# virsh iface-list --all
  2. Name State MAC Address
  3. ---------------------------------------------------
  4. br0 active 00:0c:29:53:fa:87
  5. lo active 00:00:00:00:00:00
  6.  
  7. [root@localhost ~]# virsh iface-destroy lo
  8. Interface lo destroyed
  9.  
  10. [root@localhost ~]# virsh iface-list --all
  11. Name State MAC Address
  12. ---------------------------------------------------
  13. br0 active 00:0c:29:53:fa:87
  14. lo inactive 00:00:00:00:00:00

iface-destroy 不可轻易使用,会造成虚拟机或宿主机网络失联。

iface-start 的使用:

  1. [root@localhost ~]# virsh iface-start lo
  2. Interface lo started
  3.  
  4. [root@localhost ~]# virsh iface-list --all
  5. Name State MAC Address
  6. ---------------------------------------------------
  7. br0 active 00:0c:29:31:78:be
  8. lo active 00:00:00:00:00:00

4.6 iface-mac 获取 接口的 mac 地址

  1. [root@localhost ~]# virsh iface-mac lo
  2. 00:00:00:00:00:00
  3.  
  4. [root@localhost ~]# virsh iface-mac br0
  5. 00:0c:29:53:fa:87

4.7 iface-name 通过 mac 地址获取 接口名称

  1. [root@localhost ~]# virsh iface-name 00:0c:29:53:fa:87
  2. br0
  3.  
  4. [root@localhost ~]# virsh iface-name 00:00:00:00:00:00
  5. lo

5. 网络相关的选项

  1. net-autostart 自动启动一个网络
  2. net-create XML文件创建一个网络
  3. net-define 定义不活动的永久虚拟网络或从XML文件修改现有的永久虚拟网络
  4. net-destroy 摧毁(停止)一个网络
  5. net-dhcp-leases 打印给定网络的租赁信息
  6. net-dumpxml XML中的网络信息
  7. net-edit 编辑网络的XML配置
  8. net-event 网络事件
  9. net-info 网络信息
  10. net-list 列表网络
  11. net-name 将网络UUID转换为网络名称
  12. net-start 启动一个(以前定义的)不活动的网络
  13. net-undefine 取消定义一个持久的网络
  14. net-update 更新现有网络配置的一部分
  15. net-uuid 将网络名称转换为网络UUID

Networking(帮助关键字'network')

注意: virsh network 选项内容管理对应的文件是 /etc/libvirt/qemu/network/ 如果这里没有关于网络的xml 文件,则通过 virsh net-list -all 是查询不到网络的。

对于上面实例通过 virsh iface-bridge eno16777736 br0 这样创建的网桥,通过 virsh net-list 是查询不到的。

当使用 yum install libvirt 安装不做任何修改进行启动,通过 virsh net-list 查看:

  1. [root@localhost ~]# virsh net-list
  2. Name State Autostart Persistent
  3. ----------------------------------------------------------
  4. default active yes yes

这里的 default 对应的文件是 /etc/libvirt/qemu/networks/default.xml

network选项中,重点掌握一下:

  1. net-destroy 停止网络
  2. net-start 启用网络
  3. net-dumpxml 查看网络配置文件 同等于 cat /etc/libvirt/qemu/networks/default.xml
  4. net-edit 编辑网络配置文件 同等于 vim /etc/libvirt/qemu/networks/default.xml
  5. net-create 通过 xml 文件创建网络,一般很少使用。
  6. net-info 查看网络详细信息
  7. net-autostart 宿主机开启自动启动

6. 快照相关的选项

  1. snapshot-create XML创建一个快照
  2. snapshot-create-as 从一组参数创建一个快照
  3. snapshot-current 获取或设置当前快照
  4. snapshot-delete 删除域快照
  5. snapshot-dumpxml 转储域快照的XML
  6. snapshot-edit 编辑快照的XML
  7. snapshot-info 快照信息
  8. snapshot-list 列出域的快照
  9. snapshot-parent 获取快照的父级的名称
  10. snapshot-revert 将域恢复为快照

Snapshot(帮助关键字'snapshot')

重点掌握如下选项:

  1. snapshot-list 查看某domain的快照
  2. snapshot-info 查看快照详细信息
  3. snapshot-dumpxml 查看快照xml文件
  4. snapshot-edit 编辑快照信息
  5. snapshot-create 创建一个 xml 格式的快照
  6. snapshot-create-as 创建一个 xml 格式的快照,但是可以命名快照名
  7. snapshot-revert 将虚拟机还原到快照信息

6.1 snapshot-create 和 snapshot-create-as

这两个命令创建快照其内部运行机制是一致的,只不过 snapshot-create-as 可以为快照命名,如下:

  1. [root@localhost ~]# virsh list
  2. Id Name State
  3. ----------------------------------------------------
  4. 2 cirros running
  5.  
  6. [root@localhost ~]# virsh snapshot-create cirros
  7. Domain snapshot 1563634518 created
  8. [root@localhost ~]# virsh snapshot-list cirros
  9. Name Creation Time State
  10. ------------------------------------------------------------
  11. 1563634518 2019-07-20 22:55:18 +0800 running
  12.  
  13. [root@localhost ~]# virsh snapshot-create-as cirros cirros_bak
  14. Domain snapshot cirros_bak created
  15. [root@localhost ~]# virsh snapshot-list cirros
  16. Name Creation Time State
  17. ------------------------------------------------------------
  18. 1563634518 2019-07-20 22:55:18 +0800 running
  19. cirros_bak 2019-07-20 22:55:45 +0800 running

可以发现,通过 snapshot-create 创建的快照 Name 为时间戳,而通过 snapshot-create-as 创建的快照则可以自行命名。

6.2 snapshot-revert 还原快照

  1. [root@localhost ~]# virsh snapshot-list cirros
  2. Name Creation Time State
  3. ------------------------------------------------------------
  4. 1563634518 2019-07-20 22:55:18 +0800 running
  5. cirros_bak 2019-07-20 22:55:45 +0800 running
  6.  
  7. [root@localhost ~]# virsh snapshot-revert cirros cirros_bak
  8.  
  9. [root@localhost ~]# virsh list
  10. Id Name State
  11. ----------------------------------------------------
  12. 2 cirros running

7. 虚拟机存储池操作

  1. find-storage-pool-sources-as 找到潜在的存储池来源
  2. find-storage-pool-sources 发现潜在的存储池来源
  3. pool-autostart 自动启动一个池
  4. pool-build 建立一个存储池
  5. pool-create-as 从一组参数创建一个池
  6. pool-create XML文件创建一个池
  7. pool-define-as 从一组参数中定义一个池
  8. pool-define 定义不活动的持久性存储池或从XML文件修改现有的持久 性存储池
  9. pool-delete 删除一个池
  10. pool-destroy 摧毁(停止)一个存储池
  11. pool-dumpxml XML中的池信息
  12. pool-edit 编辑存储池的XML配置
  13. pool-info 存储池信息
  14. pool-list 列表池
  15. pool-name 将池UUID转换为池名称
  16. pool-refresh 刷新存储池
  17. pool-start 启动(之前定义的)非活动池
  18. pool-undefine 取消定义一个不活动的池
  19. pool-uuid 将池名称转换为池UUID
  20. pool-event 存储池事件

Storage Pool(帮助关键词'pool')

kvm 平台以存储池的形式对存储进行统一管理,所谓存储池可以理解为本地目录,通过远端磁盘阵列(ISCSI、NFS)分配过来磁盘或目录,当然也支持各类分布式文件系统。

为虚拟机创建存储池的两种方式:

7.1 通过 xml 文件创建

通过 pool-list --all 查看所有的 存储池, 默认为有一个 default 存储池

  1. [root@192.168.118.14 ~]#virsh pool-list --all
  2. Name State Autostart
  3. -------------------------------------------
  4. default active yes

通过 pool-dumpxml 将 default 存储池导入出来进行修改

  1. [root@192.168.118.14 ~]#virsh pool-dumpxml default > images.xml
  2.  
  3. 修改如下:
  4. [root@192.168.118.14 ~]#cat images.xml
  5. <pool type='dir'>
  6. <name>images</name>
  7. <source>
  8. </source>
  9. <target>
  10. <path>/images</path>
  11. <permissions>
  12. <mode>0711</mode>
  13. <owner>0</owner>
  14. <group>0</group>
  15. </permissions>
  16. </target>
  17. </pool>
  18.  
  19. /images 目录必须存在。
  1. 通过 pool-define 导出存储池
  2. [root@192.168.118.14 ~]#virsh pool-define images.xml
  3. Pool images defined from images.xml
  4.  
  5. [root@192.168.118.14 ~]#virsh pool-list --all
  6. Name State Autostart
  7. -------------------------------------------
  8. default active yes
  9. images inactive no
  10.  
  11. 启用 images 存储池
  12. [root@192.168.118.14 ~]#virsh pool-start images
  13. Pool images started
  14.  
  15. 开机启用 images 存储池
  16. [root@192.168.118.14 ~]#virsh pool-autostart images
  17. Pool images marked as autostarted
  18.  
  19. [root@192.168.118.14 ~]#virsh pool-list --all
  20. Name State Autostart
  21. -------------------------------------------
  22. default active yes
  23. images active yes

7.2 通过命令创建存储池

  1. [root@192.168.118.14 ~]#mkdir /img
  2. [root@192.168.118.14 ~]#virsh pool-define-as img --type dir --target /img/
  3. [root@192.168.118.14 ~]#virsh pool-build img
  4. [root@192.168.118.14 ~]#virsh pool-start img
  5. [root@192.168.118.14 ~]#virsh pool-autostart img

7.3 删除存储池

  1. [root@192.168.118.14 ~]#virsh pool-list --all
  2. Name State Autostart
  3. -------------------------------------------
  4. default active yes
  5. images active yes
  6.  
  7. [root@192.168.118.14 ~]#virsh pool-destroy images
  8. Pool images destroyed
  9.  
  10. [root@192.168.118.14 ~]#virsh pool-undefine images
  11. Pool images has been undefined
  12.  
  13. [root@192.168.118.14 ~]#virsh pool-list --all
  14. Name State Autostart
  15. -------------------------------------------
  16. default active yes

[ kvm ] 学习笔记 6:virsh 命令及功能详解的更多相关文章

  1. [转帖]Linux学习笔记之rpm包管理功能全解

    Linux学习笔记之rpm包管理功能全解 https://www.cnblogs.com/JetpropelledSnake/p/11177277.html rpm 的管理命令 之前学习过 yum 的 ...

  2. (转)live555学习笔记10-h264 RTP传输详解(2)

    参考: 1,live555学习笔记10-h264 RTP传输详解(2) http://blog.csdn.net/niu_gao/article/details/6936108 2,H264 sps ...

  3. 学习笔记--Grunt、安装、图文详解

    学习笔记--Git安装.图文详解 安装Git成功后,现在安装Gruntjs,官网:http://gruntjs.com/ 一.安装node 参考node.js 安装.图文详解 (最新的node会自动安 ...

  4. SNMP学习笔记之SNMP 原理与实战详解

    原文地址:http://freeloda.blog.51cto.com/2033581/1306743 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法 ...

  5. Java8学习笔记(五)--Stream API详解[转]

    为什么需要 Stream Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念.它也不同于 StAX 对 ...

  6. 大数据学习笔记——Spark工作机制以及API详解

    Spark工作机制以及API详解 本篇文章将会承接上篇关于如何部署Spark分布式集群的博客,会先对RDD编程中常见的API进行一个整理,接着再结合源代码以及注释详细地解读spark的作业提交流程,调 ...

  7. Linux学习笔记之rpm包管理功能全解

    0x00 软件包管理器 所有的软件都是由文件格式的程序代码(即源代码),经过编译成为一个可执行二进制文件:对于一个软件来说,其包含二进制程序.库文件.配置文件以及帮助文件.在应用中,每次要安装程序时通 ...

  8. Node 之 Express 学习笔记 第二篇 Express 4x 骨架详解

    周末,没事就来公司加班继续研究一下Express ,这也许也是单身狗的生活吧. 1.目录结构: bin, 存放启动项目的脚本文件 node_modules, 项目所有依赖的库,以及存放 package ...

  9. 【Java学习笔记之三十四】超详解Java多线程基础

    前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧. 正文 线程与进程 1 线程:进程中负责程序执行的 ...

随机推荐

  1. SIGAI机器学习第十八集 线性模型2

    之前讲过SVM,是通过最大化间隔导出的一套方法,现在从另外一个角度来定义SVM,来介绍整个线性SVM的家族. 大纲: 线性支持向量机简介L2正则化L1-loss SVC原问题L2正则化L2-loss ...

  2. mysqldump 原理(转载)

    mysqldump 备份过程可以描述为: (1) 先发出一条 flush tables 关闭实例上所有打开的表(2) 创建一个全局锁,FLUSH TABLES WITH READ LOCK获得 db ...

  3. DW-ODS

    ODS (操作数据存储) 编辑 讨论 操作数据存储ODS(Operational Data Store)是数据仓库体系结构中的一个可选部分,也被称为贴源层.ODS具备数据仓库的部分特征和OLTP系统的 ...

  4. jsp+ tinymce粘贴word

    最近公司做项目需要实现一个功能,在网页富文本编辑器中实现粘贴Word图文的功能. 我们在网站中使用的Web编辑器比较多,都是根据用户需求来选择的.目前还没有固定哪一个编辑器 有时候用的是UEditor ...

  5. C语言malloc的用法及详解

    #include <stdio.h> #include <stdlib.h> void freem(int* p){ #include <stdio.h> #inc ...

  6. biplot双标图

    biplot 双标图 在页面中全部崩溃 句法 biplot(coefs) biplot(coefs,Name,Value) h = biplot(___)   描述 例 biplot(coefs)在矩 ...

  7. 《挑战30天C++入门极限》新手入门:C++中堆内存(heap)的概念和操作方法

        新手入门:C++中堆内存(heap)的概念和操作方法 堆内存是什么呢? 我们知道在c/c++中定义的数组大小必需要事先定义好,他们通常是分配在静态内存空间或者是在栈内存空间内的,但是在实际工作 ...

  8. Pytest权威教程06-使用Marks标记测试用例

    目录 使用Marks标记测试用例 在未知标记上引发异常: -strict 标记改造和迭代 返回: Pytest权威教程 使用Marks标记测试用例 通过使用pytest.mark你可以轻松地在测试用例 ...

  9. cross socket tcp客户端开发

    cross socket tcp客户端开发 uses Net.SocketAPI, Net.CrossSocket.Base, Net.CrossSocket FCrossTcp: ICrossSoc ...

  10. 【json/regex】将嵌套对象生成的json文进行内部整形排序后再输出

    下载地址:https://files.cnblogs.com/files/xiandedanteng/jsonformat20191126-2.zip 注意:本文仅为draft1版本,还有待完善. 先 ...