1.虚拟化分类
- 全虚拟化:virtualbox,vmware等。都是模拟出来的,性能比较低。
- 半虚拟化:xen,真正给虚拟机使用物理资源。
- 硬件辅助虚拟化:KVM,利用CPU的虚拟化功能。
2.KVM
kernel-base virtual machine:内核的一个模块。
内核模块对于用户空间,用户空间无法直接操作该模块,所以需要一个中间工具来操作。
工具包含:qemu,qemu-kvm等,但不是很好用。所以红帽开了一个libvirt接口。
然后使用virtsh,virt-manager等工具来操作libvirt,从而管理KVM。
Libvirt是由一个服务来管理的,叫libvirtd。
3.安装KVM
1)打开CPU虚拟化功能。
windows下使用CPU-Z软件可以查看。
Linux是在/proc/cpuinfo中,查看flags行,查看是否存在以下字段:
#AMD CPU:svm
#Intel CPU:vmx
grep '(svm|vmx)' /proc/cpuinfo :查看是否开启虚拟化。
若没有开启:
物理机:去BISO中enable VT功能。
虚拟机:关闭虚拟机,开启CPU虚拟化功能。
再次检查:
2)安装KVM套件
yum groupinstall virtual* :安装kvm套件。(不建议单独安装包)
3)使用virt-manager配置虚拟机
磁盘总线类型:
网卡设备型号:
显示协议:
4.KVM网络
桥接网络:
1)桥接之前,宿主机(物理机)的数据包是直接走eth1出去的(图中虚线)。做了桥接后,虚拟机的虚拟网卡桥接到br0上,物理机的eth1也桥接到br0上,虚拟机和物理机的数据包都通过br0来发送(图中实线)。
2)桥接后,eth1上的IP消失,IP会配置在br0上。
3)由于虚拟机和物理机处于同一二层网络,都可以通过Router上的DHCP服务器分配IP。
在Linux上创建一个桥:
使用图形化工具:
nm-connection-editor & :打开图形化界面。创建网络类型选择桥接。
设置完毕后,重启网络服务: systemctl restart network.service
/etc/sysconfig/network-scripts/ifcfg-br0 中查看网桥配置:
/etc/sysconfig/network-scripts/ifcfg-br0-slave1 中查看物理网卡桥接到网桥上的配置。
图中的HWADDR就是物理网卡eth0的MAC地址。
做好网桥br0并将物理网卡eth0桥接到br0上后,我们就可以将虚拟机的网卡桥接到br0上,实现通讯。
NAT网络:
在安装好KVM虚拟化环境后会有一个默认的NAT网桥(default),宿主机系统 中会自动生成一个网卡virbr0。该网卡是默认提供的NAT网络的网关,IP地址是192.168.xxx.1。我们可以在virt-manager中查看并配置:
可以看到,在虚拟网络页签中有一个default网络,这个是KVM默认创建的网络。在宿主机上对应一个虚拟网卡叫virbr0,该网卡默认地址是192.168.122.1(也是NAT的网关)。该网络对应的IP网段为192.168.122.0/24,转发规则是NAT类型。
===