virsh常用维护命令

时间:2022-09-22 18:17:29

一、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 ::::: [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 :::::
vnet1 bridge br0 virtio :::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=
[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. ( M requested capacity > M available)
Allocating 'vm-node2.raw' | GB :: 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

五、修改虚拟机的名字

[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'></memory>
<currentMemory unit='KiB'></currentMemory>
<vcpu placement='static'></vcpu> # 修改配置
<domain type='kvm'>
<name>node-192.168.5.90-test</name>
<uuid>de4fe850-2fa7-49be-b785-77642bc95713</uuid>
<memory unit='KiB'></memory>
<currentMemory unit='KiB'></currentMemory>
<vcpu placement='auto' current=""></vcpu> # 关闭虚拟机,再开机;注意不要重启,重启配置不生效。
virsh shutdown node-192.168.5.90-test
virsh start node-192.168.5.90-test # 动态修改VCPU;VCPU只能热增加,不能减少
# 查看当前逻辑CPU数量
[root@--- ~]# cat /proc/cpuinfo| grep "processor"| wc -l # 动态增加到4个
virsh setvcpus node-192.168.5.90-test --live
# 再次查看CPU数量
[root@--- ~]# cat /proc/cpuinfo| grep "processor"| wc -l # 动态修改内存(增减都可以)
# 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=

virsh常用维护命令的更多相关文章

  1. MySQL常用维护命令和操作

    MySQL数据库安装后,除了包括MySQL服务器进程管理外,还提供了大量工具用于管理和维护MySQL服务器的其它工作.下面PHP程序员雷雪松介绍的这些命令都是在MySQL交互界面以外的命令行中执行的. ...

  2. 6&period;K8s集群升级、etcd备份和恢复、资源对象及其yaml文件使用总结、常用维护命令

    1.K8s集群升级 集群升级有一定的风险,需充分测试验证后实施 集群升级需要停止服务,可以采用逐个节点滚动升级的方式 1.1 准备新版本二进制文件 查看现在的版本 root@k8-master1:~# ...

  3. 虚拟化技术之kvm管理工具virsh常用基础命令(一)

    在上一篇博客中,我们了解了KVM基础架构和部署以及图形管理工具virt-manager安装虚拟机的过程,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13499 ...

  4. gitlab 常用维护命令

    GitLab简介 GitLab 是一个用于仓库管理系统的开源项目.使用Git作为代码管理工具,并在此基础上搭建起来的web服务.Github是公共的git仓库,而Gitlab适合于搭建企业内部私有gi ...

  5. svn常用维护命令

    公司版本管理同时用的svn和gitlab,有互补作用 这边写一写慢慢积累自己用过的svn常用维护 查看版本范围之间的变化: [root@192-168-2-82 mnt]# svn log -r 45 ...

  6. Oralce常用维护命令

    1. sqlplus远程连接 方式一:简易连接,不用进行网络配置,其实就是tnsname.ora文件,但只支持oracle10G以上.命令:sqlplus 用户名/密码@ip地址[:端口]/servi ...

  7. git基础常用维护命令

    开发模式介绍 master为生产环境分支 trunk为测试环境分支 开发分支由程序员自己取名 比如来一个新项目之后,下面步骤都是在本地操作 1.从本地获取远程master最新代码,保证本地master ...

  8. 虚拟化技术之kvm管理工具virsh常用基础命令(二)

    上一篇博客我们主要聊了下virsh 管理kvm虚拟机的命令相关用法和说明,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13508231.html:今天我们来继 ...

  9. hbase集群 常用维护命令

    一. zk集群 1. 查看当前服务的角色 leader/follower echo stat|nc 127.0.0.1 2181 2.  启动ZK服务: sh bin/zkServer.sh star ...

随机推荐

  1. Redis-benchmark测试Redis性能

    Redis-benchmark是官方自带的Redis性能测试工具,可以有效的测试Redis服务的性能. 使用说明如下: Usage: redis-benchmark [-h <host>] ...

  2. 练习prototype的实现

    这个BLOG不错,我练习了一下代码. 感觉他是个高手. ======================== http://www.w3cfuns.com/notes/17398/35b250e9b392 ...

  3. android之多媒体篇(一)

    Android 4.0.3(Api Level 15)支持的多媒体格式. 注意:有些设备可能支持其他的文件格式. 1.Audio AAC LC/LTP.HE-AACv1(AAC+).AMR-NB.AM ...

  4. cocos2dx-lua使用UIListView制作二级折叠菜单

    折叠菜单,用过jquery accordion的同学都知道是啥玩艺儿~,图片效果就是介样: cocos2dx不带有此控件,因此我们动手来实现一个. 原理很简单,展开的时候往listview里inser ...

  5. 高性能 Java 缓存库 — Caffeine

    http://www.baeldung.com/java-caching-caffeine 作者:baeldung 译者:oopsguy.com 1.介绍 在本文中,我们来看看 Caffeine - ...

  6. &lbrack;Go&rsqb; golang原子函数锁住共享资源

    1.atomic包里的几个函数以及sync包里的mutex类型,提供了解决方案2.原子函数能够以很底层的加锁机制来同步访问整型变量和指针3.atomic.AddInt64(&counter, ...

  7. Chap2&colon;什么是shell&lbrack;The Linux Command Line&rsqb;

    shell - a program that takes keyboard commands and passes them to the operating system to carry out ...

  8. 报文、http、https的理解

    一.何为报文?     报文是网络中交换与传输的数据单位,即站点一次性要发送的数据块.报文包含了将要发送的完整的数据信息,其长短不一致,长度不限且可变. 二.报文的作用     报文多是多个系统之间需 ...

  9. Windows Phone 8 开发必备资源

    一.MVVM框架推荐 1. MVVM-Light 这个框架是我最常用的MVVM框架之一,它比Prism更轻量级,但对于一般的小应用,功能足够. 官方网站:http://mvvmlight.codepl ...

  10. 再谈IE的浏览器模式和文档模式&lbrack;转&rsqb;

    http://www.cnblogs.com/liuzhendong/archive/2012/04/27/2474363.html 以前在 “IE8兼容视图(IE7 mode)与独立IE7的区别”一 ...