Advertisement

华中科技大学计算机学院云计算与虚拟化课程结课报告

阅读量:

这门课程的学习相对容易达到及格标准,只要求完成结课报告达到500字以上的写作水平即可,特别适合那些希望通过轻松完成作业获取学分的同学。然而,要追求更高分数则并非易事,必须满足多项严格要求:第一,所选论文需发表在顶级期刊上;第二,在结课报告中需体现对文章内容的理解与分析;第三,需完成文章中所述技术实现或相关云计算实践的复现工作;第四,虽然没有具体的成绩分布数据,但根据其他同学反馈普遍反映分数集中在80分左右,这一政策对于希望通过加权提升成绩的同学并不友好。基于个人经验分享当年的结课报告方案以供学弟学妹们作为参考使用

以下结课报告仅供参考,禁止直接搬运,如被判定抄袭,作者概不负责。

一 读后感

在仔细浏览了吴老师个人主页上的大量论文后, 我最终选定《PVM: Efficient Shadow Paging for Deploying Secure Containers in Cloud-native Environments》这篇论文作为深入研究的对象, 该论文被收录于第29届 Symposium on Operating Systems Principles(SOSP '23)的会议论文集之中

该论文基于KVM平台针对现有问题进行了优化与改进,并开发了PVM方案。其中一种基于KVM虚拟机管理程序构建的高性能嵌套虚拟化架构采用页表作为基础

1、什么是KVM

在开始阅读这篇论文之前,我特意花时间了解了KVM的相关知识。全称是基于Linux内核的开源虚拟化技术的一种实现形式。它主要依赖Linux内核中的虚拟化功能模块,并通过将其划分为多个独立运行的虚拟机实例来实现资源隔离与高效利用。每个虚拟机在KVM中被模拟成一个独立的Linux进程,并由Linux核心提供的调度机制来管理这些进程之间的资源分配与协调工作。这种设计使得其能够充分利用现有Linux内核的功能特性。

服务器虚拟化是云计算最核心技术之一,在这一领域中,KVM因其卓越性能而成为最流行的开源服务器虚拟化解决方案。它不仅为企业提供了资源共享、高可靠性以及快速部署的能力,还显著提升了数据的安全性和隔离性水平。在Web服务器的虚拟化应用中,KVM通过在单个物理服务器上运行多个虚拟机,有效提升了资源利用率和性能表现。基于其技术架构、社区活跃度和广泛应用程度,KVM已逐渐取代了另一款开源虚拟化技术Xen,成为云计算基础设施中的标准选择。在公有云服务市场中,自2017年之后,AWS、阿里云、华为云等主要厂商纷纷转向采用KVM作为其默认的解决方案,而Google系统以及腾讯云等同样选择KVM作为其云计算平台的技术基础

2、KVM有哪些不足

本文研究表明,在x86体系结构中存在严重的嵌套式虚拟化现象这一问题主要源于主机层面的虚拟机管理程序向客户机层面提供必要的硬件虚化的支持这一机制的存在。这种状况不仅导致了云资源管理和监控工作的复杂性进一步加剧而且也让人们对于现有的主机层 Virtual Machine(VMM)暴露在外面临的潜在攻击面扩大这一潜在风险感到担忧。相比之下,在内存虚化的性能方面 文章所设计实现的 Progressive Virtual Machine (PVM) 明显优于KVM中的现有嵌套方案尤其是在处理多任务并行工作时 在CPU和I/O虚拟化的性能上表现同样出色。如今已将PVM广泛应用于托管每天数以万计的安全容器中

3、PVM的关键设计

PVM 是一种基于 KVM 的高性能客户机虚拟化管理程序,在主机层面实现透明化的虚拟机管理功能的同时也不支持硬件虚拟化技术的应用。该系统主要采用了两大核心技术方案:

  1. 客户机与客户机虚拟机管理程序之间的最少共享内存空间, 以推动不同权限等级之间的状态转换.
  2. 高效的影子页表设计能够有效降低成本.

4、嵌套虚拟化

本文系统性探讨了当前多层次嵌入式架构下的新型Virtual Machine (VM) 管理技术。相比之下,在现有的硬件虚拟化技术框架下(例如Intel VT-x和AMD-V),单级软件模拟式的微内核式 VM 虚拟化解法在性能上具有显著优势的同时也展现出较低的成本开销水平。然而,在二级嵌入式架构中这一优势便逐渐消失并可能演变为次优表现;与此同时还会导致主机层面 VMM 管理程序处于最特权级别状态下的过度隔离风险。为此本研究提出了一种全新的软件驱动型多层次嵌入式架构:该架构完全脱节于传统的L0 hypervisor架构并摒弃了任何硬件相关支持机制;这种设计不仅能够实现与其共享同一物理处理器核心下的其他常规VMM环境而且还可在L1与L0层间VM输出/输入接口层面实现无缝对接。

5、内存虚拟化

内存虚拟化主要可分为软件驱动型和硬件辅助型两种类型。其中较为常见的软件驱动型内存虚拟化技术是"影子页表"(Shadow Page Table)技术;硬核技术方面,则是以英特尔提出的'EPT'(Extend Page Table, 扩展页表)为代表的技术体系。在转换过程中需依次完成主机物理地址到 guest物理地址再到 virtual物理地址等多步操作才能实现主机物理地址与 guest 虚拟地址之间的映射关系。传统的内存管理方案中每当 guest 机器进行一次物理地址访问时都需要由虚磁(VM)进行多次地址转换工作其效率极为低下因此这种方法难以满足现代高性能计算的需求推动了现代内存管理理论的发展

影子页表通过简化地址转换的过程实现了虚拟地址空间到物理地址空间的直接映射。在原有 CR3 地址映射机制的基础上引入了 EPT 页表的方法使得 GVA 到 GPA 再到 HPA 的两次地址转换完全由硬件处理而 PVM 则将 L1 虚拟机中的影子分页及世界切换功能与 L0 管理程序支持的 EPT 和 VMX 功能相结合其组合效果明显优于仅依靠硬件辅助的方法

这篇论文阐述了PVM作为L1 虚拟机中的软件半虚拟化解决方案,并未对L0主机虚拟机管理程序进行任何修改。为了实现全面控制L2客户机内存的虚拟化过程,PVM 采用了基于软件的影子分页技术,将所有L2虚拟地址转换为对应的L1物理地址,并通过结合硬件EPT或NPT机制,完成剩余转换任务,最终实现了与原有未修改KVM主机管理程序的有效协同工作状态,从而支持嵌套运行及混合运行模式下的正常操作。此外,PVM 在执行世界切换时特别注意避免在x86处理器(如 Intel VMX)上引入额外的硬件扩展项,以此确保其隔离性不受影响。通过软件仿真的嵌入式CPU 和内存虚化技术,成功地实现了对客户级资源的良好隔离,但这一方法也引发了对其性能可能有所下降的关注点

6 PVM的总体架构

图1-1展示了PVM的总体架构

1)L2 客户机完全在硬件环 3 内运行(即h_ring3在非 root 模式下),具有最低权限。

