原文:https://www.cnblogs.com/g2thend/p/11033024.html

一,KVM基础#

kvm是一种技术,云计算是一种模式,虚拟化是利用相应的技术方法在一台物理机器上将其按照不同的需求划分成多个相同或者不同的虚拟操作系统,并且各个虚拟系统可以同时运行,互不干扰,其中任何一个虚拟系统的损坏都不影响同一物理服务器上的其他虚拟系统。

虚拟化分类#

服务器虚拟化-虚拟服务器

桌面虚拟化-瘦客户机连接win7 实现普通办公

存储虚拟化-SAN(基于磁盘)/NAS(NFS/Samba)/GlusterFS

应用虚拟化-将办公软件虚拟化,最典型的就是office

网络虚拟化-SDN

更多待补

二,KVM实验#

 

1,网络

使用kvm 安装虚拟机后,需要为客户机设置网络接口,2种方式:

KVM 客户机网络连接有两种方式:

  • 用户网络(User Networking):让虚拟机访问主机、互联网或本地网络上的资源的简单方法,但是不能从网络或其他的客户机访问客户机,性能上也需要大的调整。NAT方式

NAT方式是kvm安装后的默认方式。它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机

 由于虚拟接口和物理接口之间没有连接关系,所以虚拟机只能在通过虚拟的网络访问外部世界,无法从网络上定位和访问虚拟主机。virbr0是一个桥接器 ,使用 brctl show 及 route 查看

  • 虚拟网桥(Virtual Bridge):这种方式要比用户网络复杂一些,但是设置好后客户机与互联网,客户机与主机之间的通信都很容易。

以网桥方式连接,客户机可以与子网里面的机器互相通信,可以使虚拟机成为网络中具有独立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  后重新启动

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