一、KVM架构




  • KVM功能,是以扩展虚拟化CPU为硬件基础(如Intel-VT,AMD-V),利用CPU虚拟化技术。
  • KVM作为内核的一个模块,来提供虚拟化功能。如果系统需要虚拟化功能,则KVM模块可以被linux内核按需动态加载到内存运行。如果不需要的KVM功能,可以动态卸载该模块。
  • QEMU是一套模拟CPU的开源软件。KVM作为内核的一个模块,可以通过QEMU提供的模拟方式,来使用处理器。这样,KVM就提供了一个模拟的(虚拟的)硬件层,虚拟机就运行在这个模拟的硬件层之上。





KVM虚拟化技术介绍以及相关操作_运维


二、KVM软件安装


1、查看CPU是否支持VT技术



KVM虚拟化技术介绍以及相关操作_服务器_02


2、清理环境:卸载KVM


yum remove `rpm -qa | egrep 'qemu|virt|KVM'` -y && rm -rf /var/lib/libvirt/ /etc/libvirt


3、安装软件


yum -y install  *qemu* *virt* librbd1-devel


qemu-KVM:主包


libvirt:API接口


virt-manage:图形管理程序


  • 在所谓的kvm技术中,应用到的其实有2个东西: qemu+kvm
  • kvm负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm不能模拟其他设备;
  • qemu是模拟Io设备(网卡,磁盘》,kvm加上qemu之后就能实现真正意义上服务器虚拟化。
  • 因为用到了上面两个东西,所以一般都称之为qemu-kvm。
  • libvirt则是调用kvm虚拟化技术的接口用于管理的,用7ibvirt管理方便.


4、启动libvirtd


systemctl start libvirtd && systemctl enable libvirtd


5、查看KVM模块加载


lsmod | grep KVM


6、四种安装GuestOS方式



KVM虚拟化技术介绍以及相关操作_KVM_03


先通过安装飞机驾驶舱方式安装


yum install -y cockpit && systemctl start cockpit && systemctl enable cockpit


7、查看9090端口是否启用


netstat -lpnt


8、关闭防火墙


systemctl stop firewalld


setenforce 0


[root@localhost ~]# vim /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted


9、浏览器访问:服务地址:9090



KVM虚拟化技术介绍以及相关操作_运维_04



KVM虚拟化技术介绍以及相关操作_运维_05


飞机驾驶舱cockpit安装完毕



1、使用图形方式安装GuestOS


#打开虚拟系统管理器


virt-manager


选择新建虚拟机



KVM虚拟化技术介绍以及相关操作_运维_06



KVM虚拟化技术介绍以及相关操作_运维_07



KVM虚拟化技术介绍以及相关操作_虚拟化技术_08



KVM虚拟化技术介绍以及相关操作_服务器_09



KVM虚拟化技术介绍以及相关操作_运维_10



KVM虚拟化技术介绍以及相关操作_运维_11


然后开始进入安装界面



2、使用命令行模式安装


虚拟机组成部分


1、虚拟机配置文件


[root@localhost ~]# ls /etc/libvirt/qemu


networks  vm1.xml


2、存储虚拟机的介质


[root@localhost ~]# ls /var/lib/libvirt/images/


vm1.qcow2


[root@localhost ~]#


根据配置文件配置虚拟机


1.需要拷贝之前的磁盘镜像文件


[root@localhost qemu]# cd /var/lib/libvirt/images/
[root@localhost images]# cp vm1.qcow2 vm2.img
[root@localhost images]# ll
总用量 10487812
-rw-------. 1 root root 5369757696 5月 2 11:11 vm1.qcow2
-rw------- 1 root root 5369757696 5月 2 11:19 vm2.img


2.需要拷贝之前的配置文件


[root@localhost ~]# cd /etc/libvirt/qemu/
[root@localhost qemu]# cp vm1.xml vm2.xml
[root@localhost qemu]#


3.配置文件需要修改必要的内存


[root@localhost images]# vim /etc/libvirt/qemu/vm2.xml



KVM虚拟化技术介绍以及相关操作_虚拟化技术_12



KVM虚拟化技术介绍以及相关操作_linux_13



KVM虚拟化技术介绍以及相关操作_KVM_14


4.创建虚拟机


[root@localhost images]# virsh define /etc/libvirt/qemu/vm2.xml
定义域 vm2(从 /etc/libvirt/qemu/vm2.xml)


[root@localhost images]#


5.重启一下kvm服务


[root@localhost images]# systemctl restart libvirtd


[root@localhost images]#


6.宿主机开启路由转发


#vim /etc/sysctl.conf


net.ipv4.ip_forward = 1    #添加这一行


保存退出后,启动


[root@localhost images]# sysctl -p
net.ipv4.ip_forward = 1
[root@localhost images]#


7.验证


#打开虚拟系统管理器


virt-manager


查看是否显示创建的虚拟机vm2?



KVM虚拟化技术介绍以及相关操作_linux_15


打开虚拟机查看是否可用



KVM虚拟化技术介绍以及相关操作_虚拟化技术_16


结果:命令行创建的虚拟机可用并且可以ping通外网,如果ping不通记得激活一下网卡




升级虚拟机配置


添加磁盘镜像

[root@localhost images]# vim /etc/libvirt/qemu/vm1.xml    #添加一下信息
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/vm1-1.qcow2'/>
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x17' function='0x0'/>
</disk>


创建新的空磁盘卷


[root@localhost images]# qemu-img create -f qcow2 /var/lib/libvirt/images/vm1-1.qcow2 2G
Formatting '/var/lib/libvirt/images/vm1-1.qcow2', fmt=qcow2 size=2147483648 encryption=off cluster_size=65536 lazy_refcounts=off
[root@localhost images]#


重新定义


[root@localhost images]# virsh define /etc/libvirt/qemu/vm1.xml                                  


定义域 vm1(从 /etc/libvirt/qemu/vm1.xml)


[root@localhost images]#


查看vm1有没有添加硬盘成功


[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 252:0 0 5G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 4G 0 part
├─centos-root 253:0 0 3.5G 0 lvm /
└─centos-swap 253:1 0 512M 0 lvm [SWAP]
vdb 252:16 0 2G 0 disk
[root@localhost ~]#


添加成功



三、KVM存储


概念


  • KVM必须要配置一个目录当作它存储磁盘镜像(存储卷)的目录,我们称这个为存储池

默认存储池


/var/lib/libvirt/images


1、存储池管理


1.创建基于文件夹的存储池(目录)


[root@localhost ~]# mkdir -p /data/vmfs


2.定义存储池与其目录


[root@localhost ~]# virsh pool-define-as vmdisk --type dir --target /data/vmfs
定义池 vmdisk

[root@localhost ~]#


3.创建以定义的存储池


1)创建已定义的存储池


[root@localhost ~]# virsh pool-build vmdisk


构建池 vmdisk


[root@localhost ~]#


2)查看已定义的存储池


