Linux技术02-KVM

目录

一、虚拟机技术发展

1.全虚拟化

2.半虚拟化

3.硬件辅助虚拟化

4.容器化

5.超轻虚拟化

二、KVM

部署示例

工具集

 架构


一、虚拟机技术发展

529020c4311741a7908dbafd9bdbf213.png

1.全虚拟化

         随着x86的流行并成为了服务器的行业标准,为解决基础架构利用率低,成本高等缺点,大大促进了虚拟化技术的发展。VMware首创了纯软件实现方式并迅速抢占虚拟化市场,全虚拟化需要在VMM中模拟出一颗包含各种单元的CPU,还需要模拟一张进行虚拟存储地址和物理存储地址转换的页表,还需要模拟磁盘设备控制器、网络适配器等各种I/O外设接口。全虚拟化性能较低,技术实现异常困难。代表性产品如VMware vSphere、Hyper-V、Xen、KVM。

2.半虚拟化

        半虚拟化是一种通过修改Guest OS部分访问特权状态的代码以便直接与VMM交互的技术。在半虚拟化虚拟机中,部分硬件接口以软件的形式提供给Guest OS,提升了性能,但是半虚拟化VMM只需要模拟部分底层硬件,因此Guest OS不做修改是无法在虚拟机中运行的,甚至运行在虚拟机中的其它程序也需要进行修改。代表性产品如Xen、KVM、VMware ESX Server。

3.硬件辅助虚拟化

        CPU硬件直接改造升级,使用Intel VT-X/AMD-V技术,CPU直接接收虚拟机的命令,避免的解释和翻译命令的过程,性能大大提高。基于硬件新技术的产品如KVM、Hyper-V、VMware。

4.容器化

        在微服务架构的推动下,容器技术不再隔离计算机硬件资源,而是通过Cggroup和Namespace等技术,隔离操作系统资源,虚拟化成本大大减少,更轻量级。代表性产品如Docker。

5.超轻虚拟化

        基于KVM和VirtIO,构建MicroVM Zone。提供毫秒级的VM创建速度,是一个更精简、更安全、更现代化的虚拟化技术方向。

二、KVM

        目前应用比较广泛的产品:Docker、基于容器的编排自动化工具Kubernetes;KVM、基于KVM的开源云计算平台OpenStack;Firecracker、基于Firecracker的AWS Lambda&Fargate等。

        KVM(基于内核的虚拟机)是一个适用于支持硬件辅助虚拟化(如Intel VT或AMD-V)的x86硬件全虚拟化解决方案。它允许我们在单个物理机器上运行多个虚拟机(VM),每个虚拟机都有自己的虚拟化硬件,如网卡、磁盘和图形适配器。

        KVM的主要特点:
开源:KVM是开源的,自Linux内核2.6.20版本起集成到主线内核中,把Linux变成了Hypervisor。
性能:通过利用硬件虚拟化扩展,提供接近原生的性能。
灵活性:支持多种guest操作系统,包括各种Linux发行版和Windows。
可扩展性:适用于小规模部署和大规模云环境。

部署示例

1.检查虚拟化支持:

cat /proc/cpuinfo | grep -E 'vmx|svm'

2.安装KVM及相关软件包:

sudo yum -y install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install virt-clone virt-viewer

3.启动并启用libvirtd服务:

sudo systemctl enable --now libvirtd
sudo systemctl start libvirtd

4.配置网桥,修改 ifcfg-br0 文件,设置 TYPE=Bridge,并配置 IP 地址、子网掩码、网关和 DNS:

ip link add br0 type bridge
ip link set dev br0 up
brctl show 

5.创建虚拟存储卷

mkdir -p /data/vmfs 
virsh pool-define-as vmdisk --type dir --target /data/vmfs 
virsh pool-build vmdisk
virsh pool-list --all
virsh pool-start vmdisk 
virsh pool-autostart vmdisk
virsh pool-list --all
virsh vol-create-as vmdisk oeltest03.qcow2 20G --format qcow2

6.创建虚拟机:

sudo virt-install \
--name=centos7 \
--vcpus=2 \
--memory=2048 \

--disk path=/data/vmfs/oeltest03.qcow2,format=qcow2,size=20,bus=virtio \
--cdrom=/path/to/centos7.iso \
--disk size=20 \
--os-type=linux \
--network bridge=br0

7.图形化创建虚拟机(可选):

sudo yum install virt-manager      

运行virt-manager命令将自动弹出创建虚拟机的窗口,进行图形化管理。

8.查看虚拟机状态:

virsh list --all

工具集

qemu-kvm:负责CPU和内存的虚拟化。
libvirt:KVM 管理工具,提供统一的接口,包含后台服务libvirtd、API 库、命令行工具virsh
libvirt-python:通过 Python调用libvirt API。
libguestfs-tools:虚拟机镜像管理工具。
virt-install:命令行工具,用于创建虚拟机。
virt-clone:用于克隆虚拟机。
virt-manager:图形界面管理工具。
virt-viewer:用于显示虚拟机的图形控制台。

 架构

3ea17cf099cf47568db9e6a0cf588c74.png

1.KVM的内核模块kvm.ko,只用于直接管理虚拟CPU和虚拟内存;Qemu协助管理IO设备虚拟化,用于虚拟磁盘IO和网络IO等等,Qemu的核心模块为VirtIO,VirtIO是半虚拟化技术;
2.一个KVM虚拟机在宿主机操作系统中是一个qemu-kvm进程,每个虚拟机中的vCPU是宿主机中的一个线程;
3.虚拟机的vCPU总数可以超过宿主机CPU数量,也就是CPU Overcommit(超配);
4.Intel的EPT技术和AMD的NPT技术在硬件层面上实现了虚拟内存地址转换,采用两级页表结构:Guest OS页表维护VM虚拟内存地址GVA到VM物理内存地址GPA的转换,EPT页表来维护VM物理内存地址GPA到宿主机物理内存地址HPA的转换;
5.网络配置模式有:NAT网络,桥接网络,内部网络(Internal Networking/Isolated Network),Host-Only网络,MACVTAP网络(Macvtap Networking),Passthrough模式(SR-IOV网络)。以及更高级的vhost-net(Virtio-net扩展),vDPA (Virtio的一种硬件加速版本),VXLAN(Virtual Extensible LAN)等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

炸裂狸花猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值