该切换器由三个主要组件构成:包括所有CPU系统的调用入口、所有CPU的当前状态指示以及自定义中断描述符表IDT。

PVM支持一种高效的全球范围内的无缝切换机制,在L2用户与内核(环3)以及非根模式下的L1虚拟机管理程序(环0)之间实现了完美的交互。借助基于Linux内核页表隔离(KPTI)设计的方案,在安全性方面也取得了显著提升。

PVM正在在切换器中开发一种创新性高的直接切换机制。该机制采用直连式设计,在保证高效的同时使得L2客户机能够通过系统调用快速地进行用户与内核之间的转换,并不依赖虚拟机层进行管理。

最后阶段的实验中发现,在多节点环境下对齐模型存在收敛速度较慢的问题

7 PVM的缺陷

局限性:作为一种基于软件实现的嵌套式虚拟化架构,在处理某些特定工作负载时(如分支指令和多个小型内存区域划分)可能会产生较大的性能消耗成本。这些工作负载会直接导致PVM虚拟机管理单元必须处理大量L2客户机页面错误

安全性:一个恶意承租人(运行于 L2 环境中)可能企图通过攻击暴露的接口以及利用宿主机内核或虚拟机管理程序中的漏洞来突破隔离边界,进而导致信息泄露、权限提升以及服务中断。