[root@localhost ~]# virsh  pool-list --all
名称 状态 自动开始
-------------------------------------------
default 活动 是
root 活动 是
vmdisk 不活跃 否


[root@localhost ~]#


4.激活并设置自动启动存储池


 [root@localhost ~]# virsh pool-start vmdisk
池 vmdisk 已启动

[root@localhost ~]# virsh pool-autostart vmdisk
池 vmdisk 标记为自动启动

[root@localhost ~]# virsh pool-list --all
名称 状态 自动开始
-------------------------------------------
default 活动 是
root 活动 是
vmdisk 活动 是


5.在存储池中创建虚拟机存储卷


[root@localhost ~]# virsh vol-create-as vmdisk kvm1.qcow2 3G --format qcow2


创建卷 kvm1.qcow2


[root@localhost ~]#


注意:


1:KVM存储池主要是体现一种管理方式,可以通过挂载存储目录,lvm逻辑卷的方式创建存储池,虚拟机存储卷创建完成后,剩下的操作与无存储卷的方式无任何区别了。


注2:KVM存储池也要用于虚拟机迁移任务。


[root@localhost ~]# ll /data/vmfs -h


总用量 196K


-rw------- 1 root root 193K 5月   2 14:56 kvm1.qcow2


[root@localhost ~]#


6.存储池相关管理命令


(1)在存储池中删除存储卷


[root@localhost ~]# virsh vol-delete --pool vmdisk kvm1.qcow2


卷 kvm1.qcow2 被删除


