(计算机软件与理论专业论文)基于半虚拟化xen的非确定性事件记录系统.pdf_第1页
(计算机软件与理论专业论文)基于半虚拟化xen的非确定性事件记录系统.pdf_第2页
(计算机软件与理论专业论文)基于半虚拟化xen的非确定性事件记录系统.pdf_第3页
(计算机软件与理论专业论文)基于半虚拟化xen的非确定性事件记录系统.pdf_第4页
(计算机软件与理论专业论文)基于半虚拟化xen的非确定性事件记录系统.pdf_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

i 华 中 科 技 大 学 硕 士 学 位 论 文 摘 要 记录系统对操作系统的可靠性有极其重要的意义,记录系统通常与回放系统一 起应用到操作系统的调试、故障恢复和还原间谍软件攻击等方面。随着虚拟机技术 的发展,虚拟机提供了更少的硬件访问接口,提供了更可信的计算基础,人们开始 研制基于虚拟机的记录系统。国外已有几个基于虚拟机的记录系统,它们能记录足 够的操作系统信息保障记录日志的安全,然而,仍然存在一些不足:所基于的虚拟 机效率不高、需要修改虚拟机上的客户机操作系统、记录产生的日志量大。 针对以上问题,提出了基于半虚拟化 xen 的非确定性事件记录系统 xls。记录 系统 xls 之所以基于虚拟机 xen,是因为虚拟机 xen在虚拟机中效率最高,并且是 开源项目。记录系统 xls 在虚拟机 xen的 hypervisor 层及特权操作系统的控制域中 获取并记录非确定性事件,因而,不需要修改被记录的操作系统。记录系统 xls 对 xen 源码中的轻量级操作系统 mini- os 进行记录,记录内容包括通过键盘输入到 mini- os 中的按键值和虚拟机 xen 对 mini- os 的时钟更新,由于记录的基准采用性 能计数器值而不是被记录操作系统的不精确时钟,因此,记录的非确定性事件更加 精确。记录系统 xls 采用跨域存储方式将日志存放在特权操作系统的文件系统中, 对不同的非确定性事件分类记录,将不同的非确定性事件记录在不同文件中,例如 将 mini- os 中的按键输入和时钟更新两类非确定性事件分别记录在两个不同的文件 中,从而使记录操作更加模块化,记录内容更加清晰,日志占用空间更小。 基于半虚拟化xen的非确定性事件记录系统xls 实现了对mini- os 中键盘输入 和时钟更新两类非确定性事件的记录。性能测试表明:记录一次按键事件消耗时间 为 12us,带来的性能损耗为 0.06%;记录一次时钟事件消耗时间为 17us,带来的性 能损耗小于 0.001%;日志增长率小于 1.4mb/天。记录的时间损耗及日志增长率远小 于现有的基于虚拟机的记录系统 revirt、execrecorder 和 retrace。 关键词:半虚拟化 xen,记录系统,非确定性事件,性能计数器 ii 华 中 科 技 大 学 硕 士 学 位 论 文 abstract log system is very important for system reliability and system security. log- and- replay system is usually applied to system debugging, system fault recovery, reduction of spyware attacks, and so on. with the development of virtual technology, virtual machine operating system provides fewer hardware interfaces and provides a better trusted computing base, people began to study the log system on the virtual machine. there are several log- and- repay systems on the virtual machine that can log enough information for replay. however, these systems have some flaws: the wmms they chosen have detrimental consequences for performance; some needs to modify the guest os; the log files they provided have too large size. based on the above analysis, this paper presents a new log system on a paravirtual vmm called xen.the paravirtual vmm xen has the best performance in vmms and is a open source project. logging contents are gotten and recorded in the hypervisor and privileged domain. thus, we dont need to modify the logged system. the log system xls logs the non- deterministic events of a lightweight operation system called mini- os. the non- deterministic events including keyboard input and time updated. use the performance counter as the benchmark not the system time to log the precise time when the event happened. the log files are saved beyond the logged domain and organized to different structures with the different events, such as the keyboard input and time updated were saved in the different files. in this way, we could organize the modules and content more clearly, use fewer spaces to store the log files. the log system log the keyboard input and time updated on the lightweight operation system mini- os. in the experiments: logging the keyboard input would cost 12us and bring the overhead 0.06%; logging the time updated would cost 17us and bring the overhead 0.001%; the log file would increase 1.4mb each day. the overhead due to logging and the log file growth rate are far less than revirt, execrecorder and retrace. key words: the paravirtual vmm xen, log- system, non- deterministic events, performance counter 独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研 究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他个人或 集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在 文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 学位论文作者签名: 日期: 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权 保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。 本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检 索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密, 在 年解密后适用本授权书。 不保密。 (请在以上方框内打“” ) 学位论文作者签名: 指导教师签名: 日期: 年 月 日 日期: 年 月 日 本论文属于 1 华 中 科 技 大 学 硕 士 学 位 论 文 1 绪论 本章首先简述虚拟机记录系统的研究背景,接着介绍虚拟机记录系统的意义和 国内外研究现状,然后说明本课题的来源背景、目标以及研究内容,最后介绍文章 的框架结构。 1.1 问题提出 近年来提高计算机系统的安全性已经变成一个急迫和困难的问题。软件系统的 复杂性和快速更新使开发人员难以通过核查和审计代码来彻底消除安全漏洞。即使 是最有序的系统管理员也必须应付常规的计算机入侵。 因为计算机不可避免的要受到攻击,所以攻击事后分析就显得额外重要。攻击事 后分析可以用来理解攻击的行为修补系统漏洞弥补由攻击所带来的损害。大部分计 算机系统都试图通过记录各种事件为分析提供依据。典型的 unix 安装会记录登录 行为、邮件处理、tcp 连接请求、文件系统请求及超级用户命令。windows2000 能记录登录与注销事件、文件访问、程序启动与退出、安全策略改变及重启关机事 件。然而目前操作系统提供的记录器缺少两条重要的原则:可信性和完整性。 目前操作系统提供的记录器缺少可信性是由于他们假设操作系统内核是可信 的,这样当攻击破坏系统时记录将变成无效的。目前操作系统提供的记录器都把记 录内容放在本地文件系统中,这就使得攻击者能通过删除记录文件来隐藏入侵行为。 即把记录文件安全的存放在另外的计算机上或一次性写介质上攻击者也可以伪造记 录内容或是阻止记录内容的生成。当系统被损害后,由于缺少有用的记录内容,很 难估计和恢复攻击时的破坏。也就是说当系统没有被损害时记录器能正常运作而当 系统被入侵后记录器就不能发挥作用了。 恶意入侵者能通过多种方式攻击内核。最常用的方法是窃取内容提供的超级用 户权限。获得超级用户权限的攻击者可以通过写特殊的设备(/dev/mem)来写内存进 而插入动态的可加载内核模块或覆盖启动区及硬盘上的系统镜像来改变内核。即使 管理员把这些功能关闭,攻击者也能通过内核漏洞来进行攻击。内核的庞大使很多 漏洞包含在其中。实际上在 linux和 openbsd中至少发现 100 多处漏洞1。 目前操作系统提供的记录器也缺少完整性,因为他们没有记录足够的信息来重 2 华 中 科 技 大 学 硕 士 学 位 论 文 现或理解所有的攻击。记录器只保存少数系统事件类型,可这些事件并不能够准确 的展现入侵是怎样发生的及入侵造成了什么损坏。管理员只能自己猜测发生了什么, 这将是很痛苦并且不可靠。这会使得攻击事后分析报告充满模糊词语。 虚拟机的出现提供了一个更值得信赖的计算基础2,3,虚拟机提供了与物理设备 相同或相似的接口(cpu,内存,硬盘,网卡,鼠标,键盘)及比常规操作系统更 少的接口(进程,虚拟内存,文件系统,sockets,图形界面) 。虚拟机的窄接口限制 了入侵者的行为。同时由于虚拟机提供的抽象层更加简单,虚拟机的代码比常规操 作系统代码更少,在核查虚拟机时也就更容易。虚拟机的窄接口、少代码使得记录 系统更容易更高效。 1.2 国内外研究现状 记录系统通常与回放系统一起应用到操作系统的调试4,5、故障恢复6和还原间 谍软件攻击7等方面。目前已有很多系统,如美国加利福尼亚大学研制的 bugnet8 系统、 美国伊利诺伊大学开发的 flashback9系统、 美国 uiuc 大学开发的 iwatcher 10 系统、 美国uiuc 大学开发的 accmon/accmon- s11系统、 美国密西根大学的ttvm12 系统。这些都是只对单个应用程序进行记录与回放。 由于虚拟技术的成熟,虚拟机的发展为系统安全提供了一个美好的前景。许多 科研人员将记录结合回放同虚拟技术有机的结合起来。目前最著名的系统有 revirt13、execrecorder14及 retrace15。 revirt 是美国密歇根大学开发的 covirt 项目中的一部分。这个系统最初的设计 目的是为了通过记录虚拟机行为并结合回放技术来实现入侵检测。 revirt 系统采用了 半虚拟化 umlinux/uml16,17虚拟机。 user- mode linux(uml)用户模式 linux,采用半虚拟化技术,允许 linux 操 作系统在其他操作系统的用户空间中运行。每个客户 linux 操作系统都存在于宿主 linux 操作系统中的一个进程中。这就允许 linux 内核(使用自己的相关用户空间) 在单个 linux 内核中运行。图 1.1 为半虚拟化 umlinux的体系结构。 revirt 采用检查点结合记录来实现记录回放的目的。revirt 对宿主机内核的进行 了更改。 在启动 umlinux时, 必须先对其虚拟硬盘进行拷贝以作为回放时的检查点。 回放只能从系统启动状态开始。记录内容是通过类似 linux的 syslogd 守护进程的方 式来添加保存到硬盘上。客户机消耗宿主机内核里的内存空间,同时宿主机上的用 3 华 中 科 技 大 学 硕 士 学 位 论 文 户层程序 rlogd 将宿主内核里的内存信息写入到宿主机上的文件系统中。 应用 apps linux客户 机 linux(uml- enabled) 硬件 hardware . 应用 apps linux客户 机 图 1.1 半虚拟化 umlinux 的体系结构 revirt 记录了异步虚拟中断。当宿主机向客户机发送 sigallrm或是 sigio 信 号时,revirt 都会将这事件记录下来。为了唯一的标识事件发生时机,revirt 使用了 性能计数器的分支指令数来作为事件记录的基准。 revirt 将上次中断发生到这次中断 之间的指令分支数写入到日志中。为了记录异步虚拟中断,revirt 记录了从外部来的 所有输入,键盘、鼠标、网卡、时钟。umlinux 客户机是通过调用宿主机的系统调 用 recv、read 及 gettimeofday来读外部输入,因此 revirt 记录了宿主机中所有的能产 生非确定性结果的所有系统调用。 在回放时,revirt 禁止产生新的异步虚拟中断以防打断对虚拟机的回放。revirt 通过硬件计数器及写入的系统调用来重现异步虚拟中断。 基于半虚拟化 umlinux上的 revirt 系统不足在于: umlinux的客户机时运行在 宿主机的用户空间,导致客户机的运行效率低下;revirt 对客户机进行了更改,在客 户机源码中加入了一些用来记录的代码,这使其在回放时需要额外处理;记录的带 来的负载约为 1%,日志增长量约为 0.2gb/天13;记录只能随客户机启动而启动。 2006 年美国加利福尼亚大学开发了 execrecorder系统,用于入侵分析和系统恢 复,能进行全系统回放。execrecorder 使用的虚拟机是硬件模拟器 bochs 虚拟机, 宿主机的内核采用了 linux 2.6。基于硬件模拟器 bochs 的 execrecorder 记录回放示 意图如图 1.2 所示。 execrecorder 的检查点是由系统状态快照生成。系统在运行时接收的所有信息 都归为非确定性事件。记录回放是依据分段确定状态 18,19,假设认为进程实行时的 4 华 中 科 技 大 学 硕 士 学 位 论 文 所有非确定性事件都是可以辨认的,所有的这些事件被记录并用在进程重现中。用 来重现非确定性事件的所有信息叫作事件的确定性。 图 1.2 基于硬件模拟器 bochs 的 execrecorder 记录回放示意图 bochs20是一个仿真 x86 cpu 的计算机模拟器, 它具有可移植性和可运行在多种 平台上,如 x86、 powerpc、alpha、sparc 和 mips。bochs 的优点是不仅能模拟 处理器, 而且能模拟整台计算机, 包括外设如键盘、鼠标、视屏图像硬件、网卡 等。 bochs 能被配置成一台老的 intel 386 计算机, 或更新的处理器如 486、 pentium、 pentium pro、 64 位处理器。甚至能模拟图形指令如 mmx 和 3dnow,也能够通过 bochs 模拟器在 linux 系统上运行任何 linux 发行版,还有 microsoft windows 95/98/nt/2000,甚至是 bsd操作系统(freebsd、openbsd等)。 execrecorder 中的记录组件记录了在客户机在硬盘上的所有信息。由于 bochs 是硬件模拟器,因此可以很方便的获取指令执行数作为记录基准。 实现 execrecorder 系统时,bochs 对 ia- 32 体系结构在 io 与 cpu 寄存器之间数据传输做出了修改,所 以 execrecorder还需要记录数据是否流向 cpu 寄存器或内存。在处理硬盘事件上, 虽然在硬盘上的事件被归入确定性事件,仍然需要记录硬盘输入指令。这样在回放 log checkpoint bochs 虚拟 机进程 redolog read- only disk bochs 虚拟机 父进程 (挂起) bochs 虚拟机 子进程 redolog 日志 bochs 虚拟机 父进程 (回放) redolog replay 5 华 中 科 技 大 学 硕 士 学 位 论 文 的时候就可以将硬盘请求与硬盘中断的发生时间同步起来。系统没有记录从硬盘上 读出的数据而是记录了输入指令的信息。 系统同时也记录了从io 装载时所返回的值。 基于全虚拟化 bochs 上的 execrecorder 系统不足在于:bochs 是一个硬件模拟 器,给客户机带来极大的负载;在实际实现上需要额外记录非确定性事件输入内容 最终目的地。如有 i/o 输入时需要追踪并记录此数据是输入到内容还是cpu 的寄存 器中。记录带来的负载越为 4%,日志的增长率越为 0.4gb/天14。 retrace是vmware公司开发的一个基于对全虚拟化 vmware确定性回放的记录 收集工具。retrace 的操作分为捕捉和扩展两步。捕获记录了非确定性事件。 vmware 虚拟机21采用了全虚拟化技术。vmware 直接使用了 x86 的保护模式, 使得在一台 x86 电脑上同时运行作多个不同的操作系統,例如像 linux、windows 等,并且在多個操作系统同時运行的情況下,各操作系统完全是独立运行的,不会 互相影响。 vmware 在 guest os 与 host os 之间加了一层虚拟操作平台(vmware virtual platform) ,所有的 guest os 都运行在虚拟操作平台之上,使得 vmware 支援同時运 行多个 guest os。 vmware 模拟出来的硬件包括: 主板、 内存、 硬盘(ide 和 scsi)、 dvd/cd- rom、 软驱、网卡、声卡、串口、并口和 usb口。vmware 没有模拟显卡。vmware 为每 一种 guest os 提供一个叫做 vmware- tools 的软件包, 来增强 guest os 的显示和鼠标 功能。 vmware 用 host os 的文件来模拟 guest os 的硬盘22。 一个 guest os 的硬盘对 应一个或多个 host os 里的文件。如果往 guest os 里写入 100m 的文件,host os 里虚拟硬盘文件就增大 100m。在 guest os 里删除这 100m 文件,host os 里虚拟硬 盘文件不会减小。下次往 guest os 里写文件的时候,这部分空间可继续利用。 vmware- tools 里还提供 shrink 功能可以立刻释放不用的空间, 减小 host os 里虚拟硬 盘文件的容量。 捕获生成的日志按照执行指令执行顺序进行存储。一些记录存放了非确定性事 件的输入值,另一些则存放了非确定事件的发生时间及非确定性事件的输入值。 在每条指令执行前后,虚拟机的状态都在一个独立的追踪记录文件中进行了探 测与记录。 记录生成文件包含以下内容: 指令指针 ip; 中断及异常; 各寄存器值 eax、 ebx、 ecx、 edx、edi、esi、ebp、esp、eflags;段地址、es、cs、ss、 6 华 中 科 技 大 学 硕 士 学 位 论 文 ds、 fs、gs;控制寄存器 cr0、cr2、cr3、cr4。 基于全虚拟化vmware上的retrace系统不足在于: vmware采用全虚拟化技术, 带来一定的性能损耗;由记录带来的损耗约为 5.09%;日志生成量较大,平均每一千 条指令就有 4.8 字节大小的日志生成21,每天生成的日志量大于 1gb。 1.3 课题背景与研究内容 本课题受国家重点基础研究发展计划(973 计划)项目“计算系统虚拟化基础理 论与方法研究” 项目支持, 属于项目中的子课题 5: 虚拟计算系统安全可信机制研究。 本课题旨在研究虚拟机系统的安全可信相关理论和方法,基于虚拟化技术的物理共 享和虚拟隔离的特征,研究相关的安全可信保障机制和测评模型,实现虚拟机系统 的安全性、可用性、可靠性及可验证性。研究的内容包括虚拟机记录、回放和迁移 机制,分析虚拟机记录回放技术,建立虚拟机的可用性保障机制。要求在安全回放 上能取得突破性基础研究成果,并在应用示范系统中得到应用。 根据课题研究目标和要求,针对目前基于虚拟机记录系统所存在的问题,并研 究了相关的理论,研制了基于半虚拟化 xen 的非确定性事件记录系统 xls。非确定 性事件记录系统 xls,基于目前最高效的虚拟机 xen,使用性能计数器值作为记录 基准,记录了 xen 源码中轻量级操作系统 mini- os 中的非确定性事件,包括按键输 入及系统时钟更新。记录系统 xls,没有对 mini- os 进行修改,将对 mini- os 的记 录日志存放到特权操作系统的文件系统中,同时进行分类存储,节约了硬盘空间。 1.4 文章框架结构 本文内容安排如下。 第 2 章首先对非确定性事件记录系统 xls 进行了简单介绍,阐述了系统设计的 主要思想,分析了记录非确定性事件的内容与基准,说明了系统的体系结构和功能 模块,并对系统的工作机制及处理流程进行了介绍。 第 3 章对非确定性事件记录系统 xls 中键盘记录的主要实现进行介绍,具体对键盘记录 的三个阶段:键盘按键值的获取,性能计数器值的获取及写键盘事件进行了详细说明。 第 4 章对非确定性事件记录系统 xls 中系统时钟记录的主要实现进行介绍,对 系统时钟的记录的三个阶段:系统时钟值的获取、系统时钟值的传输和时钟记录日 志的生成,进行了详细说明。 7 华 中 科 技 大 学 硕 士 学 位 论 文 第 5 章对 xls 进行了测试和分析。介绍了系统的硬件环境和软件环境,从系统 应用的角度对系统的功能进行了测试,并从记录所消耗的时间及日志所占的空间上 分析了系统的性能。 第 6 章总结了所做的工作,并对下一步需解决的问题进行了说明。 最后是致谢和参考文献。 8 华 中 科 技 大 学 硕 士 学 位 论 文 2 非确定性事件记录系统的设计 本章首先对基于半虚拟化 xen非确定性事件记录系统 xls 进行了简单介绍,阐 述了系统设计的主要思想,分析了记录非确定性事件的内容与基准,说明了系统的 体系结构和功能模块,并对系统的工作机制及处理流程进行了介绍。 2.1 系统概述 记录系统 xls 系统使用半虚拟化 xen 虚拟机23,24来记录轻量级操作系统 mini- os。记录系统不需要修改客户机操作系统。系统选用半虚拟化 xen主要是基于 以下几点:1)xen是个功能完整,稳定的管理系统;2)xen半虚拟化性能高效25; 3)xen的可扩展性好,存储方式多,可以用用专门驱动器或者阵列、现有驱动器上 的专用分区,或者安装在主机上的其中一个文件系统上的磁盘镜像文件;4)xen的 吞度量高,存储与网络 i/o 速度快;5)xen是开源项目,得到开源社区的强力支持; 6)xen是目前最热门的虚拟机之一。下文出现的虚拟机 xen都是指采用了半虚拟技 术的虚拟机 xen。作为系统的初步实现,目前记录的对象是 xen 开源代码中附带的 轻量级操作系统 mini- os。mini- os 具有普通操作系统所具有的结构,有进程调度, 时钟更新,中断处理,内存管理,没有文件系统,没有图形界面不支持鼠标但能接 受键盘事件并加以显示,能周期性的打印系统。因此只要能正确的记录 mini- os 的 系统行为就能证明记录系统理论的正确性,框架的合理性及技术的可行性。 记录系统 xls 的主要特点有:1)记录目的明确。对影响系统行为的事件进行 分析归类,只记录非确定性事件26,避免了冗余数据,节省了日志存放空间。2)记 录基准独特。采用指令分支数27进行定位使得记录更加精确,且便于回放28。3)日 志存放安全29。记录的日志内容并没有存放到被记录的操作系统中,这就很好的避 免了当系统被入侵时日志被篡改的可能。4)日志生成采用分类模式30,31。不同事件 记录格式不同避免了集中式记录带来的存储空间浪费。5)记录了协同事件。将协同 事件放在一起记录,提示了事件的相关性并使记录更加明确。 1. 非确定性事件 非确定性事件是指不能由系统之前状态预测,却能引起系统状态的改变。在单 处理器系统中,非确定性事件主要是指硬件中断及输入事件。 9 华 中 科 技 大 学 硕 士 学 位 论 文 虚拟机上的客户机使用 hypercalls32来进行特权操作。这些特权操作包括操作内 存,设置中断向量表中断门,访问调试硬件,转换堆栈指针,转换段寄存器内容等。 虚拟机 xen使用了共享页面来在虚拟机 xen与客户机之间传递特定的信息。客 户机上的系统时间,中断设置等都是直接访问共享内存获得的。虚拟机设置了一个 时间戳计数偏移量(timestamp counter offset)来弥补由于调度给客户机使用时间戳 计数器 tsc 带来的偏差。在共享页面上有一个虚拟 cpu 数组存放了每个虚拟 cpu 的信息。 由于 hypercalls 的结果是确定性的因此不需要记录。 在记录虚拟机 xen上客户机 时,必须记录虚拟中断及客户机可能访问的共享页面,这两者都归入非确定性事件 中。 由于记录系统将协同的事件放在一起分类记录因此对不带有文件系统、不支持 虚拟网卡的 mini- os 而言,非确定性事件记录从来将主要是系统时钟记录及键盘输 入记录。 2. 非确定性事件记录基准 非确定性事件记录的基准是采用的客户机从某时刻到当时时刻所运行的指令分 支数33。记录不采用客户机上的系统时钟,原因有两条:1)记录系统不修改客户机, 处于客户机操作系统之外的。2) 运行在虚拟机之上的客户机系统时钟都是不准确 的,会因为整个虚拟机的负载情况发生抖动。记录的指令分支数是利用 cpu 中的性 能计数器来实现的。记录事件时发生的指令位置使虚拟机能按指令执行顺序进行精 确的回放。 记录系统 xls 结合虚拟机回放34,35,36能在以下几个场合发挥作用。 1. 入侵检测 虚拟机监视器通过对计算机底层硬件进行抽象,无论是操作系统还是应用程序, 都在虚拟机监视器的控制下运行,为完整收集系统在执行过程中发生的事件提供了 极大的便利,通过这些被记录下来的系统事件,就可以对系统状态进行完整回放了。 而且虚拟机所暴露出来的接口相对于操作系统来说更少,更简单,也更安全这是基 于虚拟机实现系统回放特有的优势。 2. 软件调试 建立完善的软件质量保障技术支撑体系, 全面提高软件可靠性, 实现零缺陷 (bug free)软件系统生产,一直是软件工业界和软件工程学术研究机构多年以来锲而不舍 10 华 中 科 技 大 学 硕 士 学 位 论 文 的追求目标。在传统的调试方法中,当程序出现错误的时候,开发人员不得不重新 执行,通过设置断点、检查点等手段来捕捉错误发生的位置。然而,在现实生活中, 很多错误都是在程序运行数天甚至数月的情况下发生的,显然,在这种情况下要重 新执行程序来找到错误发生的位置显然是件费时费力的事情,更有甚者,有些错误 的出现是与其他事件有着密切的依赖关系,即使对程序进行了重新执行,也未必能 使之前发生的错误再现,尤其是在多任务的并发系统中,由于任务之间执行顺序的 不确定性,许多软件故障往往很难重现。回放技术是一个很好的解决方案,但是, 目前对于该技术的研究还主要集中在用户层和操作系层。虽然这两种方法能够简单 应对用户层出现的一些软件故障问题,但是对系统内核的故障以及多线程的问题难 以应对,并且在这些方案中,大都需要对操作系统进行修改,显然有失通用性。而 非确定性事件记录系统与回放系统的结合将很好的解决这些问题。 3. 系统快速迁移 当两台服务器要进行迁移时,传统的虚拟机迁移37,38,或者是通过先拷贝虚拟 机上客户机的系统镜像,通过不断的内存拷贝把内存更改部分进行传输;或者是不 拷贝系统镜像,只拷贝系统内存数据利用文件共享方式,实现迁移。这两种方式中, 都需要把内存数据拷贝过去,而服务器的内存最少都达到 14gb,因此拷贝传输的 量很大。利用非确定性事件记录系统与回放系统则可达到更快迁移的目的,传输客 户机的系统镜像后,并不是不断的拷贝传输内存内容,而是,将被迁移系统在原虚 拟机上在传输镜像文件时生成的记录日志,传到目的虚拟机上,结合回放进行状态 重现,以达到与原系统相同的状态。同拷贝内存的方式相比,这种方法消耗的网络 带宽低,被迁移系统能很快的实现服务接管。 2.2 体系结构与功能模块 非确定性事件记录系统的实现涉及到特权域 dom0(虚拟机上的特权操作系统, 能对虚拟机上其他操作系统进行管理)的用户空间,特权域 dom0 的内核空间及 xen 的 hypervisor 层。同时为了实现记录系统的分类别记录及协同记录,记录系统 xls 的各个功能模块分布在虚拟机xen体系结构的不同部分。 为了对半虚拟化虚拟机xen 及记录系统 xls 有个整体认识, 特别将记录系统 xls 各个功能模块与半虚拟化 xen 的功能模块的关系用图 2.1 表示。 用户从 dom0 的用户空间传达控制命令。控制命令通过设备驱动传到 dom0 的内 11 华 中 科 技 大 学 硕 士 学 位 论 文 核空间再通过调用 hypervisor 将信息传到虚拟机 xen 内部的控制模块中。性能计数 器主要用来得到 domu 即系统中的 mini- os 的运行指令数。xen 中的 buffer 区主要 是用来传输数据块, 使用环形结构, 当缓存区到达一个阀值 xen便向 databufferdriver 发送虚拟中断 virq,通知设备来取数据。dom 之间的设备驱动通过 event- channel 来传送消息,scheduler(调度管理器)发送虚拟时钟中断,所以,在这两模块上加 上拦截接口,便可以获取事件内容。所有的数据都被保存到 dom0 的文件系统中。 图 2.1 记录系统 xls 与半虚拟化 xen 的关系 记录系统 xls 的系统结构如图 2.2 所示。控制程序通过控制传输通道发送命令 到时钟值获取程序、性能计数器处理程序及按键值获取程序。在获取控制命令后, 时钟值由时钟值获取程序通过时钟值传输通道进入写时钟日志程序中,写日志程序 将时钟值写入文件系统中。控制程序通过控制传输通道39对性能计数器处理程序进 行控制。在记录键盘日志时,写键盘日志程序将从计数值传输通道得到的计数值同 按键值获取程序得到的按键值一同写入到文件系统中。 图 2.2 中的传输通道都是由两个部分组成,一部分是内核的驱动程序,另一个部 分是虚拟机内的 hypercall 程序。控制程序、写时钟日志程序、按键值获取程序及写 键盘日记程序都是位于特权操作系统 dom0 的用户空间。 时钟值获取程序与性能计数 12 华 中 科 技 大 学 硕 士 学 位 论 文 器处理程序都位于虚拟机的 hypervisor 层。 控制接口 控制处理 写时钟日志 时钟值传输 通道 时钟值获取 计数值传输 通道 性能计数器 处理 写键盘日志 文件系统输出接口 控制传输通 道 按键处理 user space kernel space xen hypervisor 图 2.2 记录系统 xls 的体系结构 记录系统 xls 有三大功能模块:键盘处理模块、时钟处理模块、及计数器处理 模块。图 2.3 为记录系统 xls 功能模块图。 记录系统xls 按键处理计数处理 按键 拦截 按键 记录 性能 计数 器的 设置 时钟处理 时钟 值获 取 时钟 值记 录 计数 器值 的传 输 图 2.3 记录系统 xls 功能模块图 计数处理包含了性能计数器的设置与寄存器值的传输;按键处理包含了按键值 的截获及按键值的记录;时钟处理包含了时钟值的获取、时钟值的传输及时钟值的 记录。按键处理与技术处理一起用于记录非确定性事件键盘记录。时钟处理与计数 处理一起用于记录非确定性事件时钟记录。轻量级操作系统 mini- os 上的非确定性 13 华 中 科 技 大 学 硕 士 学 位 论 文 事件即为按键输入与时钟更新。记录系统 xls 的三个功能模块实现了对 mini- os 上 非确定性事件的记录。 2.3 工作流程 图 2.4 为性能计数器的处理流程图。性能计数器的处理分为三部分,计数器的初 始化、计数器值的保存及计数器值的恢复,当接收获取计数值的消息时,将计数值 输出。 计数器初始化 计数器正常计数 dom切换? domu为 当前运行? 计数器值恢复运行 载入计数值 计数器暂停运行 保存计数值 计数值 n y y n 初始化消息 获取计数值 消息 输出计数值 图 2.4 性能计数器值的处理流程图 当收到计数器初始化命令时计数器进行初始化并将计数值清零。当虚拟机内部 的调度使得 dom发生切换时,有两种情形:当被记录的 dom被调出,此时计数器停 止计数并将计数值保存到全局变量中。当被记录的 dom 被调入,此时计数器载入计 数值并恢复运行。记录系统 xls 是对 mini- os 进行记录,当 dom0 要读取计数器值 时,是从全局变量种读取计数值。 对键盘处理流程为:首先确定被记录的 domu 上是否有按键输入行为,domu 按 键输入是由 xen 提供的管理工具进行管理的,管理工具位于 dom0 的用户层。如在 被记录的 domu 上有按键行为,进行按键值的获取,同时向控制设备驱动发送消息, 以获取当时的计数器值。控制设备驱动接受消息后通过调用 hypercall 由 dom0 的内 核空间进入虚拟机 xen 内部以获取计数值,在获取计数值后沿原路返回到 dom0 的 用户空间,与按键值一同被写入到日志中。按键处理流程图如图 2.5 所示。 图 2.5 中的 domu 指记录系统 xls 记录的轻量级操作系统 mini- os。是否有按 14 华 中 科 技 大 学 硕 士 学 位 论 文 键记录是在 dom0 的用户空间中进行判断的。当有按键时,需要获得此时性能计数器 的计数值,而性能计数器值是保存在虚拟机内部的 hypervisor 层通过读寄存器生成 的, 键盘输入 domu有 按键? 获取按键值 写键盘日志 文件系统 结束 计数器值 键盘处理 y n 图 2.5 按键处理流程图 为此,需要将获取计数器值的控制命令传递到虚拟机中以读取寄存器值。从虚拟机 内部获得计数值后,通过计数值传递通道将计数值传向用户空间。在获取按键值及 计数值之后,写键盘记录程序会将两者放入数据结构中并保存到文件系统中。 对系统时钟处理流程为:当由命令通知开始进行系统记录时,获取要记录客户 机操作系统的虚拟 cpu 值,在虚拟机对虚拟 cpu 进行调度并更新虚拟 cpu 的系统 时钟时,将更新的时钟值放入在虚拟机 xen 内部分配的 buffer 环形缓存区中,利用 生产者与消费者模型将缓存的数据放入到内核空间再进一步写入文件系统。在数据 传输上,数据是由底层 xen 主动写入的,上层的驱动通过 select 模式进行取数。考 虑到传输的数据量大, 当xen中的buffer缓存区到达阀值时, 虚拟机内部的 hypervisor 层将发送虚拟中断 virq 给数据传输设备。数据传输设备接到中断信息后将分配新 的buffer缓存区来读取虚拟机内部的时钟更新数据。 系统时钟处理流程如图2.6所示。 可根据客户机操作系统名称获取客户机操作系统的 vcpuid。虚拟机内部 hypervisor 层使用 vcpuid 来辨别不同的 vcpu。 在得到 mini- os 的 vcpuid 后, 在 vcpu 15 华 中 科 技 大 学 硕 士 学 位 论 文 时钟更新时,将属于 mini- os 的时钟更新值放入环形缓存区 buffer 中,当缓存区可 用空间到达阀值时,为防止数据丢失,虚拟机发送虚拟物理中断给数据传输设备。 数据传输设备接到虚拟中断后,分配一个存储区来读取虚拟机缓存区的时钟数据。 时钟更新数据由数据传输设备传到用户空间。用户空间的写时钟日志程序将其写入 到文件系统中。 是否是此vpu 时钟更新? 写入环形缓冲区 buffer中 数据传输设备的 中断函数取数据 到达缓存区 阀值? 数据传输设备的 select模式取数据 结束 y ny n vcpu处理 被记录 domu的 vcpuid 文件系统 写时钟日志 记录系统时钟消息 结束 图 2.6 时钟处理流程图 2.4 小结 记录系统 xls 对 xen的源码进行更改加入了新的模块及功能, 对 xen的上层管 理域dom0进行了相应的调整。 记录系统xls记录的系统是轻量级操作系统mini- os。 mini- os 没有文件系统及网卡驱动, 因此 mini- os 上的非确定性事件只有键盘输入和 时钟更新。记录系统 xls 记录了在 mini- os 上的按键输入和时钟更新。 记录系统 xls 的记录目的明确。只记录非确定性事件;记录系统 xls 记录基准 独特。采用指令分支数作为记录基准;记录系统 xls 日志存放安全。记录的日志内 16 华 中 科 技 大 学 硕 士 学 位 论 文 容并没有存放到被记录的操作系统中,而是进行了跨域存储。记录系统 xls 日志生 成采用分类存储。将不同的事件用不同的记录格式存放在不同的文件中。 记录系统 xls 结合回放技术能应用到入侵检测、软件调试及系统迁移等方面。 根据记录的内容进行全系统的回放,可以确定入侵行为何时发生、在哪里发生。进 行软件调试时,在多任务的并发系统中,由于任务之间执行顺序的不确定性,许多 软件故障往往很难重现。借助记录系统 xls 提供的记录内容,结合回放技术,可以 很好的解决这个问题。记录系统 xls 结合回放技术应用在系统迁移中可以比内存拷 贝方式更快的实现迁移。 记录系统 xls 的结构可以分为:获取非确定性事件内容、获取性能计数器值、 控制命令及数据传输通道、生成记录日志。其中获取非确定性事件内容包含了获取 按键值与获取系统更新时钟值。控制命令及传输通道包含了,用于传输命令控制的 传输通道、用于传输计数值的传输通道及用于传输时钟更新的传输通道。生成记录 日志时根据记录的非确定性事件类型的不同写入到不同的文件中。 记录系统 xls 的功能模块主要是计数处理、 按键处理及时钟处理。 针对 mini- os 的非确定性事件,记录系统 xls 设计了对应的功能模块进行记录。在按键处理中, 按键值是从位于特权操作系统 dom0 的管理工具获取。在获取按键值后,进入计数处 理,将计数值传递到 dom0 的用户空间。按键值与计数值一同被写入记录键盘事件的 日志中。在时钟处理中,时钟更新值与性能计数值一同通过时钟数据传输通道传入 dom0 的用户空间中,在 dom0 的用户空间程序将其写入记录时钟事件的日志中。 17 华 中 科 技 大 学 硕 士 学 位 论 文 3 非确定性事件键盘记录 本章论述了非确定性事件记录系统 xls 中键盘记录。非确定性事件键盘记录分 为三个步骤:按键值的处理与截获、硬件计数器的设置与计数值的传输和按键事件 日志的生成。 3.1 虚拟机中按键值的获取 当 domu 的终端有按键行为时,按键值在显示器的显示有个很复杂的数据流动。 这主要是因为 domu 并不直接处理硬件中断, 所有键盘的硬件中断是由 dom0 来处理 的, dom0 判断按键是在 domu 的终端输入, 将按键值传入特定的数据通道通知 domu 进行读取。当 domu 要在显示器上显示按键值时,由于 domu 不能直接操作硬件所 以需要将按键值通过特定的数据通道传到虚拟机 xen 的 hypervisor 层,虚拟机的 hypervisor 层将数据在显示器上打印出来。在进行按键值的获取时只需考虑按键值传 入 domu,因为domu 将数据回传这是 domu 的确定性事件,是由 domu 的输入处理 机制决定的。下面就重点介绍对按键值从 dom0 传到 domu 的截获操作。 3.1.1 虚拟机中按键值的处理 在 domu 按键后按键值在 dom0 有三个步骤进行处理: 首先按键值由键盘驱动将 按键的扫描码转换为按键的系统码即所谓的按键值。然后确定按键值所传送到的字 符终端。 在xen中字符终端有以下几类: /dev/tty 、 /dev/console 、 /dev/ptmx 、 /dev/vc/0。 在字符传递到 domu 即 mini- os 中是通过第 3 类终端设备,/dev/ptmx伪终端。最后 在 xen提供的管理工具中将终端提交上来的按键值进行分配发送。 伪终端40(pseudo terminal)这个名词暗示了与一个应用程序相比,它更加像一 个终端。但事实

温馨提示

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

评论

0/150

提交评论