论文部分内容阅读
随着云计算和大数据时代到来,存储系统的高可靠性和海量数据的高效存储成为存储厂商追逐的目标。鉴于单控存储系统在出现故障时会出现数据丢失、服务中断的问题,双控存储系统已经成为存储系统发展的必然趋势。在双控存储系统中两控制器之间可配置为互备关系,一个控制器出现故障,另外一个控制器会自动接管其服务,保障存储系统对外服务的连续性。如果在存储系统运行时一个控制器发生故障,由于缓存掉电易失性会导致缓存中的数据丢失,故需要通过缓存镜像技术将缓存数据从一个控制器传输到另外一个控制器中作为镜像数据进行备份,以确保缓存数据的完整性,从而增强双控存储系统的可靠性。 缓存镜像技术一般是商业存储公司的技术机密,实现方式各有不同,设计出命中率高,结构灵活,传输快速有序的缓存镜像模块极具挑战。鉴于此,本文在双控存储系统中的块设备驱动层开发实现了缓存镜像模块,具体做了以下工作:为了能够根据实际业务需求对缓存进行灵活管理,基于Linux内核Device Mapper框架,在块设备驱动层制定了缓存读写策略;采用基树结构对缓存块进行组织管理,快速定位缓存页的位置,减少索引的时间;为了提高系统的随机读写性能,对缓存进行分组设计,采用哈希算法结合双向链表的方式实现了LRU缓存块置换算法,在O(1)时间内实现了缓存块的快速插入、删除与定位;为了确保缓存数据快速、有序的在两个控制器之间传输,基于PCIe非透明桥方式实现了数据高效传输,保证了两端缓存数据的一致性。