分类: 服务器与存储
2011-04-18 15:04:09
名称:一个分级存储的信息生命周期管理系统设计与实现
出处:小型微型计算机系统(2009.6 第6期)
作者:付先平, 孙林春, 熊伟伟, 刘志宽, 方 扬, 汪东升
单位:清华大学,大连海事大学,北京邮电大学
简介
THILM 是清华大学自主研发的一个基于分级存储的信息生命周期管理系统架构. THILM 通过对信息的分类和价值评价, 合理地将数据信息存储于整个存储系统中的适当位置, 并在信息从创建到销毁的整个生命周期中提供最优的管理服务.
关键技术数据分级存储管理系统的核心技术是对归档迁移文件的透明访问, 为了实现应用和用户对归档迁移文件的透明访问。
采用技术采用Windows File System Filter Driver 在Windows User Layer以下的文件系统层进行文件操作. Filter Driver是Windows 操作系统核心态的模块, 能够对一个或多个文件系统或文件系统卷上的IO 操作进行监控和修改, 是Windows提供的一个为其他驱动增加额外功能或者修改驱动行为的可选驱动. 因此Filter Driver 可以记录、监控、修改甚至阻止文件系统的操作。
原理对于一个文件IO 操作, 处于用户态的应用程序将文件操作通过IRP ( IO Request Packet) 的形式发到NTFS 文件系统的IO M anager, IO manager 通过IRP 与IO Stack Location 交互. F ile Redirector 通过在N TFS File System 上层添加一层F ilter Driver, 拦截文件系统的IO 操作.
对于一个文件IO 操作, 如果该操作是对一个已经迁移的文件进行的, 则在F ilter D river 中将该操作重定向到归档文件代表的实际的目标文件, 将实际目标文件的IRP传递到下层的文件系统, 文件系统通过IRP 访问响应的文件, 将结果最后返回到IO Manager, 最终返回给应用层程序.
文件系统过滤驱动安装后作为整个Windows文件系统的一部分, 运行在内核态. 如图4所示, 当上层应用程序对文件进行操作时,W indows 操作系统会将文件操作的命令发送到文件系统的IO Manager 来进行处理, 而IO Manager则将文件操作按照IRP包的形式发到文件系统一层层的驱动,只需要将开发的filter driver 至于所有驱动的最上层, 就可以截获所有的文件操作.
文件名及操作类型的获取如图6 所示,Driver #1 即为THILM 需要的filter driver. 在该层截获文件操作后, 需要获得文件名. 获取文件名需要向D river # 1 以下的文件系统层次发送获取文件名的IRP 包. 从下层返回后得到文件名. 此外, 还需要获取上层应用程序操作文件的操作类型.
得到文件的操作类型后, 需要根据操作类型作相应的处理, 同时还需要根据文件名判断该文件是否处于THILM定制重解析在线存储文件目录, 如果非THILM 需要重解析的目录, 则不做处理.
如果该文件处于TH ILM 定制重解析目录中, 则需要读取文件内容. 根据THILM File Redirector 定制的在存根文件中保存的tag, 判断读出的内容是否与该tag 匹配, 如果不匹配说明该文件也非已迁移文件.如果判断文件中的tag 与File Redirector 定制的tag相同, 则说明该文件已经被迁移, 当前操作的文件为存根文件.则将tag 后面保存的已迁移文件真实路径读出, 得到真正源文件的完整路径.使用源文件的路径, File Redirector文件驱动层返回给IO Manager 重新使用源文件路径进行相同的文件IO 操作,从而实现对应用程序透明的文件重定向功能.
策略缓存技术首先需要读取管理员配置的不同策略, 然后根据策略扫描文件系统确定和每一个策略相对应的文件对象. 而这正是进行数据迁移的性能瓶颈所在. 不恰当的执行策略进行归档迁移会过度增加整个服务器的负载, 而扫描完成之后可能发现符合迁移策略需要进行迁移的数据量非常少甚至没有, 在一个包含200, 000 个文件的文件系统中, 每天有修改的文件不到1%. 那么之前所付出的扫描整个文件系统的巨大代价是系统无法承受的.
IBM 在STEPS 架构中提出了Policy Cache的概念. Policy Cache 可以看作为一个三元组的表, 其中包含(1) 策略号(Rule Number) , (2) 策略预期执行时间(Time) , (3) 文件iNode 唯一对应的文件对象号(file object ID). 在该表中的一个三元组(R, T , I) 说明文件对象号对应的文件符合T 时刻按照R 策略进行数据迁移的条件,将作为备选进行迁移.
在THILM 系统中借鉴Policy Cache 的思想, 将(1) 策略号(Rule Number) , (2) 数据分类(Data Type) , (3) 策略执行时间(T ime) , 做成三元组(R,D, T ). 在信息管理层管理员新建管理策略时, 信息管理服务就会新建(R, D, T ) 数据表.TH ILM 的FSM 模块根据TH ILM 所要提供的策略定制功能记录下整个文件系统的文件完整路径名, 数据类型, 数据创建时间, 最后修改时间以及文件访问频率信息记录在Policy Metadata Container (PMC) 中, 如图7 所示. 我们根据(R,D,T ) 从PMC 中查询得到属于该策略的数据分类文件的应用导向和程序导向的元数据, 作为该策略的元数据库, 即相应策略的Policy Cache.
每当新建一个数据迁移策略, STEPS 还是需要在初始化Policy Cache 的时候对整个文件系统进行扫描来建立策略相对应的Policy Cache. 当整个文件系统比较大时这个过程需要很长的时间. THILM Policy Cache 初始化时无需扫描整个文件系统, 而只需要从PMC 中检索出适合该Po licy 的文件信息, 大大缩短了原来初始化每一个Policy Cache 所需要的时间.
经过初始化后, Policy Cache 无需每次都从新建立, 而是利用THILM的FSM 对文件系统进行监控, 更新PMC 的同时更新策略相应的Policy Cache, 保持二者的一致性.
THILM系统文件访问频率的计算方法文件访问频率是文件迁移的重要检索条件, 用户可能根据文件的访问频率, 设定迁移一年或一个月内访问次数比较少的文件, 如可能设定如下的策略: 将一年内访问次数少于10次的文件从一级存储卷迁移到二级存储卷. 但是因为每一天的文件访问次数都在改变, 所以每一天都会有一个不同的访问频率. 如果让系统管理员根据最近任意多天的访问频率定制归档方式, 那么系统就需要记录每一个文件每一天的访问次数, 如果系统文件数目比较庞大, 那么记录每个文件访问次数的开销就会很大, 且影响系统的整体性能.
定义A-n 为从当前日期数起往前的第n 天某文件的访问次数,A0为当天的文件访问次数, 则未加入当天的统计信息时, n 天内该文件访问的总次数S 为
而加入当天的统计信息后, n天内文件访问的总次数S ’为
按照上述的公式, 为了统计一年内的文件访问次数, 原则上需要记录一年内每天的文件访问次数. 这是一个相当大的空间开销. 在实际的THILM 系统中, 采用了一个近似公式来
计算频率值. 我们假设往前n 天的访问量等于该文件过去n 天得均值, 则有
这样, 对于每个文件, 一共只需要记录一个月的访问次数, 三个月的访问次数和一年的访问次数三个访问总量和一个当天的访问量四个值就能够得到相应的文件访问频率值,减少了计算时间和特别是空间上的开销.