更全的杂志信息网

双控制器RAID系统中缓存镜像技术研究与实现

更新时间:2009-03-28

0 引 言

双控系统相对于单控系统在控制器层级上增加硬件冗余,使得其能够在整体上提升系统的稳定性和可靠性,满足绝大多数企业对数据安全性、可靠性的需求。相对于单控制器RAID系统而言,双控制器RAID系统实现的难点在于缓存之间数据一致性保证和缓存调度算法的设计[1],而双控制缓存镜像技术一般为商业公司的技术机密不对外公开,如何设计可靠性高、可用性好的双控系统是值得深入研究和探索的。

为了确保两个控制器内(A和B控制器)缓存数据和对端镜像数据一致性,需要在每个控制器中的缓存中分别存储缓存和镜像数据,A中的缓存数据和B中的镜像数据无论是在内容上还是在逻辑结构上都保持一致,同理,A中的镜像数据和B中的缓存数据也在内容和逻辑结构上保持一致。系统在处理写请求时,采用异步IO的方式,通过高速PCIE总线结合非透明桥[2]的方式进行缓存数据的高速传输。当其中一个控制器出现故障时,系统将退化为单控模式,此时控制器缓存中的数据会立刻刷入到RAID磁盘中,防止缓存数据丢失。当故障的控制器修复,系统恢复双控模式后,需要在确保两端缓存数据和镜像数据已经一致后再继续对外提供数据读写服务[3]

现有常用的缓存镜像技术大都是基于linux内核SCSI中间层子系统(SCST),在SCST设备句柄层实现的缓存镜像[4]。这种方法将缓存镜像功能固化在系统程序中,不能根据需求随时开启或者关闭缓存镜像功能,缺乏灵活性。因此,针对此缺陷,本文基于Linux的Device Mapper框架[5]设计实现了基于块设备驱动层的缓存镜像模块,该模块可根据具体需求设定缓存块大小和内存的容量,而且系统实现了模块化设计,可根据需求开启或者关闭缓存镜像功能。经过实验验证,加入缓存镜像模块后,不仅提升了系统的稳定性和可靠性,而且在缓存镜像模式开启后对RAID系统的读写性能有了一定的提升。

1 缓存镜像整体结构

当上层到来的应用命令请求访问磁盘数据时,命令在执行过程中往往会呈现高度的局部性,包括空间局部性和时间局部性[6],为了防止频繁的去磁盘中读取同一区域的数据内容,可以将该数据存在缓存区中以减少系统读取数据的时间。由于缓存容量有限,只能缓存一部分磁盘数据,所以需要采用相应的策略对缓存数据进行管理,传统的LRU置换策略只考虑了数据访问时间的因素,而没有将数据访问的频度考虑在内,因此本文采用改进的LRU置换策略维持缓存数据的热度[7]。磁盘阵列控制器的内存缓存区基于Linux内核中的高速缓存技术实现,利用slab分配器对内存进行高效的管理,采用基树的数据结构对缓存页进行合理的组织,提升了查询缓存的效率[8]

如图1所示,在控制器A和控制器B中申请同样大小的内存,用于存放RAID设备的本地缓存和镜像缓存,缓存数据通过PCIe通道传送到对端的控制器缓存中。本设计基于Linux内核中的Device Mapper框架,在RAID层和逻辑卷层之间做了一个虚拟层,将RAID设备和缓存映射成虚拟块设备,对虚拟块设备的读写都会被重映射到内存缓存中,而内存缓存也会从RAID设备中读取数据或者将数据写回RAID设备。

  

图1 缓存镜像结构