二 课程体会

整个课程下来,⽼师的讲授内容主要分为两类,⼀类是云计算,另⼀类就是容器技术。云计算显然是现在⾮常热门的⼀个话题,对于⼀些⽤户的需求,云服务器显然是⾮常具有优势的。在资源利用效率、快速部署和弹性伸缩等方面,容器云技术有着明显的优势,可以帮助企业更好地应对业务需求和竞争压力。但是,在安全性、管理复杂性、资源限制和镜像管理等方面,容器云技术也存在着一些问题和挑战,需要企业和组织加强管理和控制,避免出现安全漏洞和系统崩溃等问题。

国内一些政府机构、金融机构及安全审计部门对于云计算的安全性仍抱有保留态度,并将重点放在数据隐私与合规性问题上。这也造成许多企业对采用Docker等容器技术的热情受到了一定程度的影响。此外,由于Docker的核心代码基于Golang开发,相较于Java、C++等广泛应用的编程语言,Golang在国内的应用普及程度仍然偏低,因而导致相关技术人才短缺及应用范围受到一定限制。

然而,在硬件技术和网络技术不断进步的过程中,
container technology's issues will become less prominent.
此外,
随着 container technology's development and widespread adoption, more solutions will emerge.
个人看法是 containers like Docker will gradually trend toward wider adoption in our field.

三 关于云计算的实践

课程一开始就介绍了云服务的三种核心类型IaaS、PaaS与SaaS,在课程结束时我分别在华为云与阿里云平台体验了相关免费服务:先是成功配置了Stable Diffusion应用于ACK Serverless(仅限于阿里云),随后搭建并运行魔方游戏这一应用(仅限于阿里云),最后通过ACK Service实现了高效的对话机器人服务 CBS 在华为云上的运行。

1 在ACK Serverless中部署Stable Diffusion应用

首先第一步是生成镜像文件,并在生成后填写应用名称信息。接着进入容器配置页面,在这里按照顺序进行设置:首先是基本配置参数的设置;其次是健康检查设置(包括心跳检测、心跳间隔等参数的调整);最后是与应用程序生命周期相关的各种配置项的完善。

在高级配置的服务参数中,默认会生成一个名为k8s.aliyun.com.eci-default-ephemeral-storage的Pod注解;但您也可以根据需求自定义该名称和大小值。

完成以上步骤即可创建成功。

2 在ACK Serverless中使用应用搭建魔方游戏

首先创建镜像,填写应用名称。在容器配置页签,设置如下配置项。

完成以上配置,即可创建成功。

在网络->服务下查看外部端点,用浏览器打开,即可进入魔方游戏。

3 对话机器人服务 CBS

该智能问答机器人为实现智能化对话而配备了一个高效的对话引擎。通过对其内部知识库的设置, 从而使其能够处理多样化的用户查询。

第一步,在问答管理中,添加问题及其答案。

第二步:启动对话体验或通过调用API接口获取token值即可使用预先配置好的机器人。

第三阶段中若选择付费版本,则可增添更多高级功能模块(考虑到本课程旨在介绍云计算与虚拟化的基本知识与实践操作,则建议在条件允许时与华为公司协商获取用于教学的任务代金券)。作为当前使用的版本是免费版,在此情况下便无法享受高级功能模块的配置优化。

全部评论 (0)

还没有任何评论哟~