一、虚拟化技术类型
1、根据虚拟化架构不同
基于平台platform的虚拟化
基于操作系统的虚拟化
2、根据Hypervisor的部署方式
- 寄居虚拟化
vmware workstation, virtual box, kvm, Hyper-V
- 原生虚拟化
ESXI、Xen
3、根据虚拟化技术实现原理
-
软件虚拟化
-
半虚拟化 para-virtualization
由思杰critix公司推出
redhat公司提供virtIO驱动实现半虚拟化
- 硬件辅助虚拟化
- Intel
- VT-x
- vmx
- AMD
- amd-v
- svm
- Intel
二、kvm虚拟化
Kernel-based Virtual Machine 基于内核的虚拟机
kvm 内核模块
借助QEMU I/O实现虚拟硬件的模拟管理
kvm管理工具:
virt-manager、virsh
依赖于libvirtd服务
三、kvm虚拟化安装
1、确保CPU开启虚拟化功能
[root@kvm ~]# lscpu | grep -E -i "vt-x|amd-v"
Virtualization: VT-x
2、安装kvm相关软件
[root@kvm ~]# yum install -y qemu-kvm qemu-img libvirt virt-install virt-manager libvirt-python libvirt-client virt-viewer
确认kvm安装成功
[root@kvm ~]# lsmod | grep -i kvm
kvm_intel 183621 0
kvm 586948 1 kvm_intel
irqbypass 13503 1 kvm
3、确保libvirtd服务是正常运行
[root@kvm ~]# systemctl status libvirtd
● libvirtd.service - Virtualization daemon
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2021-07-19 11:02:00 CST; 34s ago
Docs: man:libvirtd(8)
https://libvirt.org
4、网络环境变化
- virbr0虚拟网卡
[root@kvm ~]# ifconfig virbr0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
作用
让物理机通过virbr0和接入到default虚拟网络中的所有虚拟机通信
作为default虚拟网络中所有kvm虚拟机的网关
查看虚拟网络
[root@kvm ~]# virsh net-list
Name State Autostart Persistent
----------------------------------------------------------
default active yes yes
查看虚拟网络详细信息
[root@kvm ~]# virsh net-dumpxml default
<network>
<name>default</name>
<uuid>815f9595-2006-4643-80c5-824b694e9f8a</uuid>
<forward mode='nat'>
<nat>
<port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:94:80:ae'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
</dhcp>
</ip>
</network>
- 自动开启路由转发功能
[root@kvm ~]# cat /proc/sys/net/ipv4/ip_forward
1
- SNAT转换规则
[root@kvm ~]# iptables -t nat -nL
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
RETURN all -- 192.168.122.0/24 224.0.0.0/24
RETURN all -- 192.168.122.0/24 255.255.255.255
MASQUERADE tcp -- 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535
MASQUERADE udp -- 192.168.122.0/24 !192.168.122.0/24 masq ports: 1024-65535
MASQUERADE all -- 192.168.122.0/24 !192.168.122.0/24