https://www.cnblogs.com/g2thend/p/11033024.html
一,KVM基础
kvm是一种技术,云计算是一种模式,虚拟化是利用相应的技术方法在一台物理机器上将其按照不同的需求划分成多个相同或者不同的虚拟操作系统,并且各个虚拟系统可以同时运行,互不干扰,其中任何一个虚拟系统的损坏都不影响同一物理服务器上的其他虚拟系统。
虚拟化分类
服务器虚拟化-虚拟服务器
桌面虚拟化-瘦客户机连接win7 实现普通办公
存储虚拟化-SAN(基于磁盘)/NAS(NFS/Samba)/GlusterFS
应用虚拟化-将办公软件虚拟化,最典型的就是office
网络虚拟化-SDN
更多待补
二,KVM实验
1,网络
使用kvm 安装虚拟机后,需要为客户机设置网络接口,2种方式:
KVM 客户机网络连接有两种方式:
NAT方式是kvm安装后的默认方式。它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机
由于虚拟接口和物理接口之间没有连接关系,所以虚拟机只能在通过虚拟的网络访问外部世界,无法从网络上定位和访问虚拟主机。virbr0是一个桥接器 ,使用 brctl show 及 route 查看
以网桥方式连接,客户机可以与子网里面的机器互相通信,可以使虚拟机成为网络中具有独立IP的主机,桥接网络(也叫物理设备共享)被用作把一个物理设备复制到一台虚拟机。网桥多用作高级设置,特别是主机多个网络接口的情况
网桥的基本原理就是创建一个桥接接口br0,在物理网卡和虚拟网络接口之间传递数据,适用于主机虚拟化
2,架构如上图
大坑:
实验用的是 CentOS Linux release 7.4.1708 (Core) :
1,yum 安装 libvirt 的版本 libvirt version: 4.5.0, package: 10.el7
systemctl start libvirtd 报错:
error : virModuleLoadFile:53 : internal error: Failed to load module '/usr/lib64/libvirt/storage-backend/libvirt_storage_backend_rbd.so': /usr/lib64/libvirt/storage-backend/libvirt_storage_backend_rbd.so: undefined symbol: rbd_diff_iterate2
处理:
mv libvirt_storage_backend_rbd.so{,.bk}
然后可以正常启动。
2,在做网络bond和桥接时总是出错,桥接配置地址后无法正常与外界公网连接
折腾了一天,后来换了系统,centos 7.6 后正常配置bond和桥,kvm 。
三,操做
1,宿主机准备
四个网卡,2个桥接,一个仅主机模式(可自动分配ip)
1 2 3 4 5 6 7 8 9 10 11 | # 1,vmware 宿主机cpu开启虚拟化 # 2,确认指令集是否支持kvm grep -E "vmx|svm" /proc/cpuinfo | wc -l 2 # 3,安装kvm 工具包 yum install qemu-kvm qemu-kvm-tools libvirt virt-manager virt- install acpid systemctl start /enable libvirtd ifconfig virbr0 #查看生成的网卡 grep "192.168.122.1" /etc/lib #查看ip 地址 grep "192.168.122.1" /etc/libvirt/ -R #查看ip所在文件,可以修改为指定内网ip |
2,创建NAT模式虚拟机
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | ## 提前上传镜像 ll /usr/local/src/CentOS-7-x86_64-Minimal-1810 .iso ##创建磁盘 ll /var/lib/libvirt/images/ #默认保存虚拟机磁盘的路径 ##创建一个格式为raw大小为10G的裸磁盘 qemu-img create -f raw /var/lib/libvirt/images/CentOS-7-x86_64 .raw 10G ##qcow2格式 qemu-img create -f qcow2 /var/lib/libvirt/images/centos .qcow2 10G #创建默认网络虚拟机,默认为nat模式 virt- install --virt- type kvm --name centos7 -- ram 1024 --vcpus 2 \ --cdrom= /usr/local/src/CentOS-7-x86_64-Minimal-1810 .iso \ --disk path= /var/lib/libvirt/images/centos .qcow2 \ --network network=default \ --graphics vnc,listen=0.0.0.0 --noautoconsole #--network network=default 网络默认NAT模式 |
3,创建bond+桥接
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 | #创建br0桥接网卡,双网卡绑定+ 桥接 #多个网卡绑定,高可用或带宽叠加 宿主机按装 yum -y isntall bridge-utlis 本机配置 外网:eth0 eth1 内网:eth2 eth3 cd /etc/sysconfig/network-scripts ##bond0配置 1,vim ifcfg-bond0 TYPE=Bond BOOTPROTO=none DEVICE=bond0 NAME=bond0 ONBOOT= yes USERCTL=no BONDING_MASTER= yes BONDING_OPTS= "mode=1 miimon=100" BRIDGE=br0 #桥接到br0 2,vim ifcfg-br0 TYPE=Bridge BOOTPROTO=static DEFROUTE= yes PEERDNS= yes PEERROUTES= yes IPV4_FAILURE_FATAL=no IPV6INIT= yes IPV6_AUTOCONF= yes IPV6_DEFROUTE= yes IPV6_PEERDNS= yes IPV6_PEERROUTES= yes IPV6_FAILURE_FATAL=no NAME=br0 DEVICE=br0 ONBOOT= yes IPADDR=172.20.134.7 #宿主机ip NETMASK=255.255.0.0 GATEWAY=172.20.0.1 DNS1=114.114.114.114 3,eth0 配置 vim ifcfg-eth0 TYPE=Ethernet BOOTPROTO=none DEVICE=eth0 ONBOOT= yes USERCTL=no MASTER=bond0 SLAVE= yes 4,eth1配置 vim ifcfg-eth1 TYPE=Ethernet BOOTPROTO=none DEVICE=eth1 ONBOOT= yes USERCTL=no MASTER=bond0 SLAVE= yes #bond1 配置 1,vim ifcfg-bond1 BOOTPROTO=static NAME=bond1 DEVICE=bond1 ONBOOT= yes BONDING_MASTER= yes BONDING_OPTS= "mode=1 miimon=100" BRIDGE=br1 2,vim ifcfg-br1 TYPE=Bridge BOOTPROTO=static NAME=br1 DEVICE=br1 ONBOOT= yes IPADDR=10.20.200.4 #宿主机私网ip NETMASK=255.255.255.0 3,eth2 配置 vim ifcfg-eth2 BOOTPROTO=static NAME=eth2 DEVICE=eth2 ONBOOT= yes NM_CONTROLLED=no MASTER=bond1 USERCTL=no SLAVE= yes 4,eth3配置 vim ifcfg-eth3 BOOTPROTO=static NAME=eth3 DEVICE=eth3 ONBOOT= yes NM_CONTROLLED=no MASTER=bond1 USERCTL=no SLAVE= yes ##第一个kvm虚拟机 #创建磁盘 qemu-img create -f qcow2 /var/lib/libvirt/images/centos7-bridge .qcow2 10G #创建桥接网络虚拟机 virt- install --virt- type kvm --name bridge-2 -- ram 1024 --vcpus 2 \ --cdrom= /data/CentOS-7-x86_64-Minimal-1810 .iso \ --disk path= /var/lib/libvirt/images/centos1 .qcow2 --network bridge=br0 \ --graphics vnc,listen=0.0.0.0 --noautoconsole ##第二个虚拟机按步骤重复操做 注意第二台主机的网络模式为--network bridge=br1 或创建成功后使用virt-manager 图型化更改网卡模式。选择br1 ##对于第二台宿主机,可以将第一台的网卡配置文件及镜像复制过去,更改ip,启动虚机后立刻poweroff 后重新启动 |