缓存镜像技术的重点在于需要解决写缓存过程中的数据一致性问题,因为写入数据涉及到缓存数据的替换、删除、备份等操作,需要及时将还未写入磁盘的缓存数据进行备份。读缓存操作不会对数据进行更改,读缓存操作未命中时,相应的数据会从磁盘读入缓存然后再向上层返回读取成功的命令。当系统发出写操作时,写命令的数据首先写入控制器缓存,然后将数据放入后台任务队列,然后由后台工作队列通过DMA方式将数据写入对端镜像区域[9]。当缓存区脏数据已满或者达到指定阈值触发系统写回操作,将缓存的数据刷新到磁盘中。本设计通过PCIE总线结合非透明桥进行数据传输,这样可以有效隔离两个控制器内存的地址空间,防止内存访问的地址冲突。在缓存与镜像数据的末尾加入校验码,可以通过检测校验码是否相同来保证数据的完整性和一致性,若缓存数据传输完成时,系统检测到此次传输的数据校验码不一致,则触发数据重发操作[10]。通过对缓存页的有效组织可以缩短系统IO命中与否的查询时间,在第2章我们将详细介绍缓存结构的设计。

2 缓存结构设计

当上层应用来了IO请求时,系统都需要根据IO命令中的磁盘块地址去缓存中查询是否有相应的数据,如果缓存中存在所需的数据,则说明此命令命中缓存,否则,就是不命中,对缓存进行合理的组织设计可以有效的降低系统IO的整体开销。

2.1 缓存页分组设计

(7)此时缓存页组中所有页均为脏,调度程序会直接读写RAID设备,并将缓存页组内离当前时间最久的脏缓存页写回到RAID,在写回过程中,缓存页状态将会被标记为写回,写回操作结束后,缓存页写回状态被清除,并被重新标记为无效状态,然后结束本次调度。

  

图2 缓存页组结构

2.2 缓存页管理

如图3所示,为了更好的对缓存页进行组织管理,在页描述符上存放缓存页的信息。页描述符号是页描述符的唯一标示符,用于页描述符所描述的缓存页分组,缓存页最近访问时间是指缓存页最近一次发生读写操作的时间。

  

图3 页表描述符

为了对缓存页进行有效的管理,将缓存页状态设有无效、有效、读回、写回、脏5种状态,如图4所示。缓存页无效是指该缓存页还没有被使用,可用来存放逻辑块数据;缓存页有效状态是指该缓存页已被用于存放逻辑块数据;缓存页读回状态是指缓存页正在从RAID设备中读回数据;缓存页写回状态是指缓存页正在将数据写回到RAID设备中;缓存页脏状态是指缓存页发生了写操作,如果缓存页的数据和对应的逻辑块数据不一致,该缓存页需要被写回到RAID设备后才能进行淘汰。当需要淘汰缓存页组内的页时,根据缓存页状态和最近访问时间,采用改进的缓存置换算法对缓存页进行管理。

  

图4 缓存页状态

2.3 缓存置换策略优化

主要的测试硬件如下:FT1500A CUP,32 G内存,千兆网卡,希捷2T SATA磁盘,中标麒麟操作系统。

  

图5 过滤器

为了避免数据的持续不命中,在过滤器前加入一个许可窗口,给每个数据项积累热度的机会。对于长期驻留在内存中的数据,采用分段的思想,将缓存分为保护段和试用段,试用段的数据如果后期还有数据命中,则将其加入到保护段。保护段数据满时,则会将热度小的数据降级到试用段,这也可能触发试用段的数据被淘汰,详细设计如图6所示。性能测试表明,结合时间和频度,可以有效提高缓存数据的命中率,实验结果如图7所示。

  

图6 缓存替换策略

  

图7 缓存替换策略命中率对比

3 缓存数据调度流程

为了确保缓存数据同步到对端控制器过程中的缓存数据的一致性,设计简洁合理高效的缓存调度流程是非常有必要的。虚拟文件系统层读写虚拟块设备时,虚拟块设备驱动中的缓存调度程序的主要流程为(如图8所示):

  

图8 缓存数据调度流程

(1)首先根据读取或者写入数据所在的逻辑块地址,定位到逻辑块所处的缓存页组;

