本发明属于固态硬盘存储技术领域,更具体地,涉及一种基于SSD RAID阵列的多级缓存及缓存方法。
背景技术:
基于闪存的固态磁盘(Solid State Drives,SSD)以其优异的性能、非异失和低功耗等特点,已经在企业级存储广泛应用。但闪存存在寿命有限的缺陷,当闪存应用到大规模存储系统时存在可靠性问题。利用磁盘阵列(Redundant Arrays of Independent Disks,RAID)技术构建大规模闪存阵列,既可以增大存储系统的容量,提高性能,又能保证可靠性。
但RAID的引入会进一步缩短SSD的寿命。每次数据更新都伴随一次校验更新,频繁的更新会触发SSD中垃圾回收和数据块擦除,而SSD中数据块擦除次数是有限的。
目前针对SSD RAID的延寿方法,要么只缓存数据页,不缓存校验页,因而存在数据丢失的风险;要么使用额外的log(日志)设备缓存数据页和校验页,因而存在映射表丢失的风险,同时使用额外大容量非易失性存储设备,而大容量伴随着更高的出错率。
技术实现要素:
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于SSD RAID阵列的多级缓存及缓存方法,其目的在于构建多级缓存,上层缓存由小容量NVRAM实现,负责压缩数据,并备份压缩数据到DRAM,接着把压缩后的数据及其元数据整合为页存储,然后以条带为单位调度数据到下层缓存;下层缓存从RAID中分出一部分空间实现,负责缓存压缩数据,维护原数据和压缩数据映射表,还原压缩数据到RAID,以及映射表掉电恢复。由此解决现有SSD RAID的延寿技术存在的数据出错率增加的问题。
为实现上述目的,按照本发明的一个方面,提供了一种基于SSD RAID阵列的多级缓存,所述多级缓存包括:
上层缓存,由小容量NVRAM实现,用于负责压缩数据,并备份压缩数据到内存,整合压缩后的数据及其元数据,以条带为单位调度数据到下层缓存;
下层缓存,由子RAID实现,用于负责缓存压缩数据,维护原数据和压缩数据映射表,还原压缩数据到RAID,以及映射表掉电恢复;
映射表,用于记录同一逻辑地址数据在RAID中原始版本位置和多级缓存中最新压缩版本位置;
压缩元数据,用于管理压缩数据的元数据,映射表掉电丢失时,根据压缩元数据重构映射表。
进一步地,所述映射表的一个表项由六元组表示,该六元