虚拟化技术概述
一、虚拟化技术概述
1、背景
提升资源利用率、节省成本
特殊行业决定考虑是否适合用虚拟化技术
2、虚拟化类型
2.1 从设计架构来讲
基于平台platform的虚拟化
基于操作系统os的虚拟化
2.2 根据hypervisor部署方式不同
-
原生虚拟化
不依赖于物理机的操作系统,直接在物理机部署Hypervisor
企业级的虚拟化软件 -
寄居虚拟化
必须依赖物理机上有操作系统
个人的虚拟化软件
2.3 根据虚拟化实现的技术
-
软件虚拟化
-
半虚拟化技术, para-virtulazation
提升虚拟机IO性能
借助半虚拟化驱动:virtIO(redhat), vmware-tools、uvp-tools(华为) -
硬件辅助虚拟化
对物理机的CPU指令集进行修改
物理机的CPU必须开启虚拟化功能的支持
Intel CPU: VT-x
AMD CPU: amd-V
二、安装kvm虚拟化环境
1、确保cpu开启虚拟化功能
[root@localhost ~]# lscpu | grep -i -E "vt-x|amd-v"
Virtualization: VT-x
[root@localhost ~]#
2、安装kvm相关软件
[root@localhost ~]# yum install -y qemu-kvm qemu-img libvirt virt-install virt-manager libvirt-python libvirt-client virt-viewer
3、查看libvirtd服务是否运行
[root@localhost ~]# systemctl status libvirtd
● libvirtd.service - Virtualization daemon
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2024-07-04 15:47:17 CST; 19s ago
Docs: man:libvirtd(8)
https://libvirt.org
Main PID: 1886 (libvirtd)
Tasks: 19 (limit: 32768)
CGroup: /system.slice/libvirtd.service
├─1469 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/lib...
├─1470 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/lib...
└─1886 /usr/sbin/libvirtd
Jul 04 15:47:17 localhost.localdomain systemd[1]: Starting Virtualization daemon...
Jul 04 15:47:17 localhost.localdomain systemd[1]: Started Virtualization daemon.
Jul 04 15:47:17 localhost.localdomain dnsmasq[1469]: read /etc/hosts - 2 addresses
Jul 04 15:47:17 localhost.localdomain dnsmasq[1469]: read /var/lib/libvirt/dnsmasq/default.addnhosts - 0 addresses
Jul 04 15:47:17 localhost.localdomain dnsmasq-dhcp[1469]: read /var/lib/libvirt/dnsmasq/default.hostsfile
4、验证kvm是否安装成功
[root@localhost ~]# lsmod | grep -i kvm
kvm_intel 188740 0
kvm 637289 1 kvm_intel
irqbypass 13503 1 kvm
5、主机网络的变化
// 虚拟网卡 virbr0
[root@localhost ~]# ip addr show virbr0
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:ed:50:25 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
// 自动开启路由转发功能
[root@localhost ~]# cat /proc/sys/net/ipv4/ip_forward
1
// nat snat转换规则
[root@localhost ~]# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
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
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/a17c2757904a45d4a54d3d47bcbdd4a0.png
[root@localhost ~]# virsh net-list
Name State Autostart Persistent
----------------------------------------------------------
default active yes yes
[root@localhost ~]# virsh net-dumpxml default
<network>
<name>default</name>
<uuid>17ac5c6c-6b5f-4a71-8635-cf4fb9a02992</uuid>
<forward mode='nat'>
<nat>
<port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:ed:50:25'/>
<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>