(2)取消激活存储卷


[root@localhost ~]# virsh pool-destroy vmdisk


销毁池 vmdisk


(3)删除存储池定义的目录


[root@localhost ~]# virsh pool-delete vmdisk


池 vmdisk 被删除


(4)取消定义存储池


[root@localhost ~]# virsh pool-undefine vmdisk


池 vmdisk 已经被取消定义


到此KVM存储池配置与管理操作完毕


2、生产环境中添加lvm和远程·存储即可


添加lvm和远程存储即可


3、磁盘格式


3.1.磁盘镜像文件格式


raw


原始格式,性能最好


qcow2


性能上还是不如raw,但是raw不支持快照,qcow2支持快照。


qed


现在默认安装好的用的是raw格式,所有做快照要把他转换成qcow2格式


什么叫写时拷贝?


raw立刻分配空间,不管你有没有用到那么多空间


qcow2只是承诺给你分配空间,但是只有当你需要用空间的时候,才会给你空间。最多只给你承诺空间的大小,避免空间浪费


3.2.创建磁盘文件


建立qcow2格式磁盘文件


[root@localhost ~]# qemu-img create -f qcow2  /var/lib/libvirt/test.qcow2 3G               
Formatting '/var/lib/libvirt/test.qcow2', fmt=qcow2 size=3221225472 encryption=off cluster_size=65536 lazy_refcounts=off
[root@localhost ~]#


建立raw格式磁盘文件


[root@localhost ~]# qemu-img create -f raw  /var/lib/libvirt/test.img 2G
Formatting '/var/lib/libvirt/test.img', fmt=raw size=2147483648


查看已经创建的虚拟磁盘文件


[root@localhost ~]# ll -h /var/lib/libvirt/


-rw-r--r--   1 root root    2.0G 5月 


-rw-r--r--   1 root root    193K 5月


[root@localhost libvirt]# qemu-img info test.img    


image: test.img


file format: raw


virtual size: 2.0G (2147483648 bytes)


disk size: 0


4、挂载磁盘


  • 当虚拟机无法启动,而磁盘文件没有损坏时,可以将虚拟机的主分区挂载,拷贝重要信息出来
  • 使用Libguestfs,首先需要使用Libvirt。Libvirt是一个管理接口,可以和KVM、Xen和其他一些基于Liunx的虚拟机相互连接。
  • Libguestfs的功能更加强大,可以打开Windows虚拟机上的文件。但是首先你需要将虚拟机迁移到libguestfs可用的环境当中,也就是Linux环境。

查看磁盘分区信息


[root@localhost ~]# virt-df -h -d vm1


文件系统 大小 已用空间 可用空间 使用百分比%
vm1:/dev/sda1 1014M 100M 914M 10%
vm1:/dev/centos/root 3.5G 974M 2.5G 28%
[root@localhost ~]#

[root@localhost ~]# virt-filesystems -d vm1
/dev/sda1
/dev/centos/root


挂载磁盘镜像分区


