首页 > 其他分享 >virsh常用命令

virsh常用命令

时间:2023-05-29 12:13:39浏览次数:45  
标签:kvm vm server virsh 常用命令 node1 root

 

一、virsh常用命令一些常用命令参数[root@kvm-server ~]# virsh --help#查看命令帮忙[root@kvm-server ~]# virsh list#显示正在运行的虚拟机[root@kvm-server ~]# virsh list --all...

 张俊营同学(EDWARD)  · 2021-07-05 23:36:31

一、virsh常用命令

一些常用命令参数

[root@kvm-server ~]# virsh --help                                     #查看命令帮忙

[root@kvm-server ~]# virsh list                                       #显示正在运行的虚拟机

[root@kvm-server ~]# virsh list --all                                 #显示所有的虚拟机

[root@kvm-server ~]# virsh start vm-node1                             #启动vm-node1虚拟机

[root@kvm-server ~]# virsh shutdown vm-node1                          #关闭vm-node1虚拟机

[root@kvm-server ~]# virsh destroy vm-node1                           #虚拟机vm-node1强制断电

[root@kvm-server ~]# virsh suspend vm-node1                           #挂起vm-node1虚拟机

[root@kvm-server ~]# virsh resume vm-node1                            #恢复挂起的虚拟机

[root@kvm-server ~]# virsh undefine vm-node1                          #删除虚拟机,慎用

[root@kvm-server ~]# virsh dominfo vm-node1                           #查看虚拟机的配置信息

[root@kvm-server ~]# virsh domiflist                                  #查看网卡配置信息

[root@kvm-server ~]# virsh domblklist vm-node1                        #查看该虚拟机的磁盘位置

[root@kvm-server ~]# virsh edit vm-node1                              #修改vm-node1的xml配置文件

[root@kvm-server ~]# virsh dumpxml vm-node1                           #查看KVM虚拟机当前配置

[root@kvm-server ~]# virsh dumpxml vm-node1 > vm-node1.bak.xml        #备份vm-node1虚拟机的xml文件,原文件默认路径/etc/libvirt/qemu/vm-node1.xml

[root@kvm-server ~]# virsh autostart vm-node1                         #KVM物理机开机自启动虚拟机,配置后会在此目录生成配置文件/etc/libvirt/qemu/autostart/vm-node1.xml

[root@kvm-server ~]# virsh autostart --disable vm-node1               #取消开机自启动
  推荐内容  

二、为虚拟机增加网卡

一个完整的数据包从虚拟机到物理机的路径是:虚拟机-->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

 

三、虚拟机增加磁盘

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
 

 四、克隆虚拟机

使用virt-clone克隆虚拟机的方法:

 
[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
 

五、修改虚拟机的名字

 
[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虚拟机的CPU

需要先修改xml配置文件

 
# 查看默认的CPU和内存大小
virsh edit node-192.168.5.90-test

<domain type='kvm'>
  <name>node-192.168.5.90-test</name>
  <uuid>de4fe850-2fa7-49be-b785-77642bc95713</uuid>
  <memory unit='KiB'>4194304</memory>
  <currentMemory unit='KiB'>4194304</currentMemory>
  <vcpu placement='static'>2</vcpu>

# 修改配置
<domain type='kvm'>
  <name>node-192.168.5.90-test</name>
  <uuid>de4fe850-2fa7-49be-b785-77642bc95713</uuid>
  <memory unit='KiB'>8192000</memory>
  <currentMemory unit='KiB'>4194304</currentMemory>
  <vcpu placement='auto' current="1">16</vcpu>

# 关闭虚拟机,再开机;注意不要重启,重启配置不生效。
virsh shutdown node-192.168.5.90-test
virsh start node-192.168.5.90-test

# 动态修改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 node-192.168.5.90-test --hmp --cmd info balloon        # 查看当前内存大小
balloon: actual=4096
# 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


来源:
https://huaweicloud.csdn.net/6356391fd3efff3090b5b218.html?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~activity-1-118501206-blog-90436989.235^v36^pc_relevant_yljh&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~activity-1-118501206-blog-90436989.235^v36^pc_relevant_yljh&utm_relevant_index=2

标签:kvm,vm,server,virsh,常用命令,node1,root
From: https://www.cnblogs.com/gaoyanbing/p/17440077.html

相关文章

  • git常用命令介绍
    gitmergeGitmerge是一种用于将一个分支的更改合并到另一个分支的操作。示例:A---B---C[master]\D---E---F[feature-branch]在这个示例中,master分支上有三个提交(标记为A、B和C),而feature-branch分支上有三......
  • Windowns终端中的常用命令
    打开CMD的方式开始+系统+命令提示符Windowns键+R输入cmd打开控制台(推荐使用)在任意的文件夹下面,按住shift键+鼠标右键点击,在此处打开命令行窗口资源管理器的地址栏前面加上cmd(记得空一个)路径点击某个软件,鼠标右击,选择以管理员的身份运行 常用的Dos命......
  • Linux 常用命令大全【yyds干货盘点4】
    1. 文本处理catfile1file2...|command<>file1_in.txt_or_file1_out.txtgeneralsyntaxfortextmanipulationusingPIPE,STDINandSTDOUTcatfile1|command(sed,grep,awk,grep,etc...)>result.txt合并一个文件的详细说明文本,并将简介写入一个新文件中ca......
  • Dos常用命令
    Dos命令打开CMD的方式:win+rDos常用命令盘符切换:盘符+冒号查看当前目录下所有目录:dir此处想在退回c盘方式:c:cd/dc:跨盘符进入目录:cd/d要跨的盘符:目录返回上一级:cd..进入下一级目录:cd+目录名称清理屏幕:cls退出终......
  • shell 常用命令3
    shell常用命令31sed用来自动编辑文件,可以用来实现替换配置文件的配置语法:sed[-hnV][-e<script>][-f<script文件>][文本文件]参数说明:-e<script>或--expression=<script>以选项中指定的script来处理输入的文本文件。-f<script文件>或--file=<script文件>以选项中指......
  • Docker CLI docker container commit常用命令
    Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。Docker是内核虚拟化,不使用Hypervisor是不完全虚拟化,依赖内核的特性实现资源隔离。本文主要介绍DockerCLI中d......
  • Android常用命令-pm
    基于Android-12S一、查看帮助信息1.pmhelper#pmhelp包管理器(package)命令:help打印此帮助文本。path[--userUSER_ID]PACKAGE打印给定包的.apk的路径。dumpPACKAGE打印与给定PACKAGE关联的各种系统状态。listfeatures打印系统的所......
  • MySQL常用命令
    #安装mysql后查看初始密码cat/var/log/mysqld.log#登录mysqlmysql-u[user]-p[密码]-h[远程主机ip]#本地登录可以简写为mysql-uroot-p#设置密码长度#【8.0】setglobalvalidate_password.length=6;#【5.7】setglobalvalidate_password_length=6;#设置......
  • Linux 常用命令大全【yyds干货盘点3】
    1.RPM包-(Fedora,Redhat及类似系统)rpm-ivhpackage.rpm安装一个rpm包rpm-ivh--nodeepspackage.rpm安装一个rpm包而忽略依赖关系警告rpm-Upackage.rpm更新一个rpm包但不改变其配置文件rpm-Fpackage.rpm更新一个确定已经安装的rpm包rpm-epackage_name.rpm......
  • Docker CLI docker container attach常用命令
    Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。Docker是内核虚拟化,不使用Hypervisor是不完全虚拟化,依赖内核的特性实现资源隔离。本文主要介绍DockerCLI中d......