袁党生博客

  • 主页
  • linux基础
  • SHELL
  • WEB
  • 负载
  • 企业级应用
  • 数据库
  • KVM
  • Docker
  • K8S
  • 监控
  • 存储
  • 博客搭建问题
  1. 首页
  2. KVM
  3. 正文

三、虚拟化常用命令-virsh

2020年4月29日 1650点热度 0人点赞 0条评论


virsh网络相关命令

  • virsh
      virsh help network 查看virsh与网络有关的命令
    virsh子命令:网络相关命令
      net-create 使用xml文件创建交换机并启动
      net-define 使用xml文件创建交换机不启动
      net-destroy 删除网络
      net-list 列出现有交换机
      net-dumpxml 显示现有网络定义的xml格式的配置文件
        virsh net-dumpxml default 显示默认xml格式配置文件

示例:

[root@centos7 ~]# virsh net-dumpxml default
<network connections='2'>   
  <name>default</name>    网络名称,默认为defualt
  <uuid>b3e9e37c-51b5-4fc1-a9e2-bbe8e06a3701</uuid>   uuid
  <forward mode='nat'>   转发类型为nat,如果需要SANT定义则需要对地址范围进行设置
    <nat>
      <port start='1024' end='65535'/>  网络地址池范围
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>   把哪个桥(交换机)关联到该网络,当前为virbr0桥
  <mac address='52:54:00:03:11:7b'/>           关联到该网络的桥(交换机)的mac地址
  <ip address='192.168.122.1' netmask='255.255.255.0'>  当前桥(交换机)的ip地址和子网掩码
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>  dhcp地址池范围,如果不存在dhcp服务器,可移除该项
    </dhcp>
  </ip>
</network>
  • 文件默认位置:/etc/libvirt/qemu/networks/default.xml
  • 复制该文件并进行修改即可创建一个桥(交换机)设备

示例:根据默认xml文件创建网桥

cd /etc/libvirt/qemu/networks/
cp default.xml  mynet0.xml

vim /etc/libvirt/qemu/networks/
<network>
  <name>mynet0</name>   网络名称为mynet0
  <uuid>b3e9e37c-51b5-4fc1-a9e2-bbe8e06a3710</uuid>   uuid必须进行更改,可以删除该项会自动生成,也可以手动更改,只要与原来不一致就可
  <bridge name='mybr1' stp='on' delay='0'/>  桥(交换机)名称,把该桥绑定到当前网络
  <mac address='52:54:00:03:11:ab'/>   mac地址也必须进行更改,可以手动进行更改
  <ip address='10.0.0.100' netmask='255.255.255.0'>  设置桥(交换机)的ip地址
    <dhcp>
      <range start='10.0.0.21' end='10.0.0.100'/>  设置dhcp地址池范围
    </dhcp>
  </ip>
</network>
使用virsh命令根据mynet0.xml文件创建桥(交换机)
    virsh net-create mynet0.xml
因为刚才网卡veth0.1被关联到mybr0桥,从因此把网卡veth0.1从mybr0桥(交换机)拆下来安装到mybr1桥上使用
    brctl delif mybr0 veth0.1
    brctl addif mybr1 veth0.1
更改名称空间myns的ip地址为10.0.0.1
测试:
名称空间myns是否能与桥mynet0 ping通
    ping 10.0.0.100
  • 创建桥接接口
    使用物理桥
      virsh
      nmtui
      /etc/sysconfig/network-scripts/目录下的脚本
  • 创建物理桥,把宿主机物理网卡当做物理桥,创建虚拟网卡当做宿主机的网卡使用
      注意:更改的网卡必须是能够连接外网的网卡,即该网卡是桥接模式或nat模式,才能连接外网

示例:

cd /etc/sysconfig/network-scripts
cp ifcfg-ens33 ifcfg-br0
编辑ifcfg-ens33文件,删除ip地址、子网掩码、网关、DNS,并在最后一行加上BRIDGE=br0
vim ifcfg-ens33
BRIDGE=br0

编辑ifcfg-br0文件,更改设备类型为桥,更改设备名称,删除uuid,ip地址不变
vim ifcfg-br0
TYPE=Bridge    注意:首字母大写,后面字符小写
NAME=br0
DEVICE=br0
重启网络服务
systemctl restart network
查看网卡会发现多出br0网卡且ip地址为原ip地址,原来的网卡ens33没有ip地址
此时在kvm中创建虚拟机时,选择网卡为桥接网卡即可连接外网