[root@localhost ~]# guestmount -d vm1 -m /dev/centos/root --rw /mnt
[root@localhost ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 4.8G 0 4.8G 0% /dev
tmpfs tmpfs 4.8G 0 4.8G 0% /dev/shm
tmpfs tmpfs 4.8G 13M 4.8G 1% /run
tmpfs tmpfs 4.8G 0 4.8G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 44G 20G 25G 45% /
/dev/sda1 xfs 1014M 213M 802M 21% /boot
tmpfs tmpfs 967M 0 967M 0% /run/user/0
/dev/fuse fuse 3.5G 1007M 2.6G 29% /mnt
[root@localhost ~]# cd /mnt
[root@localhost mnt]# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var


取消挂载


[root@localhost ~]# guestunmount /mnt/
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
[root@localhost mnt]#


四、KVM基本管理


1.KVM管理


查看 启动 关闭 重启 重置 查看


查看虚拟机


[root@localhost ~]# virsh list --all
Id 名称 状态
----------------------------------------------------
- vm1 关闭
- vm2 关闭


[root@localhost ~]#


查看KVM虚拟机配置文件


[root@localhost ~]# virsh dumpxml vm1
<domain type='kvm'>
<name>vm1</name>
<uuid>6b10e3d2-7cb5-4827-8f3e-efe33703e5c1</uuid>
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>1048576</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
<boot dev='hd'/>
</os>


将vm1虚拟机的配置文件保存至vm6.xml:


virsh dumpxml vm1 > /etc/libvirt/qemu/vm6.xml


使用edit修改配置文件,如果直接用vim编辑器修改配置文件,需要重启libvirtd服务


[root@localhost ~]# virsh edit vm1


暂停虚拟机


[root@localhost ~]# virsh suspend vm1


域 vm1 被挂起


恢复虚拟机


[root@localhost ~]# virsh resume vm1


域 vm1 被重新恢复


关闭虚拟机


方法一
[root@localhost ~]# virsh shutdown vm1
域 vm1 被关闭

方法二
[root@localhost ~]# virsh destroy vm1


重启虚拟机


[root@localhost ~]# virsh reboot vm1


域 vm1 正在被重新启动


重置虚拟机(比重启的启动速度快)


[root@localhost ~]# virsh reset vm1


重新设定域 vm1


[root@localhost ~]#


删除虚拟机


[root@localhost ~]# ll /etc/libvirt/qemu


总用量 24


drwx------. 3 root root   42 5月   1 17:08 networks


-rw-------  1 root root 4592 5月   3 12:01 vm1.xml


-rw-------  1 root root 4590 5月   2 11:39 vm2.xml


-rw-r--r--  1 root root 4642 5月   3 11:52 vm6.xml


[root@localhost ~]# virsh undefine vm1


域 vm1 已经被取消定义


[root@localhost ~]# ll /etc/libvirt/qemu
总用量 16
drwx------. 3 root root 42 5月 1 17:08 networks
-rw------- 1 root root 4590 5月 2 11:39 vm2.xml
-rw-r--r-- 1 root root 4642 5月 3 11:52 vm6.xml
[root@localhost ~]#


[root@localhost ~]# ll /var/lib/libvirt/images/


总用量 10488020


-rw-r--r--  1 root root       9286 5月   2 11:58 route


-rw-r--r--  1 root root     197120 5月   2 12:43 vm1-1.qcow2


-rw-------. 1 qemu qemu 5369757696 5月   3 13:27 vm1.qcow2


-rw-------  1 root root 5369757696 5月   2 12:22 vm2.img


[root@localhost ~]#


注意:虚拟机在开启的情况下undefine是无法删除的, 只会删除配置文件,磁盘镜像还在 ,但是如果在destroy会直接删除


[root@localhost ~]# virsh destroy vm1


域 vm1 被删除


[root@localhost ~]#


设置虚拟机开机启动


[root@localhost ~]# virsh autostart vm2


域 vm2标记为自动开始


[root@localhost ~]# ls /etc/libvirt/qemu/autostart/    #此目录默认不存在,设置开机启动后自动创建


vm2.xml


[root@localhost ~]#


取消虚拟机开机启动


[root@localhost ~]# virsh autostart --disable vm2


域 vm2取消标记为自动开始


[root@localhost ~]#


查看所有开机自启的gues os


[root@localhost ~]# ll /etc/libvirt/qemu/autostart/


总用量 0


[root@localhost ~]# virsh list --all --autostart


Id    名称                         状态


----------------------------------------------------


[root@localhost ~]#


2、字符终端



KVM虚拟化技术介绍以及相关操作_服务器_17




创建快照


[root@localhost ~]#   virsh snapshot-create-as vm2 vm2.snap


已生成域快照 vm2.snap


[root@localhost ~]#


查看镜像格式



​[root@localhost ~]# qemu-img info /var/lib/libvirt/images/vm2.imgimage: /var/lib/libvirt/images/vm2.imgfile format: qcow2virtual size: 5.0G (5368709120 bytes)disk size: 5.0Gcluster_size: 65536Snapshot list:ID        TAG                 VM SIZE                DATE       VM CLOCK1         vm2.snap                  0 2022-05-03 14:37:36   00:00:00.000Format specific information:    compat: 1.1    lazy refcounts: true[root@localhost ~]#​



查看创建的快照


[root@localhost ~]# virsh snapshot-list vm2
名称 生成时间 状态
------------------------------------------------------------
vm2.snap 2022-05-03 14:37:36 +0800 shutoff


[root@localhost ~]#


创建磁盘


[root@localhost qemu]# qemu-img create -f raw /var/lib/libvirt/images/vm2-1.raw 2G


Formatting '/var/lib/libvirt/images/vm2-1.raw', fmt=raw size=2147483648


将磁盘添加到vm2虚拟机上面


  

  <disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/var/lib/libvirt/images/vm2-1.raw'/>
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
</disk>



KVM虚拟化技术介绍以及相关操作_虚拟化技术_18


重新加载文件


[root@localhost qemu]# virsh define vm2.xml
定义域 vm2(从 vm2.xml)


[root@localhost qemu]#


启动vm2虚拟机


[root@localhost qemu]# virsh start vm2


域 vm2 已开始


[root@localhost qemu]#


尝试给raw格式的磁盘镜像做快照


[root@localhost qemu]# virsh snapshot-create-as vm2 vm2.snap1


错误:不支持的配置:存储类型 vdb 不支持磁盘 raw 的内部快照


[root@localhost qemu]#


失败


raw格式转换成qcow2


[root@localhost qemu]# qemu-img convert -O qcow2 /var/lib/libvirt/images/vm2-1.raw /var/lib/libvirt/images/vm2-1.qcow2


[root@localhost qemu]# #查看是否转成功


[root@localhost qemu]# ll /var/lib/libvirt/images/ -h
总用量 11G
-rw-r--r-- 1 root root 9.1K 5月 2 11:58 route
-rw-r--r-- 1 root root 193K 5月 2 12:43 vm1-1.qcow2
-rw-------. 1 root root 5.1G 5月 3 13:29 vm1.qcow2
-rw-r--r-- 1 root root 193K 5月 3 15:07 vm2-1.qcow2
-rw-r--r-- 1 qemu qemu 2.0G 5月 3 14:54 vm2-1.raw
-rw------- 1 qemu qemu 5.1G 5月 3 15:07 vm2.img
[root@localhost qemu]#


[root@localhost qemu]# #查看是否转成功
[root@localhost images]# qemu-img info vm2-1.qcow2
image: vm2-1.qcow2
file format: qcow2
virtual size: 2.0G (2147483648 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
[root@localhost images]#


将虚拟机的硬盘只想转换后的qcow2.img


[root@localhost images]# vim /etc/libvirt/qemu/vm2.xml 

<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/vm2-1.qcow2'/>
<target dev='vdb' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
</disk>


重新加载配置文件


[root@localhost images]# virsh define /etc/libvirt/qemu/vm2.xml


定义域 vm2(从 /etc/libvirt/qemu/vm2.xml)


[root@localhost images]#


创建快照


[root@localhost images]# virsh snapshot-create-as vm2 vm2.snap2


已生成域快照 vm2.snap2


[root@localhost images]#


查看添加的硬盘



KVM虚拟化技术介绍以及相关操作_KVM_19


给虚拟机创建第三个快照vm2.snap3


[root@localhost images]# virsh snapshot-create-as vm2 vm2.snap3


已生成域快照 vm2.snap3


[root@localhost images]#


恢复到快照vm2.snap3(注意先将虚拟机关机)


[root@localhost images]# virsh snapshot-revert vm2 vm2.snap3


产看虚拟机快照


[root@localhost images]# virsh snapshot-list vm2
名称 生成时间 状态
------------------------------------------------------------
vm2.snap 2022-05-03 14:37:36 +0800 shutoff
vm2.snap2 2022-05-03 15:34:11 +0800 running
vm2.snap3 2022-05-03 15:44:07 +0800 running


[root@localhost images]#


删除虚拟机快照


[root@localhost images]# virsh snapshot-delete --snapshotname vm2.snap3 vm2


已删除域快照 vm2.snap3


[root@localhost images]#


再次查看快照


[root@localhost images]# virsh snapshot-list vm2
名称 生成时间 状态
------------------------------------------------------------
vm2.snap 2022-05-03 14:37:36 +0800 shutoff
vm2.snap2 2022-05-03 15:34:11 +0800 running

[root@localhost images]#




一、KVM网络管理


NAT网络拓扑



KVM虚拟化技术介绍以及相关操作_服务器_20


显示虚拟网卡机口


[root@localhost images]# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.5254000fa76a yes virbr0-nic
vnet0


删除虚拟网卡


[root@localhost images]# brctl delif virbr0 vnet0
[root@localhost images]# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.5254000fa76a yes virbr0-nic
[root@localhost images]#


添加虚拟网卡


[root@localhost images]# brctl addif virbr0 vnet0   
[root@localhost images]# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.5254000fa76a yes virbr0-nic
vnet0
[root@localhost images]#


1.创建虚拟机vm2虚拟网卡的配置文件


[root@localhost network-scripts]# pwd


/etc/sysconfig/network-scripts


[root@localhost network-scripts]# vim ifcfg-br0 


DEVICE=br0
ONBOOT="yes"
BOOTPROTO=static
DEFROUTE=yes
IPADDR=192.168.124.225
GATEWAY=192.168.126.2
NETMASK=255.255.255.0
DNS1=192.168.0.1
DNS2=8.8.8.8


修改宿主机网卡配置文件



[root@localhost network-scripts]# vim ifcfg-ens33


DEVICE="ens33"


ONBOOT="yes"


BRIDGE=br0



重启网络服务


[root@localhost network-scripts]# systemctl restart libvirtd
[root@localhost network-scripts]# systemctl restart network



删除桥接网卡步骤:


1.删除br0的配置文件


[root@localhost network-scripts]# rm -rf ifcfg br0


[root@localhost network-scripts]# rm -rf ifcfg-ens33


2.修改正常网卡的配置文件

[root@localhost network-scripts]# mv ifcfg-ens33.back ifcfg-ens33
[root@localhost network-scripts]#


3.重启服务

[root@localhost network-scripts]# systemctl restart libvirtd    #重启KVM服务
[root@localhost network-scripts]# systemctl restart network #重启网卡
[root@localhost network-scripts]#



2 .配置文件方式创建nat网络


[root@localhost ~]# cp /etc/libvirt/qemu/networks/default.xml  /etc/libvirt/qemu/networks/nat1.xml        


[root@localhost ~]# cd  /etc/libvirt/qemu/networks/


[root@localhost networks]# vim nat1.xml    #修改nat网络配置文件


<network>
<name>nat1</name>
<uuid>f567528c-40fa-4f10-b19a-349b09d1361b</uuid>
<forward mode='nat'/>
<bridge name='virbr1' stp='on' delay='0'/>
<mac address='52:54:00:0f:a8:61'/>
<ip address='192.168.120.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.120.2' end='192.168.120.254'/>
</dhcp>
</ip>
</network>




KVM虚拟化技术介绍以及相关操作_服务器_21


重启服务


[root@localhost networks]# systemctl restart libvirtd



如果是图形化界面就可以选择刚创建的网卡nat1



KVM虚拟化技术介绍以及相关操作_KVM_22



KVM虚拟化技术介绍以及相关操作_服务器_23



3 .配置文件方式创建isolated网络


[root@localhost networks]# cp default.xml isolated200.xml


[root@localhost networks]# vim isolated200.xml


<network>
<name>isolated200</name>
<uuid>f567528c-40fa-4f10-b09b-349b09d1361b</uuid>
<bridge name='virbr2' stp='on' delay='0'/>
<mac address='52:54:00:0f:a9:6b'/>
<ip address='192.168.121.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.121.2' end='192.168.121.254'/>
</dhcp>
</ip>
</network>




KVM虚拟化技术介绍以及相关操作_虚拟化技术_24



#重启服务


[root@localhost networks]# systemctl restart libvirtd


#查看所有网络


[root@localhost networks]# virsh net-list


名称               状态     自动开始  持久


----------------------------------------------------------


default              活动     是           是


nat1                 活动     否           是


#启动网络


[root@localhost networks]# virsh net-start isolated200


网络 isolated200 已开始


#开机自启动


[root@localhost networks]# virsh net-autostart isolated200      


网络isolated200标记为自动启动


#查看所有网络


[root@localhost networks]# virsh net-list
名称 状态 自动开始 持久
----------------------------------------------------------
default 活动 是 是
isolated200 活动 是 是
nat1 活动 否 是


创建网卡之后,添加即可,添加方式与nat1网卡添加上一致