论文摘要
随着社会对信息化依赖程度越来越高,数据丢失往往会造成巨大的损失。数据丢失的原因主要可以分为两类,一类是系统的软硬件故障,另一类则是人为误删除或非法篡改。系统的意外停机会直接导致系统缓存中数据丢失。即便部分缓存采用的是非易失性存储器,也可能因其缓存映射表和状态信息异常失效而依然导致整个缓存不可使用。为了抵抗这种风险需要缓存有可持续性。人为操作失误或篡改则会直接改变当前数据存储状态,为了抵抗这一风险也需要存储系统有在时间轴上向前回滚的能力。首先为解决缓存系统发生意外时数据丢失的问题,设计了一个基于固态盘(SSD)的缓存系统PFC (Persistent Flash Cache)。PFC采用改进的组相联映射地址映射方式,在节省元数据开销的同时,利用局部性原理加快了数据写回硬盘的速度。同时PFC通过将部分存在易失性主存(RAM)中的缓存系统元数据映射到非易失性的固态盘中并实时更新的方式,保证缓存中的数据在经历计划停机或意外停机时都不丢失。其次提出了低开销高可用元数据更新方法LUFUW(Lazy-Update Following an Update-Write)。LUFUW通过借鉴计算机网络技术中TCP协议确认帧是通过数据帧捎回这一策略,使某个元数据条目的更新可以通过同一个元数据块中的其它元数据条目的更新捎带回固态盘缓存的元数据区。从而在只增加少量元数据更新开销的情况下,保证系统重启后,固态盘中绝大部分缓存数据可用。实验结果表明在非正常关机启动时,相对于传统的只有14%缓存数据可用元数据更新方式,新的元数据更新策略使99%以上缓存数据可用。从而使系统重启后缓存的性能是原始Flashcache的两倍。最后设计了一个在时间轴上有向前回滚能力的高效连续数据保护系统ST-CDP (Snapshot in TRAP Continuous Data Protection)。传统的连续数据保护系统为了保存系统中每一次修改,会产生大量的记录数据。ST-CDP通过引入异或运算提高了数据的压缩比,有效的节省存储空间。通过结合传统的快照技术和现有的连续数据保护技术,在记录数据变化的校验链中周期性的插入快照,使系统能确保在发生故障时进行快速、可靠的数据恢复。通过建立如何插入、何时插入快照的数学模型,优化存储空间和恢复时间。基于此数学模型,在Linux内核上设计并实现了此连续数据保护系统。实现表明,ST-CDP和传统的连续数据保护技术在运行时开销相似,但其连续数据保护日志空间非常开销小,接近于即时任意点数据恢复(TRAP)。