随着大规模数据采集和处理技术的飞速发展,高性能计算机系统存储的数据已达到PB量级,即使采用当今最大容量(1TB量级)的磁盘,对于PB级的存储系统仍然需要数千块磁盘。按读写速率和可靠性,可将磁盘分为两类:一类为高性能和高可靠磁盘,如FC和SAS接口的磁盘;第二类为容量最大但读写速率和可靠性都不及FC和SAS接口的磁盘,如SATAⅡ接口的磁盘。如果全部使用FC盘或SAS盘构建存储系统,性能和可靠性均较高,但构建成本也较高(据图1的数据,FC盘的单位容量价格约是SATAⅡ盘的13倍)。因此,需混合使用上述两类磁盘,使构建的存储系统具有较高的性价比。在由混合磁盘构建的存储系统中,降低因SATAⅡ磁盘的可靠性不足对存储系统可靠性的影响是需重点研究和解决的问题。例如一个由2000个SATAⅡ盘组成的存储阵列,按照当前的磁盘年失效率为1.7%~8.6%的可靠性水平考虑,每周都将会有1~2块磁盘因故障需要替换。
本文利用分级存储管理HSM(Hierarchical Storage Management,简称HSM)的思想,提出了海量数据存储的二级存储结构和数据在二级间迁移的方法,以提高PB级存储系统的使用性能。将第一级称为FC-SAS级,由FC和SAS磁盘组成的阵列;第二级称为SATAⅡ级,由SATAⅡ磁盘组成的阵列。我们把数据的重要性和未来一段时间内被访问的概率定义为存储系统中数据的价值,根据数据的价值,把数据存储在相应性能的存储设备上。本数据迁移策略和算法的目的是提高使用第一级盘阵的概率,减少使用第二级盘阵的概率,使用户可在高性能盘阵中进行文件的快速操作,以便大大提高整个系统的性能和可靠性。例如,根据图1的数据,若一个大规模存储系统中10%容量使用FC盘阵,其余90%使用SATAⅡ盘阵,假定90%的访问都可以在FC盘阵中实现的话,那么整个系统会在成本稍有增加的基础上使性能提高约一倍,可靠性也可得到相应的提高。另外,通过减少对SATAⅡ盘阵的访问,可进一步提高系统的可靠性。
图1:Seagate最新产品中三种接口类型磁盘对比
本文中提出的FC-SAS和SATAⅡ两级存储模璎的实现目标是:
(1)对数据价值的准确评价;
(2)实现基于策略的自动迁移;
(3)用户对迁移过程中文件的透明访问。
由第一级向第二级的自上向下迁移通常是要求在系统访问量较少或者停顿的时候进行,因此要求以最快的速度迁移;而由第二级向第一级的自下向上迁移是为了优化系统性能,因此要求在正常并且对系统的影响较小的情况下以适当的速度迁移。
本文利用信息反馈控制机制来实现数据传输速率的设定,以尽量减少迁移对系统的影响,采用多线程技术和文件系统的锁机制来保证在尽量不影响系统性能的基础上,实现数据迁移的高速传输和迁移过程中用户的透明访问。本文将主要研究内容分为以下几部分:
(1)数据迁移策略分析;
(2)FV价值评定算法模型;
(3)数据迁移的过程控制模型。
一、数据迁移策略分析
具体的迁移策略中,传统的迁移策略主要有Cache的数据替换和信息生命周期管理ILM(Information Lifecycle Management,简称ILM)中的数据迁移两种策略。本文所设计的数据迁移策略是在数据由第一级向第二级迁移时采用类似于信息生命周期管理的方法,信息生命周期管理的核心是根据对数据价值的准确判定,分配与其价值相对应的性能合适的存储设备。数据价值的评定方法有基于数据块的和基于文件的,第一种主要应用于DAS、SAN等基于数据块的存储系统。目前的高性能计算中多使用对象存储,通过详细的无数据描述文件的属性,因此完全可以使用基于文件级的数据价值评定方法。传统的数据价值评定所采用的基于数据块的方法,基于文件级的方法所述。但是,以上传统的方法考虑的因素较为简单,而且有的为了便于计算而简化了重要的因素的运用。尽管都考虑了访问时间和频率,但对各个阶时间和频率的莺要性考虑的深度不够,其他的因素如用户数馈、文件关联度、文件大小等没有完全考虑到。
本文所设计的FV数据价值模型综合考虑了各个因素在各个阶段的重要性,以提高模型的精确度。在数据由大容量、中等性能的盘阵向上一级高性能盘阵迁移时,高性能盘阵起到类似于Cache的功能,主要是用于数据的预取。Cache的数据替换策略目前有很多种,如基于时间的LRU、MRU、GDS、LFUDA和LRV等,基于频率的LFU、MFU和GDSF等。但是,每一种策略考虑的具体因素均较少,有的只考虑一种因素。随着数据I/O的多变性,以上算法往往不能达到较高的预取精度。但是,我们所设计的分级存储系统不同于Cache,如果像以上算法那样频繁地为预取而将数据由SA-TAⅡ盘阵向FC-SAS盘阵迁移的话,耗费的资源较多,得不偿失。因此,我们综合考虑了多种相关因素,使数据自下向上迁移后被访问的频度更高。
二、FV价值评定算法模型
与文件价值和活跃度相关的要素的分析是本文的重点之一。对文件价值和活跃度分析的精确度是决定数据迁移策略算法有效性高低的关键,只有准确地将文件的活跃度和重要性排序之后才能把访问频率和重要性均较高的文件存放在FC或SAS的盘阵中,以提高系统整体的可靠性和性能。其次,文件的大小也是选择需要迁移的文件的要素。例如,第一级盘阵的容量较小,如果将许多较大的文件迁移到第一级高性能盘阵中的话,会占用大最的空间,而大量小文件随机读写的问题就得不到很好的解决,且当这些大文件进入I/O队列的话,其后的文件就要等待较长的时间,因此要优先向高性能盘阵中迁移小文件。下面对选择迁移文件所对应的要素、参数设置和提取方法等进行讨论。
2.1 时间
它是文件价值高低的重要判定因素。基于I/O访问的时间局部性特征,一般最新创建的或者最近使用过的文件被访问的概率较大,价值也就较高。而随着被访问过后未使用的时间越长,文件重要性越低,文件被重新访问的概率就越低,就需要逐渐迁移到较低性能的盘阵中,甚至迁移到近线或离线备份设备上。采用的时间参数为T(i),其含意为:若文件X从创建开始的每一次访问或修改时间为t(1),t(2),…,t(n),这些时间点距离当前时间t的时间长度为t-t(1),t-t(2),…,t-t(i),…,t-t(n),设以上时间长度为T(1),T(2),…,T(i),T(n)。文件的访问或修改时间可以通过读取文件的时间属性获得,我们利用文件的命名属性定义一个文件的属性time_length来保存以上时间长度,设置其属性的时间精度比其他时间属性小一个数量级,那么就可以存储多个time_length,存储满了则按照FIFO自动替换最早的时间长度属性值。
2.2 I/O频率
若读写或者更新操作频率高,意味着文件被访问的频率高,因此访问频率越高,价值越大,尤其是靠近当前时间的近期访问频率。我们将访问频率分为若干个时间段,每个时间段长度以十进制增加,重要性呈指数级降低,用e表示。本文提出的这种计算方法可以细化I/O频率对数据价值的贡献,相对于仅计算较短时间内的频率和将历史频率信息统一对待的传统计算方法更精确。文件的读写频率参数分别采用R和W表示。
2.3 文件的用户数量
若一个文件被访问的用户数量越多,文件的价值就越高,因为如果一个文件被多个用户访问,那么它的改变和它的访问性能就会影响更多的用户。例如,一个拥有多个用户的文件改变之后,则对于其他用户而言这就是一个新文件,被这些用户重新访问的概率自然提高,文件重要性当然也就更高。文件X的用户数量用C表示。在文件系统中,客户和服务器都需要被标示,除了客户在申请使用文件系统时临时生成的客户标示符(Clientid)之外,每一个客户都有一个唯一的客户名(Co_ownerid),使用过文件X的客户名数量便是C。
2.4 文件之间的关联度
文件A和B相关联的含意是在一段时间内,对文件A和文件B的访问遵循一定的规律,如每次都是相隔不久之后被访问。如果与一个文件相关联的其他文件数量越多,则被访问的概率就越高,因为一个与其关联的文件被访问,则这个文件也很可能短期内被访问。设置文件X的关联度参数为AC,表示和文件X相关联的文件数量。我们把文件关联定义为:若文件X在任意时刻被访问前后的短时间内(如十分钟),文件Y也会被访问,则认为文件X和文件Y是相关联的。有些文件是注定相关联的,例如如果用户要访问一个文件,必然先访问它的目录文件,但大部分文件间的关联是不明确的。我们通过维持一个文件X的I/O向量表来保存从文件被创建时的前后短时间内被访问的文件旬柄号,在所有的位置置1,若下次文件X被访问的时候,之前保存的文件句柄对应的文件没有在X被访问前后的短时间内被访问,则在相应位置置0。最后对每一个文件句柄对应的所有0和1取异或,得到结果为1的文件句柄所表示的文件为与文件X相关联的文件,而所有1的总和便是文件X的关联度AC。但是,如果文件刚创建不久,被访问的次数很少,用此种方法容易造成没有关联的文件也被认为是有关联的。因此,我们这里设置为如果文件被访问的次数少于或等于3次,则文件的关联度为2。
2.5 对比度
用来测量不同设备的读写性能差距,用参数θ表示。目的是根据设备的读写性能降低第二级盘阵中文件的价值,以防止文件刚迁移到此设备中便很快被迁回,造成抖动。对于性能不同的两个磁盘,它们的读写性能的比率也是不一样的,读对比度和写对比度分别用θ(r)和θ(w)表示。文件的读写速率分别采用FR和FW表示,FR(A)、FR(B)分别表示在A与B两种性能不同的磁盘上持续读数据时的速度,相应的FW(A)、FW(B)分别表示在A与B两种性能不同的磁盘上持续写数据时的速度。数据由设备B向设备A中迁移时,B中文件对于A中文件对比度的计算方法为:
2.6 文件大小:根据前面的分析,小而且热的文件更适合存储在性能高且容量较小的第一级盘阵中。设置文件大小的参数为S,单位为KB。FV文件价值模型:文件X的价值计算模型为:
其中,设定e(m)<260000分,为避免计算过于复杂,本模型将半年之前的访问频率重要性同等对待;W(i)与R(i)表示在e(i)到e(r-1)分钟内文件X的访问频率,W(m)和R(m)。表示距离当前时间e(m-1)分之前的频率。
三、文件迁移过程模型
模型的基本结构如图2所示。
图2:磁盘分级存储模型
迁移过程为:当达到了迁移的条件,创建迁移主线程和迁移文件的任务队列,在迁移过程调度的控制下开始执行迁移。监控模块分为两个子线程,其一监控系统每次I/O操作后迁移队列中相关文件价值排序的变化,并将信息反馈给迁移调度子模块,使其根据价值最新排序决定是否改变任务队列。其二监控系统的工作负荷,进行周期采样并将其反馈给调度子模块来设定迁移速率。图3为迁移过程的结构图。
图3:迁移过程结构图
将数据迁移分为两类,一是从FC-SAS级向SATAⅡ级的迁移过程,它包含三个模块。
3.1 文件监控模块
此模块的功能之一是当高性能盘阵中数据的存储鸷达到整个盘阵的80%的时候开始迁移,首先提取文件系统属性信息,然后计算出所有文件的价值排名,将总大小大于此级盘阵容量的20%的价值最低的文件列入迁移到SATAⅡ盘阵的队列,创建数据迁移主线程。功能之二是创建子线程,以监控文件迁移过程中的价值变化,当迁移队列中或与迁移队列中的文件相关联的文件被访同时,根据反馈的信息重新计算自上次计算以来被访问文件以及与其相关联的文件的价值,以供迁移过程控制模块调用。功能之三是在迁移过程中进行系统运行的周期采样与负荷计算,并将信息反馈给迁移调度子模块,调整迁移速率,减少对系统的影响。
3.2 数据迁移过程控制模块
创建数据迁移线程之后,读取迁移控制参数,并从价值最低的文件开始迁移。若正在迁移时线程被中断,且恰是被迁移的文件X被访问,则立即将文件X移出迁移线程队列。并将其在第二级盘阵中已迁移的副本置为无效,并通过监控子线程将信息反馈给文件监控模块,按照所有文件价值的重新排序添加和删除迁移队列中的文件。如果被访问的文件Y在迁移任务的后续队列中,那么将Y移出迁移队列,信息反馈给文件监控模块,重新计算与Y相关联的文件的并按照所有文件价值的重新排序添加和删除迁移队列中的文件。中断恢复后继续迁移操作,直至第一级盘阵中容量小于60%。具体流程如图4所示。
图4:自上向下迁移过程控制流程
3.3 迁移完成维护模块
在每一文件迁移完成后修改文件系统相关属性信息,将文件重定向到迁移后的位置,置高性能盘阵中相应的文件为无效,并释放文件锁,结束迁移线程,完成此次迁移。
第二类数据迁移是从SATAⅡ盘阵中迁移出数据。这类迁移分两种情况:
3.3.1 直接向高性能盘阵中迁移数据;
3.3.2 由上层缓冲读写盘中数据,然后直接写到高性能盘阵中。
第一种情况就是对文件的预取操作,因为我们在计算数据价值模型中考虑到用于预取的参数,因此当刚SATAⅡ盘阵中部分文件的FV值高于高性能盘阵中FV值最高的60%中的任一文件时,就意味着SATAⅡ盘阵中的文件很可能不久就会被访问,这时便要创建迁移线程,启动迁移。由于文件访问时会申请字节范围锁来规定具体的访问字节,因此在迁移过程中如果队列中的文件遇到突发访问时我们分两种情况来处理,当被访问的文件为正在迁移中的文件X时,根据字节范围锁的信息,在迁移线程所申请的文件锁类型不与访问X的锁类型相冲突的情况下,优先传输锁中指定的字节范围之外的数据。如果被访问的文件在后续任务队列中,那么立刻停止当前文件的迁移,在不影响客户读写数据的情况下,优先迁移被访问文件的字节范围锁之外的数据。图5是第一种情况的流程图。
图5:自下向上预取迁移流程
第二种情况是在高性能盘阵实施预取失败的情况下,系统对SATAⅡ盘阵中文件的访问。首先,要判断系统对文件的操作所申请的锁类型是否与迁移此文件需要申请的文件的锁类型相冲突,当锁的类型不相冲突时,启动迁移线程,通过将系统工作负荷信息反馈给迁移调度子模块。设定迁移速率,在不影响文件操作效果情况下将文件字节范围锁之外的数据迁移到高性能盘阵中,这样对此次文件操作后期所需要的数据的访问可以在高性能盘阵中进行。而当申请的文件锁的类型互相冲突时,不能在访问过程中迁移,在访问完成时直接写回高性能盘阵中,这时可能会产生多副本一致性的问题。目前,处理多副本一致性的方法较多,如ROWA(Read-One/Write-All)、Quorum协议、ROWAA(Read-One/Write-All-Available)等都可以很好地解决这个问题。
四、性能、可靠性及可行性分析
FC磁盘的容量比CPU中的Cache容量大得多,在海量存储系统的密集访问下,性能和稳定性比SATAⅡ磁盘高,而且由于在我们设计的两级模型中数据读写后直接存储在第一级盘阵中,加上相应的预取策略,且数据自下向上迁移时60%的价值最高的数据仍然存储在FC-SAS级中,所以绝大多数的访问都会在第一级中进行。因此,对于用户来说,访问效果接近于在完全的FC-SAS级中访问的效果。系统I/O性能的提高比例可用如下公式表示:
其中,A和B分别表示A、B两种存储设备的性能,此处我们用平均响应时问和持续读写速度分别计算。A表示系统访问的文件存在于设备A中的概率。我们用FC盘阵和SATAⅡ盘阵两级存储设备来分析。根据图1中的数据,FC磁盘和SATAⅡ磁盘的持续传输速度分别为170MB/s和95MB/s,平均延迟分别为2.0ms和5.Oms,所以当A与B表示持续传输速度时,A=170,B=95;当A与B表示平均延迟时,A=1/2,B=1/5。总体性能的提高比例如图6所示。
图6:两级海量磁盘存储系统性能提高比例
可靠性分析,此处为了便于分析,我们假定除I/O访问量和MTBF之外其他影响磁盘可靠性的因素对于两种磁盘都是相同的。我们假设平均每个文件从在磁盘中创建到最后转移备份的周期内被访问m次,系统叮靠性提高可用如下公式表示为:
其中,行为在FC盘阵中访问次数,a和b分别为单个FC盘和SATAⅡ盘的可靠性,此处用MTBF表示,由图1中可得a=160,b=75。当m=10时,可靠性提高比例如图7所示。
图7:两级海量磁盘存储系统可靠性提高比例
五、结束语
数据迁移技术在存储系统的负载均衡、系统扩展等方面,特别是在系统性能优化上,都可以使系统性能得到很大的提高。本文提出了FC-SAS与SATAⅡ两级存储模型,在此基础上分析了数据价值的评定要素,给出了要素在实际情况下的提取方法,提出了文件价值的FV价值评定模型。应用信息反馈控制机制来实现数据迁移中传输速率的设定,以尽量减少对系统I/O的影响,利用多线程技术和文件系统的锁机制来保证在尽量减小影响系统I/O性能的同时,实现高速的数据迁移和迁移过程中用户的透明访问。
CIO之家 www.ciozj.com 公众号:imciow