毕业论文-轻量级虚拟机文件系统设计与实现.pdf_第1页
毕业论文-轻量级虚拟机文件系统设计与实现.pdf_第2页
毕业论文-轻量级虚拟机文件系统设计与实现.pdf_第3页
毕业论文-轻量级虚拟机文件系统设计与实现.pdf_第4页
毕业论文-轻量级虚拟机文件系统设计与实现.pdf_第5页
已阅读5页,还剩51页未读 继续免费阅读

毕业论文-轻量级虚拟机文件系统设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单位代码 10006 学 号 39061103 分 类 号 TP391 密 级 毕业设计(论文) 轻量级虚拟机文件系统设计与实现 院 ( 系 ) 名 称 计 算 机 学 院 专业名称 计 算 机 科 学 与 技 术 学生姓名 王 家 兴 指导教师 李 建 欣 2013 年 6 月 轻 量 级 虚 拟 机 文 件 系 统 设 计 与 实 现 王 家 兴 北 京 航 空 航 天 大 学 北京航空航天大学 本科毕业设计(论文)任务书本科毕业设计(论文)任务书 、毕业设计(论文)题目: 轻量级虚拟机文件系统设计与实现 、毕业设计(论文)使用的原始资料(数据)及设计技术要求: 主要参考资料:Linux 2.6.28 的内核源代码。 设计并实现一个面向轻量级虚拟机的文件系统,通过 Linux 可加载内核 模块技术将轻量级虚拟机文件系统实现为一个内核模块,将轻量级虚拟机 对宿主机文件系统的系统调用重定向到此模块中。从而完成对共享的宿主 机文件系统的分割,避免由于内核共用而造成的轻量级虚拟机之间的性能 干扰,同时提高系统安全性。 、毕业设计(论文)工作内容: 1.研究操作系统虚拟化中对临界资源竞争-等待现象的成因,设计一种 对宿主机文件系统的分割方法,界定 PFS 的功能范围,完成系统的总体结 构设计。 2.设计和实现了隔离的 POSIX 文件系统的接口(VFS 层接口) ,为每个 虚拟执行环境提供隔离的文件系统操作接口,无需修改传统应用程序。 3.设计和实现了一个底层文件系统管理底层存储, 该底层文件系统嵌入 在宿主机文件系统中的一个文件中,为每个虚拟执行环境提供隔离的、安 全的数据存储。同时可以支持对虚拟执行环境产生的数据进行加密存储。 4.通过实验测试系统的效果,主要关注隔离效果和安全性效果。 、主要参考资料: 1 Bovet Cesati著, 陈莉君等译. 深入理解LINUX内核M. 北京:中国电力 出版社,2007. 2 怀进鹏,李沁,胡春明. 基于虚拟机的虚拟计算环境研究与设计J. 软件 学报,2007,18(8): 2016-2026. 3 张桂权. 操作系统虚拟化J. 软件世界,2008,9(4):51-54. 4 P. Barham, B.Dragovic, K.Fraser, S.Hand, T.Harris, A.Ho, R.Neugebauer, I.Pratt, A.Warfield. Xen and the art of virtualizationA. Proceedings of the 19th ACM Symposium on Operating Systems PrinciplesC. New York:ACM Press,2003:164177. 计算机 学院(系) 计算机科学与技术 专业类 390611 班 学生 王家兴 毕业设计(论文)时间: 2013 年 3 月 01 日至 2013 年 6 月 11 日 答辩时间: 2013 年 6 月 17 日 成 绩: 指导教师: 李建欣 兼职教师或答疑教师(并指出所负责部分) : 系(教研室) 主任(签字) : 北京航空航天大学毕业设计(论文) 本人声明 我声明,本论文及其研究工作是由本人在导师指导下独立完成的,在 完成论文时所利用的一切资料均已在参考文献中列出。 作者:王家兴 签字: 时间:2013 年 6 月 北京航空航天大学毕业设计(论文) 第 I 页 轻量级虚拟机文件系统设计与实现 学 生:王家兴 指导教师:李建欣 摘 要 近几年来,操作系统虚拟化技术逐渐成熟并走向主流,其具有的低消耗、小尺寸的 设计特点,使其在充分利用硬件资源、减少动态迁移和数据备份时间等方面优势尤为突 出。而文件系统作为操作系统中负责管理和存储文件信息的软件机构,其性能的好坏将 直接影响系统的整体性能。所以,通过提高文件系统的性能来提高轻量级虚拟机的整体 性能有着非常重要的研究意义。 在操作系统虚拟化的文件系统方向的研究中,过去的研究主要关注硬件资源的划分、 复用和系统资源视图的隔离,在多个虚拟执行环境之间提供比较好的性能隔离和安全保 障。但多个虚拟执行环境共享同一个操作系统镜像,会带来性能和安全上的问题:1.系 统软件层共享内核数据带来的竞争,会导致多个虚拟执行环境间的性能干扰;2.通过增 强的 chroot 方法隔离文件系统视图,不能完全保证数据的安全性。 针对以上问题, 我们在 Linux 上设计和实现了一种面向轻量级虚拟机的文件系统 (以 下称为 PFS) , 该系统通过为每个虚拟执行环境提供完全隔离的存储, 来保证 I/O 的性能 隔离以及存储数据的安全。 主要研究工作包括: 1. 研究操作系统虚拟化中对临界资源竞争-等待现象的成因, 设计一种对宿主机文 件系统的分割方法,界定 PFS 的功能范围,完成系统的总体结构设计。 2. 设计和实现了隔离的 POSIX 文件系统的接口(VFS 层接口) ,为每个虚拟执行 环境提供隔离的文件系统操作接口,无需修改传统应用程序。 3. 设计和实现了一个底层文件系统管理底层存储,该底层文件系统嵌入在宿主机 文件系统中的一个文件中, 为每个虚拟执行环境提供隔离的和安全的数据存储。 同时可以支持对虚拟执行环境产生的数据进行加密存储。 4. 通过实验测试系统的效果,主要关注性能隔离效果和安全性效果。 系统完成后,本文对 PFS 进行了性能测试。使用 PFS 后轻量级虚拟机的 I/O 吞吐量 得到了提升,这种性能优势随着虚拟机数目的增加而逐渐增大。当 16 个轻量级虚拟机 北京航空航天大学毕业设计(论文) 第 II 页 同时运行时,PFS 的 I/O 吞吐量是原有文件系统的 4 倍多。 关键词:轻量级虚拟机,文件系统,VFS 隔离,吞吐量 北京航空航天大学毕业设计(论文) 第 III 页 Design and Implementation of a File System for Lightweight Virtual Machine Author : Wang Jiaxing Tutor : Li Jianxin Abstract In recent years, OS-level virtualization technology matures and moves towards the mainstream. Its design features of a low consumption and small size, make it particularly prominent in areas of making full use of hardware resources, reducing backup time in dynamic data migration, etc. However, file system, which is the software organization responsible for managing and storing files information, its performance will directly affect the overall system performance. Therefore, improving the performance of the file system to improve the overall performance of lightweight virtual machine has a very important significance. In OS-level virtualization, past research in the direction of file system focuses on hardware resources division, multiplexing and isolation of view of system resources across multiple virtual execution environments. Its aim is to provide better performance isolation and security. However, multiple virtual execution environments sharing the same operating system image brings performance and security problems: 1. The competition, which is caused by the system software layer sharing kernel data, will lead to performance interference of multiple virtual execution environments; 2. Method of isolation through enhanced “chroot” cannot guarantee the security of data. Therefore, we design and implement a file system oriented to lightweight virtual machine (hereinafter referred to as PFS) on Linux. The system ensures the I/O performance isolation and security of stored data by providing completely isolated storage for each virtual execution environment. The main research work includes: 1. Study what causes the competition for critical resources in OS-level virtualization. Design a method to partition the file system on the host machine, define the scope of the PFS and complete the overall structure design of the system. 北京航空航天大学毕业设计(论文) 第 IV 页 2. Design and implement isolated file system interfaces(VFS layer interface) in the standard of POSIX. It can provide quarantined file system interface for each virtual execution environment. And it doesnt need to modify legacy applications. 3. Design and implement an underlying file system to manage the underlying storage, which is embedded as a file in the host file system. This method provides an isolated and secure data storage for each virtual execution environment. It can also encrypt the data generated from virtual execution environment. 4. Test the effectiveness of the system through experiments. We focus on performance and the effect of safety isolation in the test. We did performance test at last. The I/O throughput of lightweight virtual machine has been improved after using PFS. And as the number of virtual machines increases, this performance advantage increases gradually. When 16 lightweight virtual machines run simultaneously, I/O throughput of PFS is over four times more than the original file system. Key words: lightweight virtual machine, file system, VFS separation, throughput 北京航空航天大学毕业设计(论文) 第 V 页 目目 录录 1 绪论 1 1.1 课题来源 . 1 1.2 研究背景 . 1 1.2.1 虚拟机技术概述 1 1.2.2 操作系统虚拟化概念及优势 1 1.2.3 优化文件系统的重要性 2 1.3 国内外研究现状 . 3 1.3.1 操作系统虚拟化资源隔离方法 3 1.3.2 多虚拟执行环境间的性能干扰 4 1.3.3 虚拟执行环境中的安全性威胁 5 1.4 研究目标与内容 . 6 1.5 论文的组织结构 . 6 2 相关技术现状 8 2.1 Linux 文件系统综述 8 2.1.1 Linux 虚拟文件系统(VFS) . 9 2.1.2 Ext2 文件系统 . 10 2.2 Linux 可加载内核模块技术 10 2.3 本章小结 . 12 3 轻量级虚拟机文件系统设计 . 13 3.1 本章概要 . 13 3.2 系统结构设计 . 13 3.3 PVFS 层设计 15 3.3.1 缓存总体设计 15 3.3.2 文件缓存设计 16 3.3.3 目录项缓存设计 17 3.4 PExt 对磁盘数据管理设计 . 19 3.4.1 块组结构 19 北京航空航天大学毕业设计(论文) 第 VI 页 3.4.2 目录结构 21 3.4.3 索引节点结构 21 3.5 本章小结 . 23 4 轻量级虚拟机文件系统实现 . 24 4.1 系统开发环境 . 24 4.1.1 开发语言和平台 24 4.1.2 技术基础 24 4.2 系统的初始化实现 . 25 4.2.1 实现概述 25 4.2.2 主要实现函数 25 4.3 PVFS 层实现 25 4.3.1 元数据计数实现 26 4.3.2 文件打开实现 26 4.3.3 路径解析实现 28 4.3.4 文件读写实现 30 4.4 PExt 层实现 . 31 4.4.1 目录项查找实现 31 4.4.2 磁盘创建操作实现 32 4.4.3 磁盘删除操作实现 33 4.5 本章小结 . 35 5 实验 . 36 5.1 实验环境 . 36 5.2 功能实验 . 36 5.2.1 实验目的 36 5.2.2 实验设计与实验过程 36 5.3 性能实验 . 38 5.3.1 实验目的 38 5.3.2 实验设计与实验过程 38 5.4 本章小结 . 40 北京航空航天大学毕业设计(论文) 第 VII 页 6 总结与展望 . 41 6.1 工作总结 . 41 6.2 工作展望 . 41 致谢 42 参考文献 43 北京航空航天大学毕业设计(论文) 第 1 页 1 绪论 1.1 课题来源 本毕业设计课题来源于国家“863”高技术研究计划“以支撑电子商务为主的网络 操作系统”(2011AA01A202),以及国家“973”基础研究计划“规模化按需聚合资源 的高效运行支撑”(2011CB302602)。 1.2 研究背景 1.2.1 虚拟机技术概述 虚拟化技术最早产生于上世纪 70 年代,早在 1966 年,IBM 剑桥研究中心就设计出 VM/360,首次在计算机系统中实现了对多用户的支持,可以为不同的用户和应用软件 提供隔离、共享的运行环境,使共享硬件资源成为可能。 虚拟机在此技术的支持下出现了。通过虚拟化硬件来实现虚拟机,将一台物理计算 机系统虚拟化为一台或多台虚拟计算机系统,每个虚拟计算系统都拥有自己的虚拟硬件。 其原理就是通过在无优先级模式下,运行虚拟机代码,控制硬件或部分特殊软件的中断 并捕获应用程序及虚拟机的特权指令,然后通过虚拟机监控器(VMM) ,一个运行在硬 件层之上的很薄的层,来模拟这个指令。在虚拟化技术中,虚拟机监控器是关键的软件 层,它位于宿主机的裸机之上、客户机操作系统之下,相对于客户机,在这一层的应用 具备隔离能力、 洞察能力和干涉能力。 由此可见, 虚拟环境由三个部分组成: 硬件、 VMM 和虚拟机。 综上可知,虚拟机技术是在软、硬件之间引入虚拟层,可以应用提供独立的运行环 境,屏蔽硬件平台的动态性、分布性和异构性,支持硬件资源的共享和复用,并为每个 用户提供属于个人独立、隔离的计算环境,同时,为管理员提供硬件资源和软件资源的 集中管理,比如 VMWare Workstation、Xen、Vitual PC 等。虚拟机技术使得在同一台计 算机资源上可以同时运行多个操作系统,从而虚拟机为应用程序的运行提供了相互隔离 的运行环境。 1.2.2 操作系统虚拟化概念及优势 操作系统虚拟化,即共享的操作系统允许多个不同应用在一份份拷贝的操作系统的 北京航空航天大学毕业设计(论文) 第 2 页 控制下隔离运行。单一的宿主操作系统,通过划分其特定部分,成为一个个隔离的操作 执行环境,供程序运行。实际达到的效果和传统虚拟机技术类似,同样将一台物理服务 器划分成了多个“虚拟”的操作系统实例,从而达到分区的目的。简而言之,操作系统中 模拟出一个个跑应用程序的容器,所有虚拟机共享内核空间。 操作系统虚拟化层位于宿主机操作系统层之上,它从应用与操作系统之间的层次横 切一刀, 将操作系统资源访问虚拟化, 为每一台虚拟机创造隔离于其他机器的独立空间。 对上而言,让应用“相信”它是运行于它自己的独立的操作系统实例中;对下而言,翻 译和转换上层应用的命名空间、资源进程需求,使之和谐共存于底层的一个操作系统内 核和硬件资源之中,从而达到更细粒度的资源控制和更有效的可管理性。 操作系统虚拟化因其低消耗、小尺寸的设计而存在一定的优势。从下面两方面来解 释: 1. 资源利用率:它顺应了虚拟化更细粒度、更动态和自动化控制和分配资源的需 求。操作系统虚拟化节省了虚拟硬件层和 Guest 操作系统两层损耗,留出更多可供实际 应用使用的资源。同时,操作系统虚拟化由于只是在操作系统访问层次进行虚拟化,可 以直接利用到操作系统本身的硬件驱动,这样可以最大程度地利用硬件资源。 2. 可管理性:同样由于节省了虚拟硬件层和 Guest 操作系统层次,单以虚拟环境 的创建而言,操作系统虚拟化仅需十几秒到几分钟之间。当需要进行动态迁移、数据备 份时,无论从数据量还是操作耗时而言,都远远小于传统虚拟机技术。 综上操作系统虚拟化的概念和优势,对轻量级的虚拟执行环境的研究是有必要的。 1.2.3 优化文件系统的重要性 文件系统作为操作系统中负责管理和存储文件信息的软件机构,其性能的好坏将直 接影响系统的整体性能。 在普通物理机上,我们关注的文件系统性能指标一般为 I/O 特性。而在虚拟化中, 因为一般情况都是多虚拟机共存,所以除此之外,我们还要特别关注文件系统的隔离性 和安全性。 文件系统 I/O 特性:包括小文件、元数据、大数据等的 I/O 处理性能,这些性 能对于系统性能起着决定性的作用。 文件系统隔离性:是虚拟机资源隔离的基础,资源隔离是虚拟化技术的一项基 北京航空航天大学毕业设计(论文) 第 3 页 础且重要的环节,资源隔离为虚拟机创造隔离的运行空间,使多个虚拟区域互 不影响,虚拟机能够不受干扰地运行于自己的空间内。 文件系统安全性:是决定文件系统最终能否被应用的因素之一,如果安全机制 不够完善,一旦该漏洞被恶意攻击,后果将不堪设想。虚拟机是安装在物理机 上的一种软件机制,它的文件系统作为原物理机的一个“附加”功能,如果安 全机制不完善,那么原物理机可供攻击的漏洞会更多,所以保证文件系统的安 全性对虚拟机稳定、正确地运行非常重要。 综上,提高文件系统的性能对于系统性能的提升具有很大作用,对虚拟机的整体性 能影响很大,所以虚拟环境下对文件系统的研究是必要的。 1.3 国内外研究现状 1.3.1 操作系统虚拟化资源隔离方法 操作系统虚拟化中由于内核共用,文件系统自然也是有共用的,所以在现有的操作 系统虚拟化体系结构中,并不存在面向轻量级虚拟机的文件系统,只是通过划分宿主机 文件系统资源来隔离资源空间,让虚拟机以为自己拥有独立的文件系统,而实际上它只 是拥有宿主机文件系统目录树的一个树枝,通过限定它对宿主机文件系统目录树的访问 权限而将其限制在一个树枝中。操作系统虚拟化通过增强 chroot 方法来实现资源隔离。 chroot,即 change root directory(更改 root 目录)。在 linux 系统中,系统默认的目 录结构都是以/ ,即是以根(root)开始的。而在使用 chroot 之后,系统的目录结构 将以指定的位置作为/位置。因此带来了以下 3 点好处: 增加了系统的安全性,限制了用户的权力。使用 chroot 之后,新根下将访问不 到旧系统的根目录结构和文件,这样就增强了系统的安全性。一般是在登录前 使用 chroot,以此达到用户不能访问一些特定文件的目标。 建立一个与原系统隔离的系统目录结构,方便用户开发。使用 chroot 后,系统 读取的是新根下的目录和文件, 这是一个与原系统根下文件不相关的目录结构。 在这个新的环境中,可以测试软件的静态编译以及一些与系统不相关的独立开 发。 切换系统的根目录位置,引导 Linux 系统启动和急救系统等。chroot 的作用就 是切换系统的根位置,而这个作用最明显的应用是系统初始引导磁盘的处理, 北京航空航天大学毕业设计(论文) 第 4 页 从初始 RAM 磁盘(initrd)切换系统的根目录并执行真正的 init。另外,当系 统出现一些问题时,我们也可以使用 chroot 来切换到一个临时的系统。 Chroot 方法实现虚拟机的资源隔离,能够在一定程度上保证系统安全性,即当攻击 者攻击虚拟机的 root 用户,由于预先使用 chroot 为虚拟机修改根目录,所以攻击者无法 进而入侵宿主机和其他虚拟机;但是,由于轻量级虚拟机的资源只是宿主机上的一个目 录,如果攻击者攻击宿主机并获得宿主机的 root 权限,那么攻击者可以读取位于宿主机 上的所有虚拟机资源。由此可见,chroot 方法能够在一定程度上保证系统安全性,但是 还是存在一些漏洞。 1.3.2 多虚拟执行环境间的性能干扰 系统软件层共享内核数据带来的竞争,会导致多个虚拟执行环境的性能干扰。 针对这一问题,举出一个具体例子:Linux 文件系统下 VFS 层使用了目录项高速缓 存,其中需要维护一个哈希表和一个“最近最少使用(LRU)目录项的双向链表” 。哈 希表管理了所有存储在目录项缓存中的目录项以加快查找速度; LRU 链中保存的是刚被 使用过且现在没有被使用的目录项,链表中的目录项按照插入的时间排序,最后那个被 使用后释放的目录项对象放在链表首部,所以最近最少使用的目录项对象总是靠近链表 的尾部。系统中每结束创建一个文件后,它的目录项不会立刻从内存中删除,而是保存 在 LRU 链中。但是当一个目录项被添加时,为防止此时有操作修改、删除 LRU 链中的 目录项,需要为 LRU 链加锁。 北京航空航天大学毕业设计(论文) 第 5 页 哈希表 LRU链 VFS OpenOpen( (“/ /devdev/ /mytestmytest”) )openopen( (“/ /devdev/ /yourtestyourtest”) ) 文 件 系 统 轻量级虚拟机 mytestmytestyourtestyourtest mytestmytest yourtestyourtest EXT2EXT3FAT yourtestyourtest mytestmytest 图 1.1 多虚拟机执行环境之间性能干扰实例 如图 1.1,当多个虚拟机都需要大量创建文件时,各个目录项都需要首先加入到哈 希表中,创建完毕后目录项不再被使用,刚刚被创建的目录项将被添加到 LRU 目录项 链中,此时这些目录项只能“排队”等待“加锁-加入-解锁”操作。此时文件系统中的 临界资源是 VFS 中的 LRU 链,由于对它的竞争-等待现象,造成了多虚拟机间性能的干 扰,影响了系统效率。 1.3.3 虚拟执行环境中的安全性威胁 操作系统虚拟化通过划分共享的宿主机文件系统来实现资源隔离,每一个轻量级虚 拟机的存储都是宿主机文件系统目录树下的一个目录,没有特别的安全保护机制,这会 带来严重的系统安全性问题。 北京航空航天大学毕业设计(论文) 第 6 页 一个安全威胁的例子:服务器上启动了虚拟机,此时如果有恶意程序攻击成功服务 器的 root 用户,那么凭借 root 用户的权限,恶意程序可以访问系统的所有目录,即恶意 程序可以访问所有虚拟机的所有资源。这个例子说明如果将虚拟机资源仅仅只是存放在 宿主机文件系统的一个目录下,而不进行加密等保护措施,会有很大的安全威胁。 1.4 研究目标与内容 针对操作系统虚拟化由于多个虚拟执行环境共享同一个操作系统镜像,而带来的性 能和安全上的问题:1.系统软件层共享内核数据带来的竞争,会导致多个虚拟执行环境 的性能干扰; 2.通过增强的 chroot 方法隔离文件系统视图, 不能完全保证数据的安全性。 我们在 Linux 上设计和实现了一种面向轻量级虚拟机的文件系统(PFS) ,该系统通过为 每个虚拟执行环境提供完全隔离的存储,来保证 I/O 的性能隔离以及存储数据的安全。 本文的主要工作体现在如下几个方面: 1. 研究操作系统虚拟化中临界资源竞争-等待现象的成因,设计一种对宿主机文件 系统的分割方法,界定 PFS 的功能范围,完成系统的总体结构设计。 2. 设计和实现了隔离的 POSIX 文件系统的接口(VFS 层接口) ,为每个虚拟执行 环境提供隔离的文件系统操作接口,无需修改传统应用程序。 3. 设计和实现了一个底层文件系统(PExt)管理底层存储,该底层文件系统嵌入 在宿主机文件系统中的一个文件中,为每个虚拟执行环境提供隔离的和安全的数据存储。 同时可以支持对虚拟执行环境产生的数据进行加密存储。 4. 通过实验测试了系统的效果,主要关注性能隔离效果和安全性效果。 1.5 论文的组织结构 本文的主要内容是研究和实现一个面向轻量级虚拟机的文件系统。首先,本文分析 了研究轻量级虚拟机的必要性,结合 Linux 下文件系统结构,分析文件系统共用引发的 问题,明确了文件系统隔离的必要性;其次,对相关理论基础和技术做出详细论述;再 次,明确提出系统总体设计和实现;最后,进行相关的实验和性能分析。 论文组织结构如下: 第一章 绪论 介绍课题的研究背景,明确研究操作系统虚拟化中的文件系统的必要性,阐述目前 操作系统虚拟化中使用的资源隔离技术和所带来的系统性能和安全上的问题,提出本文 北京航空航天大学毕业设计(论文) 第 7 页 的研究目标和主要工作内容。 第二章 相关理论基础及技术 介绍本文工作涉及到的主要相关理论及技术,重点分析 Linux 下文件系统结构(包 括 VFS 综述和 Ext2 文件系统)和 Linux 内核可加载模块技术的相关知识。 第三章 轻量级虚拟机文件系统设计 首先概述系统的分层体系结构。之后明确各层的作用,重点说明 PVFS 层的几个主 要流程设计和 PExt 层对底层磁盘的管理结构设计。 第四章 轻量级虚拟机文件系统实现 首先给出系统的总体实现说明;之后详细介绍了初始化模块的实现;给出了基于第 三章 PVFS 层对系统调用的处理流程, PVFS 层为实现此流程而采用的数据结构; 最后, 基于第三章 PExt 对磁盘数据存储格式的设计基础上,PExt 层实现部分介绍了为实现此 结构上的数据操作而采用的几个操作流程。 。 第五章 系统性能分析与实验 完成系统的设计和实现后,针对系统功能和性能进行测试实验并给出评价。功能测 试方面, 主要是否可以拦截系统调用以及文件系统提供的各基本接口是否可以正常运行; 性能方面,主要对是否加载此模块对比进行测试和分析。最后,对目前已完成的轻量级 文件系统存在的问题进行讨论,并对下一步的工作进行展望。 北京航空航天大学毕业设计(论文) 第 8 页 2 相关技术现状 本文主要通过设计并实现一个面向轻量级虚拟机的文件系统,解决操作系统虚拟化 中由于内核共用而导致的虚拟机间性能干扰问题和安全性问题。本章将分别针对与本系 统设计和实现过程相关的技术展开介绍。首先,由于最终要设计一个文件系统,需要理 解文件系统的结构和主要数据结构,给出了 Linux 文件系统的整体设计,对我们关注的 VFS 层和 Ext2 文件系统做出了具体介绍;之后,为了避免将代码编进内核,我们希望 将 PFS 做成 Linux 的一个可加载模块,因此对 Linux 的可加载模块技术做了介绍。 2.1 Linux 文件系统综述 本文介绍的轻量级虚拟机文件系统实现为一个 Linux 的完整文件系统,提供与现有 Linux 文件系统相同的接口, 无需修改传统应用程序。 如图 2.1 为 Linux 文件系统分层结 构图。 Linux 文 件 系 统 系统调用系统调用 页高速缓存页高速缓存 块层块层 I I/ /O O调度层调度层 EXTEXT2 2 系统调用系统调用 FATFAT 轻量级虚拟机轻量级虚拟机 虚拟文件系统虚拟文件系统 图 2.1 Linux 文件系统分层结构 Linux 文件系统包括虚拟文件系统、实际文件系统层(Ext2、FAT 等文件系统) 、页 高速缓存层等几个层次,因为一个轻量级虚拟机文件系统的所有数据都存放于其对应的 北京航空航天大学毕业设计(论文) 第 9 页 一个底层文件系统的大文件中,所以不需要设计页高速缓存层、块层等,只需设计 VFS 层和实际文件系统层两个层次,Ext2 是 GNU/Linux 系统中标准的文件系统,所以在介 绍 VFS 层之后介绍 Ext2 文件系统。 2.1.1 Linux 虚拟文件系统(VFS) Linux VFS(Virtual File System,虚拟文件系统)是一个内核的软件层,为不同的文 件系统提供了一个通用的接口,是程序与文件系统之间的一个虚拟的抽象层。可以把不 同的文件的系统联系起来,让用户在不同的文件系统上进行操作,感觉就像是在一个文 件系统上一样。 Linux 实现 VFS,主要是引入了一个通用的文件的模型,这个通用的文件模型可以 支持任何的文件系统。要在 Linux 上挂载任何一个文件系统,必须把它们的物理组织结 构转化为 Linux 的通用文件模型。 Linux 对每一个挂载的文件系统特定函数的实现是通过一个指针完成,用一个指针 指向具体要访问的某一个文件系统适当的函数。内核主要是负责给每一个打开的 file 变 量分配一组合适的指针, 然后调用针对某个具体的文件系统的函数 (由 f_op 字段指向, 该字段存放的为存放这些函数的集合结构的地址,f_op 指向 file_operations 文件操作表 结构的指针)文件在内存中是使用一个 file 的数据结构表示,其中的 f_op 字段就指向具 体文件系统函数的指针。 文件对象:文件对象:进程与文件进行交互的有关信息。一个进程对一个文件操作就会打开一 个文件对象,多个进程打开同一个文件就会有多个文件对象。目录项对象:VFS 中的目 录,一旦被读入到内存,就转换为一个 i_dentry 结构的目录项对象。对于进程查找路径 名的每一个目录,都会产生一个目录项对象。比如进程读取/temp/test 时,内核就会建立 /,temp,test 三个目录项对象。temp 为/第二级目录项,test 为第三级目录项。 索引节点对象:索引节点对象:索引节点对象对应于存放文件的控制块,每个索引节点对一个索引 号,唯一的标识一个文件系统的文件。 超级块对象:超级块对象:对于基于磁盘的文件系统对应着磁盘上的文件系统控制块(通用文件 系统包含磁盘文件系统,网络文件系统,特殊文件系统)其中文件对象,目录项对象由 于只存在于内存中,在磁盘上都不存在映像,所以他们不存在“脏”字段,用来检测是 否被修改。 北京航空航天大学毕业设计(论文) 第 10 页 2.1.2 Ext2 文件系统 Ext2(Second Extended File system) ,即第二扩展文件系统,是 Linux 内核所用的文 件系统。Ext2 是数多个 LINUX 发行版的默认文件系统,如 Debian、Red Hat Linux 等。 Ext2 是 GNU/Linux 系统中标准的文件系统,其特点为存取文件的性能极好,对于中小 型的文件更显示出优势, 且与 VFS 层的数据结构相似, 易于封装, 所以 PFS 采用类 Ext2 的存储方式管理磁盘数据,下面就具体介绍 Ext2 文件系统的相关知识。 Ext2 文件系统将硬盘划分为一个个的块(Block) ,一个 Ext2 文件系统上的每个块 都是一样大小的,但是对于不同的 Ext2 文件系统,块的大小可以有区别。典型的块大 小是 1024B 或者 4096B。这个大小在创建 Ext2 文件系统的时候被决定,它可以由系统 管理员制定,也可以由文件系统的创建程序根据硬盘分区的大小,自动选择一个较合理 的值。每个文件所占有的块的数目总是整数,例如,块的大小为 1024 B,一个文件的大 小为 1025B,则此文件占有 2 个块。 在 Ext2 系统中,所有元数据结构的大小均基于“块” ,而不是“扇区” ,一定数量 的块又组成一个块组(Block Group) ,每个块组的起始部分都具有相同的数据,作为其 他块组的备份。 Ext2 文件系统中并不是所有的块都用来存放数据, 有一些块需要用来存放描述文件 系统结构的信息,Ext2 实现的文件系统拓扑结构中,用一个 Inode 的数据结构来描述文 件系统中的一个文件或目录的索引节点。 一个 Inode 描述了这个文件占用了哪些数据块、 文件的权限、文件的修改时间和文件的类型等等。Ext2 文件系统中的每个文件都由一个 Inode 来描述,每个 Inode 拥有一个唯一的号码。文件系统的所有 Inode 都放在一起形成 了 Inode_table(逻辑上是连续的,物理位置上可以是间断开的) 。目录是特殊的文件, 它的内容的每一项(即目录项)拥有固定的格式,描述了每个目录项的相关信息。 2.2 Linux 可加载内核模块技术 本文介绍的轻量级虚拟机文件系统将作为可加载内核模块加载入内核,而不是将其 内核代码编译进内核代码中。这样处理灵活性更强,对于使用者部署系统也将十分方便 和便捷,只需要先将模块加载入内核,就可以使用了,十分快速,省去了重新编译内核 的麻烦。 Linux 可加载内核模块 (从内核的 1.2 版本开始引入) 是 Linux 内核的最重要创新之 北京航空航天大学毕业设计(论文) 第 11 页 一。它们提供了可伸缩的、动态的内核。探索隐藏在可加载模块后面的原理,并了解这 些独立的对象如何动态地转换成 Linux 内核的一部分。 Linux 就是通常所说的单内核(monolithic kernel),即操作系统的大部分功能都被 称为内核,并在特权模式下运行。它与微型内核不同,后者只把基本的功能(进程间通 信 IPC、 调度、 基本的输入/输出 I/O 和内存管理) 当作内核运行, 而把其他功能 (驱 动程序、网络堆栈和文件系统)排除在特权空间之外。因此,你可能认为 Linux 是一个 完全静态的内核,但事实恰恰相反。通过 Linux 内核模块(LKM)可以在运行时动态地 更改 Linux。 可动态更改是指可以将新的功能加载到内核、从内核去除某个功能,甚至添加使用 其他 LKM 的新 LKM。LKM 的优点是可以最小化内核的内存占用,只加载需要的元素 (这是嵌入式系统的重要特性)。 LKM 与直接编译到内核或典型程序的元素有根本区别。典型的程序有一个 main 函 数,其中 LKM 包含 entry 和 exit 函数(在 2.6 版本,可以任意命名这些函数)。当向内 核插入模块时,调用 entry 函数,从内核删除模块时则调用 exit 函数。因为 entry 和 exit 函数是用户定义的,所以存在 module_init 和 module_exit 宏,用于定义这些函数属于哪 种函数。LKM 还包含一组必要的宏和一组可选的宏,用于定义模块的许可证、模块的 作者、模块的描述等等。2.6 版本的 Linux 内核提供了一个新的更简单的方法,用于构 建 LKM 构建 LKM 时,可以使用典型的用户工具管理模块(尽管内部已经改变):标 准 insmod(安装 LKM),rmmod(删除 LKM),modprobe(insmod 和 rmmod 的包装 器),depmod(用于创建模块依赖项),以及 modinfo(用于为模块宏查找值)。 在用户空间中,insmod(插入模块)启动模块加载过程。insmod 命令定义需要加载 的模块,并调用 init_module 用户空间系统调用,开始加载过程。2.6 版本内核的 insmod 命令经过修改后变得非常简单(70 行代码),可以在内核中执行更多工作。insmod 并 不进行所有必要的符号解析(处理 kerneld),它只是通过 init_module 函数将模块二进 制文件复制到内核,然后由内核完成剩余的任务。init_module 函数通过系统调用层,进 入内核到达内核函数 sys_init_module。这是加载模块的主要函数,它利用许多其他函数 完成困难的工作。类似地,rmmod 命令会使 delete_module 执行 system call 调用,而 delete_module 最终会进入内核,并调用 sys_delete_module 将模块从内核删除。 北京航空航天大学毕业设计(论文) 第 12 页 2.3 本章小结 本章分别针对与本系统设计和实现过程相关的技术展开介绍。第一节给出了 Linux 文件系统的整体设计,对我们关注的 VFS 层和 Ext2 文件系统做出了具体介绍;第二节 对 Linux 的可加载模块技术做了介绍,本文实现的是内核系统软件,而将它编译进内核 既麻烦又费时,采用模块技术加载到内核中则是比较灵活的实现方式。 北京航空航天大学毕业设计(论文) 第 13 页 3 轻量级虚拟机文件系统设计 3.1 本章概要 针对操作系统虚拟化由于多个虚拟执行环境共享同一个操作系统镜像而带来的性 能和安全上的问题:1.系统软件层共享内核数据带来的竞争,会导致多个虚拟执行环境 的性能干扰; 2.通过增强的 chroot 方法隔离文件系统视图, 不能完全保证数据的安全性。 我们在 Linux 上设计和实现了一种面向轻量级虚拟机的文件系统,该系统通过为每个虚 拟执行环境提供完全隔离的存储,来保证 I/O 的性能隔离以及存储数据的安全。 主要设计工作包括:研究操作系统虚拟化中临界资源竞争-等待现象的成因,设计 一种对宿主机文件系统的分割方法,界定 PFS 的功能范围,完成系统的总体结构设计; 设计和实现了隔离的 POSIX 文件系统的接口(VFS 层接口) , 为每个虚拟执行环境提供 隔离的文件系统操作接口,无需修改传统应用程序。这部分注重 PVFS 对缓存的存储设 计;设计和实现了一个底层文件系统(PExt)管理底层存储,该底层文件系统嵌入在宿 主机文件系统中的一个文件中,为每个虚拟执行环境提供隔离的和安全的数据存储。同 时可以支持对虚拟执行环境产生的数据进行加密存储。 3.2 系统结构设计 对总体结构的需求为: 对于应用进程而言,为每个虚拟执行环境提供隔离的文件系统操作接口,我们 拦截所有对文件系统的系统调用,转而调用轻量级文件系统系统调用,无需修 改传统应用程序。 在存储上,为每个虚拟执行环境提供完全隔离的存储,来保证 I/O 的性能隔离 以及存储数据的安全。 根据上述确定的轻量级虚拟机文件系统需求,给出总体结构图,如图 3.1。 北京航空航天大学毕业设计(论文) 第 14 页 PFSPFSPFSPFS 系统调用系统调用系统调用系统调用 LinuxLinux 文件系统文件系统 轻量级虚拟机 图 3.1 PFS 与上下层交互图 这一体系结构的优势在于: 性能上,隔离了轻量级虚拟机运行环境,避免了虚拟机之间的性能干扰。用一个例 子来说明这种结构的优势:4 台虚拟机,每一台要创建 25 个文件,如果直接调用 Linux 文件系统,那么需要在 Linux 下 VFS 的 LRU 链表中创建 100 项,即有 100 个 目录项排队等待加入 LRU 链表; 而如果调用改进后的文件系统接口, 那么需要在每 一个虚拟机的 LRU 链表中创建 25 个目录项,在 Linux 文件系统中只需要打开两个 文件即可。我们关注的是由于共用内核而导致多轻量级虚拟机之间的性能干扰,这 种方法采用的是“分而治之”的思想,分散 Linux 内 VFS 的压力,从而提高系统性 能。 存储上,每一个 PFS 最终以一个文件的方式存储在下层宿主机的文件系统中,它的 存储范围就是与它相对应的文件, 通过读写这个文件来实现对这个文件系统的读

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论