(2)然后在该缓存页组中顺序查找该逻辑块对应的缓存页,如果命中缓存页,则转入第(3)步,如果没有命中缓存页,则转入第(4)步;

“暖气病”一般最先发生在肺系:屋子很热,外边很冷的时候,人体因为过度保温容易出现嘴唇干裂、鼻咽干燥、干咳声嘶。干燥温暖的环境无异于给病菌的生长提供了温床,当空气湿度低于40%的时候,感冒病毒和其他能引发感染的细菌繁殖速度会加快,随着空气中的灰尘扩散引发疾病。

测试分为功能测试和性能测试,通过功能测试来验证系统数据的一致性和完整性,性能测试则是通过对比添加缓存镜像功能前后存储系统的IO性能来测试缓存镜像功能对系统性能的提升幅度。

(3)等待命中缓存页从读回或写回状态恢复后,进行缓存页的访问。如果是读时命中缓存页,从直接命中的缓存页读取数据;如果是写时命中缓存页,则将数据写入命中缓存页的同时,将命中缓存页数据发送到对端控制器的镜像缓存页中,之后结束本次调度;

一直以来,进口煤价格比国内煤价格拥有比较优势,根据统计,2017年下半年,国内煤价持续维持高位,海外煤价遭遇进口限制遭遇价格压力,从而导致国内和进口煤价格差在50元---70元区间浮动,此后随着国内煤价快速下跌,价格差缩小,根据2018年3月的统计,国内和进口煤依然存在30元左右的价格差。进口煤的价格优势显现,不仅沿海电厂包括内陆的部分企业都会倾向采购进口煤。

2009年1 月-2017年6月我院肠球菌的临床分布及耐药性分析 …………………………………………… 郑巧伟等(10):1356

(4) 在缓存页组中按照页描述符号依次查找第一个无效缓存页,如果查找成功,则转入第(6)步,如果查找失败,则转入第(5)步;

(5)在缓存页组查找缓存页状态为有效,未被标记为脏,且最近访问时间离当前时间最久的缓存页。如果查找成功,则转入第(6)步,如果失败,则转入第(7)步;

综上所述,本组病例研究表明,导致关节镜微创手术治疗臀肌挛缩症术后30 d内再入院的主要原因是刀口脂肪液化渗出,经过积极预防和治疗,患者均能获得康复。术前准确预测,术中、术后正确处理是预防和减少再次入院的重要措施。

(6)将待读写数据所在的逻辑块从RAID设备中读回上一步中查找到的缓存页中,在读回过程中,缓存页状态将被标记为读回,读回完成后,读回状态会被清除,然后对该缓存页进行读取或者写入操作。如果是写入操作,还需将该缓存页数据发送到对端控制器的镜像缓存页中,之后结束本次调度;

传统的查询读写命中与否,需要对整个缓存区域进行轮询查找,而通过将缓存分组设计可以大大降低查询时间。本文设计的控制器内缓存结构如图2所示,缓存划分为多个相同大小的缓存页组(set),每个set里含有512个缓存页,每个缓存页大小固定为4 K字节,逻辑卷也被划分为4 K 字节为单位的多个逻辑块。逻辑块地址通过哈希函数查找相应的缓存页组,然后再去页组里查询该逻辑块是否已经被缓存过,如果已经存在数据,则命令直接返回,否则,将逻辑块数据写入相应的缓存页中。

4 系统测试及其分析

老巴说着自己也笑了起来,笑完满脸怆然,说:“我这辈子讨了你姆妈真是福。跟她讲好了,我先走的,结果她倒是先跑了。”

2014年,茅台集团提出“大茅台”概念,实施“133”品牌战略布局,即倾力打造1个世界级核心品牌:贵州茅台酒;3个全国性战略品牌:茅台王子酒、茅台迎宾酒、赖茅酒;3个区域性重点品牌:汉酱、仁酒、贵州大曲。