virsh虚拟机管理相关命令

  • virsh子命令:管理虚拟机相关命令
    virsh help domain
      shutdown 关闭一个域(即虚拟机)
      start 启动一个处于关闭状态的虚拟机
      distory 销毁域,强制断电
      create 使用xml文件创建虚拟机并启动
      define 使用xml文件创建虚拟机不启动
      desc 查看虚拟机状态
      autostart 物理机启动后,自动启动虚拟机
      console 连接到虚拟机终端
      dumpxml 查看虚拟机定义
      save 把虚拟机状态保存到文件中,类似于vmware的挂起状态
      restore 从保存虚拟机状态的文件中恢复该虚拟机,id号会变
      reboot 重启虚拟机
      reset 重置虚拟机
      suspend 挂起,不同于vmware的挂起,意为暂停
      resume 把虚拟机从暂停状态恢复
    virsh help monitor
      dominfo 查看虚拟机相关信息
      dommemstate 域的内存统计
      domstate 当前虚拟机状态
      domstats 当前虚拟机内部统计数据
      domiflist 查看虚拟机网卡数
      domblklist 查看虚拟机硬盘,需要指定虚拟机
      domblkstat 查看虚拟机硬盘统计数据,需要指定虚拟机
      domifstat 查看虚拟机网卡数据量,需要指定虚拟机和虚拟机的哪个网卡
    注意:应用程序关闭再次开启进程号会发成改变,虚拟机也可以看做是一个进程,因此关闭再启动虚拟机,虚拟机id号也会改变

支持设备热插拔

  • 支持热插拔操作:网卡,硬盘
  • 实现热插拔网络设备:
    virsh help domain
      attach-device 热插入设备
      attach-disk 热插入硬盘设备
      attach-interface 热插入网络设备
      detach-device 热拔出设备
      detach-disk 热拔出硬盘设备
      detach-interface 热拔出网络设备
      attach-disk/detach-disk/domblklist:磁盘设备的热插拔;
      attach-interface/detach-interface/domiflist:网络接口设备的热插拔;
        type:bridge
        source:BRIDGE_NAME
        注意 :无须事先创建网络接口设备;

示例:热插拔网络设备(网卡)

热插入一个网卡
    virsh attach-interface c1 bridge mybr1
热拔出一个网卡
    virsh detach-interface c1 bridge --mac 52:54:00:88:33:e3
注意:在拔出网卡时,如果一个类型下(如:bridge类型)有多个网卡,则需要指定网卡的mac地址才能拔出
    virsh domiflist c1   查看c1虚拟机的网卡信息
    virsh console c1   使用终端控制台连接虚拟机,需要输入用户名密码
使用ctrl+] 退出控制台
退出后再次登录无需再次输入密码
  • 热插拔磁盘设备文件
    qemu-img命令 专用于管理虚拟机磁盘设备文件
      usage: qemu-img command [command options]
      create 创建磁盘镜像文件
      info 查看磁盘镜像文件信息
      snapshot 为磁盘镜像文件创建快照或恢复快照
      rebase 改变快照的基础镜像文件
      resize 动态改变磁盘镜像文件大小
      convert 转换磁盘镜像文件格式
        Supported formats: vvfat vpc vmdk vhdx vdi ssh sheepdog rbd raw host_cdrom host_floppy host_device file qed qcow2 qcow parallels nbd iscsi gluster dmg tftp ftps ftp https http cloop bochs blkverify blkdebug
        cow 写时复制
  • 硬盘划分大小时有以下几种方式:
      稀疏格式:指定磁盘大小,不立即分配实际大小,磁盘用多少给多少
      稠密格式:指定磁盘大小,立即分配磁盘实际大小
    查看创建磁盘镜像文件需要指定选项:
      qemu-img create -f qcow2 -o ? /vm/c1/test.img

说明:

Supported options:  
size             Virtual disk size         指定虚拟硬盘大小  
compat           Compatibility level (0.10 or 1.1)  指定兼容级别  
backing_file     File name of a base image     
backing_fmt      Image format of the base image  基于磁盘文件当前状态创建快照  
encryption       Encrypt the image   支持对磁盘文件加密  
cluster_size     qcow2 cluster size  
preallocation    Preallocation mode (allowed values: off, metadata, falloc, full)   指定为磁盘预分配多少空间     
    full 完全分配  falloc 用多少分多少    
    metadata 稀疏磁盘格式 off 不分配  
lazy_refcounts   Postpone refcount updates  

示例:

创建网络磁盘
    qemu-img create -f qcow2 -o size=40G,preallocation=metadata,compat='1.1' /vm/c1/test.img 
为虚拟机添加磁盘镜像文件
    virsh attach-disk c1 /vm/c1/test.img  vdb
从终端控制台登录虚拟机c1查看硬盘
    virsh console c1
    fdisk -l   发现添加的vdb磁盘被自动识别为vda
移除网络磁盘
    virsh detach-disk c1 vdb  
    注意:移除之前要确保没人使用,先卸载网络磁盘,然后再删除网络磁盘
    注意:删除时指定磁盘名为添加时指定的名字而不是系统自动识别的磁盘名字

virsh命令定义虚拟机

  • 使用virsh命令进行虚拟机定义
    virsh dumpxml c1 查看c1虚拟机的xml定义

示例:

创建虚拟机时会在/etc/libvirt/qemu目录下自动创建本虚拟机的xml文件,因此可以根据此xml文件稍做更改,即可创建新的虚拟机
    cd /etc/libvirt/qemu
    cp  c1.xml  c3.xml
    vim c3.xml   只需更改以下几项即可
    <name>c3</name>     更改名称
    删除uuid项
    <source file='/vm/c3/c3.img'/>     磁盘文件路径
    <target dev='vda' bus='virtio'/>   磁盘格式,总线类型为半虚拟化类型
    <mac address='52:54:00:cd:67:b7'/>   网络接口mac地址,推荐使用随机数生成器生成连续的数字
注意:可使用脚本批量创建多个虚拟机,只需随机生成mac地址最后两位,其他相关信息直接指定即可

创建c3目录
    mkdir /vm/c3 -p
复制镜像到c3目录下
    cp /root/cirros-no_cloud-0.3.0-i386-disk.img  /vm/c3/c3.img
根据xml自定义文件创建虚拟机
    virsh create /etc/libvirt/qemu/c3.xml
  • virsh 子命令
    virsh list --all 列出所有虚拟机,包括启动和未启动状态的虚拟机
    virsh help domain
      undefine 取消定义一个域,即删除虚拟机
        注意:undefine命令只能删除使用命令(如:define,create命令)创建的虚拟机,通过复制其它虚拟机xml文件修改创建的虚拟机无法被删除,系统认定这种方式创建的虚拟机为短暂临时的虚拟机,无法通过undefine命令删除

制作磁盘镜像模板

  • 如果使用其他主机的镜像文件当做模板创建虚拟机,则创建的虚拟机中会保留有其他主机的一些信息(如主机密钥),这是十分不安全的
  • 需要安装软件包libguestfs libguestfs-tools
    virt-sysprep 系统磁盘镜像模板处理命令,可以去除模板中的敏感信息
      -d 移除模板中用户和主机的私有信息或指定的私有信息
      --enable operations 默认移除主机密钥,udev定义的网络等
      --list operations 列出默认可被移除的选项
      --operation operations(或--operations operations) 指定移除选项
      --run-dry 干跑,不实际运行,可用于测试
      --install PKG 在虚拟机外部安装软件包
    镜像文件路径:/var/lib/libvirt/images/centos7.0-2.qcow2

示例:

virt-sysprep  -d centos7.0-2   删除磁盘镜像文件模板中默认的私有信息,-d只需指定磁盘镜像文件名称
注意:磁盘镜像文件要去掉qcow2的后缀)系统会自动查看该文件,无需指定文件路径
  • 制作完模板,可使用脚本更改系统定义的xml文件中必要的信息(如名称,uuid,网络接口mac地址等),然后使用virsh create或define 命令可批量创建虚拟机
标签: 暂无
最后更新:2023年4月29日

袁党生

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2023 linux学习. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

豫ICP备18039507号-1