阅读学习教材「庖丁解牛Linux 分析 」第10,11章,有问题优先使用chatgpt等AI工具。或者到蓝墨云班课中提问,24小时内回复,鼓励解答别人问题,提问前请阅读「如何提问」。
教材深入学习关注豆列「Linux内核及安全」。
在本周日晚12:00前发学习博客(标题 学号《Linux内核原理与分析》第十周作业),重点是遇到的问题和解决方案内容涵盖教材学习和视频,格式用Markdown。不按时交作业会扣分。
第十章总结
KVM(Kernel-based Virtual Machine)
- 基本概念:KVM 是一种基于 Linux 内核的开源虚拟化解决方案,允许将 Linux 内核转变为一个类型 1 的超级管理程序(Hypervisor)。通过 KVM,可以在单个物理主机上运行多个隔离的虚拟环境,即虚拟机。
- 硬件辅助虚拟化:KVM 利用现代处理器中的硬件虚拟化技术(如 Intel VT 和 AMD-V),提供高效的虚拟化解决方案。
- KVM 内核模块:KVM 通过内核模块(kvm.ko 和 kvm-intel.ko 或 kvm-amd.ko)实现,负责虚拟机的创建、执行和管理。
KVM API
- 概述:KVM API 是一套内核级别的编程接口,用于与 KVM 交互。它允许用户空间应用程序创建和管理虚拟机,包括分配资源、设置虚拟硬件和控制虚拟机的执行。
- 使用方式:通过标准的系统调用接口与 KVM API 交互,主要通过 /dev/kvm 设备进行。
- 功能:包括虚拟机创建和销毁、虚拟 CPU 和内存的管理、虚拟设备的配置等。
QEMU-KVM
- QEMU 与 KVM 的结合:QEMU 原本是一个独立的模拟器,可以在没有硬件辅助的情况下进行完全的系统仿真。与 KVM 结合后,QEMU 用于模拟硬件,并利用 KVM 提供的硬件辅助虚拟化功能,大大提高了性能。
- 角色:在 KVM/QEMU 组合中,QEMU 负责模拟虚拟硬件(如硬盘、网络接口等),而 KVM 负责 CPU 和内存的虚拟化。
- 用户空间工具:QEMU 也作为用户空间工具,提供了虚拟机的图形界面,使得管理虚拟机更为便捷。
虚拟机技术 - 虚拟机的定义:虚拟机是在软件中创建的计算机的仿真,它模拟硬件系统并允许用户在上面运行操作系统和应用程序。
虚拟化类型:
- 完全虚拟化:提供与真实硬件相同的接口,不需修改客户操作系统。
半虚拟化:客户操作系统需要修改以在虚拟化环境中运行。 - 操作系统级虚拟化:例如 Docker,提供轻量级的隔离环境而非完整的虚拟机。
应用场景:
- 资源优化与共享:在同一硬件上有效分配资源给多个虚拟机。
- 测试与开发:提供一致、可控的环境用于软件测试和开发。
- 灾难恢复与数据备份:简化和加快备份及恢复过程。
KVM 结合了 Linux 内核的高效和灵活性,通过其 API 提供了强大的虚拟化管理能力,而 QEMU-KVM 的结合则进一步提高了虚拟机的性能和易用性。这些技术的应用非常广泛,从云计算和大型数据中心到小型企业和个人开发者,都在不同程度上依赖于虚拟化技术来优化资源使用、提高系统安全性和灵活性。
第十一章总结
Linux 容器技术基本原理
- 基于 Linux 内核特性:容器技术主要依赖于 Linux 内核的两个重要特性:namespaces 和 cgroups。
- namespaces:提供隔离的环境。不同的 namespaces 隔离不同的系统资源,比如 PID(进程)、network(网络)、mount(文件系统挂载点)等,确保容器内的进程只能看到容器内的资源。
- cgroups(Control Groups):控制和限制容器可使用的资源量,如 CPU、内存、磁盘 I/O 等,防止任何一个容器占用过多资源而影响其他容器或宿主系统。
创建容器的基本过程
- 镜像获取:容器是基于镜像创建的。镜像包含了运行应用所需的所有文件、库、依赖和配置文件。
- 创建新的 namespace:为容器创建新的 namespace,实现操作系统级别的隔离。
- 资源分配:通过 cgroups 分配必要的资源(如 CPU 时间、内存等)。
- 启动进程:在隔离的环境中启动容器的主进程(通常是容器内的第一个进程)。
Docker:主流的容器平台
-
Docker:广泛使用的开源容器化平台,使开发、运行应用程序变得简单。
-
创建容器:
编写 Dockerfile:定义创建镜像的步骤。
构建镜像:使用 docker build 命令根据 Dockerfile 构建镜像。
运行容器:使用 docker run 命令从镜像启动一个或多个容器。 -
特点:
镜像版本管理:Docker Hub 提供了大量预构建的镜像。
易于使用:简洁的命令行工具和 API。
可移植性:容器可以在任何安装了 Docker 的机器上运行。
iSula:轻量级容器技术
-
iSula:华为开发的轻量级容器引擎,主要用于云计算和边缘计算场景。
-
特点:
高性能:针对高性能计算和低延迟通信优化。
安全:提供安全隔离和加密功能。
轻量级:适用于资源受限的环境。
总结
Linux 容器技术通过利用 Linux 内核的 namespaces 和 cgroups 功能,提供了一种高效、轻量级的方式来隔离和管理应用程序。Docker 作为最流行的容器平台之一,提供了易于使用的工具和广泛的社区支持。而 iSula 则作为一个轻量级、高性能的容器引擎,适用于对性能和安全性有更高要求的场景。这些技术在提高应用的可移植性、简化部署流程和优化资源利用方面发挥着关键作用。