4.1 测试环境

最近最少使用(LRU)缓存置换策略是目前流行最广的,它根据最近频繁命中的缓存页面很大可能在以后也会被频繁使用,对最后被访问的缓存页给予最高优先级,在需要进行缓存替换时,淘汰最近最久没被使用的页。但它存在一定的局限性,因为仅仅考虑了时间的因素,没有考虑数据访问的频度[11]。我们可以添加一个过滤器来对要写入缓存的数据进行比较,如果新来的数据频度频度比要淘汰的数据频度高,则将其加入缓存。过滤器借助布隆过滤器的思想[12],从一维线性表扩展到二维矩阵,采用计数矩阵结合多个哈希函数实现,结构如图5所示。产生一次数据读取时,矩阵中每行对应的计数器值增加一次计数,估算频率时,由于哈希矩阵可能存在数据冲突,最小的那个是冲突最少的,所以取该数据对应行中最小值作为此数据的频率。这种数据结构权衡了空间、效率、以及哈希碰撞产生的错误率[13]

测试软件为:Linux open-iscsi Initiator,iometer-1.1.0-rc。

4.2 测试方法

功能正确性测试主要通过一个控制器失效后另一个控制器能否将保证缓存数据不丢失且能正常对外提供数据服务,采用故障注入的方式对所实现的系统进行测试,见表1。

本文介绍了高速公路路面养护维修技术中纤维的作用,总结了微表处技术的施工工艺和施工质量控制措施,并在实际工程中对其应用效果进行了质量效益分析,发现纤维微表处技术的应用能够有效对原路面的损害进行维修,恢复路面的使用性能。通过经济效益分析,发现聚酯纤维微表处相比于普通微表处增加成本仅有7%,能够以较经济的维修投入,延长路面寿命,具有研究价值。

 

1 缓存镜像数据一致性测试

  

测试方案测试结果控制器A复制文件过程中断电B控制器接管服务,系统降级为单控正常对外提供服务。控制器A重新上线系统由单控模式转为双控模式,系统正常运行。对比源文件和写入磁盘后文件的MD5码源文件和复制写入磁盘后的文件的MD5码相同

性能测试主要通过软件iometer来测试IOPS和带宽。比较不开缓存镜像,只开缓存不带镜像,和开缓存镜像的性能之间的对比,测试结果见表2、表3和表4。

 

2 无缓存时测试数据

  

数据读写方式随机读随机写顺序读顺序写带宽/(KB/S)3649893319086406651992IOPS91247829771601612997

 

3 只开缓存时测试数据

  

数据读写方式随机读随机写顺序读顺序写带宽/(KB/S)4379863982897687962390IOPS109496995721921915596

 

4 开缓存镜像时测试数据

  

数据读写方式随机读随机写顺序读顺序写带宽/(KB/S)4197373816947367559790IOPS1368701244652402419495

4.3 测试结果与分析

在系统测试过程中,发现一个控制器不工作后,另外一个控制器还能继续运行,存储系统很正常工作。分别对比了原始文件和写入磁盘后的文件,通过对比文件的MD5码发现MD5码一致,缓存数据没有丢失,系统一切正常运行。

HXD3C型机车在济南机务段实际应用过程中发现EBV故障主要表现为:085故障、限制开关打开、单闸侧缓失效、列车管自动减压及制动手柄失效等现象。

通过性能测试对比可以看出,只开缓存后系统的IOPS和带宽比不开缓存提升了20%左右,由于数据的时间局限性和空间局限性,开启缓存镜像功能后,由于镜像同步缓存数据到对端有一定的网络开销,相对单独开缓存性能有所降低,但比不开缓存性能提升了15%左右。

5 结束语

