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 命令可批量创建虚拟机
文章评论