阅读学习教材「庖丁解牛Linux 分析 」第10,11章
第10章 KVM及虚拟机技术
10.1 虚拟机技术概述
本节介绍了CPU、内存和IO的虚拟化
主流虚拟化技术有VMware的ESXi、开源项目Xen和KVM等,它们的主要差别在于CPU的虚拟化、内存的虚拟化和I/O的虚拟化,以及调度管理实现有所不同。在ESXi中,所有虚拟化功能都在内核中实现;在Xen中,内核仅实现CPU与内存虚拟化,I/O虚拟化与调度管理由主机上启动的第一个负责管理的虚拟机实现;在KVM中,Linux内核实现CPU与内存虚拟化,I/O虚拟化由QEMU实现,调度管理通过Linux进程调度器实现,如图所示。
主流虚拟化技术架构对比示意图除了ESXi、Xen和KVM,还有Hyper-V是微软推出的一种虚拟化技术解决方案。下面以当前主流的虚拟机技术之一(KVM)为例来分析虚拟机技术的实现原理。
10.2 掌握了KMV API的使用方法
10.3 QEMU-KMV的实现原理
10.4 Strato Virt
StratoVirt是华为openEuler操作系统中引入的虚拟化技术,采用Rust语言编写实现。Strato取自Stratosphere,意指地球大气层中的平流层,大气层可以保护地球不受外界环境侵害,而平流层则是大气层中最稳定的一层;类似地,虚拟化技术是操作系统平台上的隔离层,既能保护操作系统平台不受上层恶意应用的破坏,又能为正常应用提供稳定可靠的运行环境;以Strato为名,寓意为保护openEuler平台上业务平稳运行的轻薄保护层。同时,Strato也承载了项目的愿景与未来:轻量、灵活、安全和完整的保护能力。
第11章 Linux容器技术
在本章,学习了容器技术概述、Linux容器技术的基本原理、如何创建一个容器、Docker以及iSula。
Linux容器技术是操作系统级别的虚拟化技术,可以在操作系统层次上为进程提供虚拟的执行环境,一个虚拟的执行环境被称为一个容器(container)。
- 什么是容器?
容器是一种沙盒(sandbox)技术,主要目的是将应用打包起来提供一个与外界隔离的运行环境,以及方便这个沙盒转移到其他宿主机器。本质上,容器是一组特殊的进程,通过namespace、cgroup等技术把资源、文件、设备、状态和配置划分到一个独立的空间,形成一个虚拟的操作系统环境。通俗的理解就是一个装应用软件的箱子,箱子里面有软件运行所需的依赖库和配置。开发人员可以把这个箱子搬到任何机器上,且不影响里面软件的运行。
- Linux容器技术的基本原理?
一个容器大致有3个底层关键技术支持其运行:第一个是通过chroot对文件系统进行隔离,虚拟出容器系统环境的根目录;第二个是通过namespace对pid、user id、网络等进行隔离,虚拟出容器的运行环境;第三个是通过cgroup对内存、CPU、I/O等资源进行隔离,用来管控容器消耗的系统资源。
- 什么是Docker?
Docker是一个开源的应用容器引擎,基于Go语言编写,遵从Apache 2.0开源许可证。Docker可以让开发者打包其应用及其依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上进行容器化部署。
iSulad整体架构示意图