本文创新点如下:基于mapper device机制在linux内核设计实现了块设备驱动层的缓存镜像模块;使用改进的LRU置换策略对缓存页组内的页进行淘汰和替换,提高了随机IO读写缓存的命中率;定义缓存页的5种状态,根据缓存页状态和组织结构,设计实现了缓存调度算法和流程,对缓存页进行高效的管理;通过PCIE非透明桥模式异步传输两端控制器之间缓存数据,保证了数据的高速传输;根据功能和性能测试结果可知,达到了设计预期的要求。该设计既保证了双控制器磁盘阵列的可靠性和稳定性,又能一定程度上提升双控制器冗余磁盘阵列的性能(15%)。

参考文献

[1]YAN Liang.Research and implementation of dual-controller RAID system[D].Wuhan:Huazhong University of Science and Technology Wuhan,2012(in Chinese).[严亮.双控制器RAID系统的研究与实现[D].武汉:华中科技大学,2012.]

[2]LI Taotao.The design of High speed storage system based on PCIE[D].Xi’an:Xi’an University of Electronic Science and Technology,2014(in Chinese).[李涛涛.基于PCIE的高速存储系统设计[D].西安:西安电子科技大学,2014.]

[3]Wang W,Yin SQ.A method of solving data consistency of disk array cache[J].Advanced Materials Research,2012,532-533:1172-1176.

[4]CHEN Xuehui.Research of cache mirroring technology in dual controller RAID system[D].Wuhan:Huazhong University of Science and Technology Wuhan,2013(in Chinese).[陈学辉.磁盘阵列双控制器缓存镜像技术研究[D].武汉:华中科技大学,2013.]

[5]Tarasov V,Jain D,Kuenning G,et al.Dmdedup:Device mapper target for data deduplication[C]//Ottawa Linux Symp,2014.

[6]SHI Xiaodong.Research on prefetching and caching technologies of parallel disks system[D].Wuhan:Huazhong University of Science and Technology Wuhan,2012(in Chinese).[史晓东.并行磁盘系统的预取及缓存技术研究[D].武汉:华中科技大学,2012.]

[7]Kavar CC,Parmar SS.Performance analysis of LRU page replacement algorithm with reference to different data structure[J].International Journal of Engineering Research and Application,2013,3(1):2070-2076.

[8]Leis V,Kemper A,Neumann T.The adaptive radix tree:ARTful indexing for main-memory databases[C]//IEEE 29th International Conference on Data Engineering,2013:38-49.

[9]Flajslik M,Rosenblum M.Network interface design for low latency request-response protocols[C]//USENIX Annual Technical Conference,2013:333-346.

[10]Chatterjee P,Narayanan A,Balakrishnan N,et al.Maintaining data consistency in mirrored cluster storage systems using bitmap write-intent logging[P].U.S:Patent 8,595,455,2013.

[11]Khaleel MSA,Osman SEF,Sirour HAN.Proposed ALFUR using intelegent agent comparing with LFU,LRU,SIZE and PCCIA cache replacement techniques[C]//International Conference on Communication,Control,Computing and Electro-nics Engineering,2017:1-6.

[12]Cisse MM,Usunier N,Artieres T,et al.Robust bloom filters for large multilabel classification tasks[C]//Advances in Neural Information Processing Systems,2013:1851-1859.

[13]Liu X,He J,Lang B.Multiple feature kernel hashing for large-scale visual search[J].Pattern Recognition,2014,47(2):748-757.

 
徐晗,姚智慧
《计算机工程与设计》2018年第05期文献

服务严谨可靠 7×14小时在线支持 支持宝特邀商家 不满意退款

本站非杂志社官网,上千家国家级期刊、省级期刊、北大核心、南大核心、专业的职称论文发表网站。
职称论文发表、杂志论文发表、期刊征稿、期刊投稿,论文发表指导正规机构。是您首选最可靠,最快速的期刊论文发表网站。
免责声明:本网站部分资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有
如有不愿意被转载的情况,请通知我们删除已转载的信息 粤ICP备2023046998号