本发明涉及计算机存储,尤其涉及一种全闪存阵列地址管理方法、装置、电子设备及计算机可读存储介质。
背景技术:
1、全闪存阵列是完全由固态存储介质构成的独立的存储阵列或设备,由于全闪存阵列相比于传统的存储系统而言具有较高的iops(input/outputoperationspersecond,每秒输入/输出数),因而,全闪存阵列在数据存储领域得到了较为广泛的应用。
2、现有的高端全闪存阵列(如emcpowermax)为了追求极致性能,采用大容量dram(dynamicrandomaccessmemory,动态随机存取存储器)作为地址映射表缓存,这导致了高端全闪存阵列的成本极高;而普通全闪存产品为了节约成本只能提供非常少量的内存缓存,未命中的io(input/output,输入/输出)需要先从闪存上获取地址映射,这显著增大了io延迟。
技术实现思路
1、本发明的目的在于提供一种全闪存阵列地址管理方法、装置、电子设备及计算机可读存储介质,以解决现有技术中全闪存阵列的成本和io延迟不能兼顾的技术问题。
2、本发明的技术方案如下,提供一种全闪存阵列地址管理方法,所述方法适用于包括存储器的存储系统,所述方法包括:
3、根据所述存储器建立哈希索引结构,其中,所述哈希索引结构在逻辑上包括目录、段和桶,所述目录和段存在指针指向关系,所述段包括多个连续的桶,所述桶处在一个连续的地址空间内;
4、根据所述哈希索引结构对所述存储器进行剔除操作或查询操作;
5、对所述桶进行加锁,对所述存储器进行删除操作、更新操作或者插入操作。
6、进一步地,根据所述哈希索引结构对所述存储器进行剔除操作,包括:
7、根据预设哈希函数,获取目标桶x、邻居桶x+1、邻居桶x-1、邻居桶x+2以及邻居桶x-2的哈希键所对应的位置;
8、在所述目标桶x和所述邻居桶x+1满,所述邻居桶x+1中存在哈希键为x+1的数据,并且所述邻居桶x+2不为满时,将待迁移数据迁移至所述邻居桶x+2,将待插入数据插入至所述邻居桶x+1中;
9、在所述目标桶x和所述邻居桶x+1满,所述邻居桶x+1中不存在哈希键为x+1的数据或者所述邻居桶x+2为满,所述目标桶x中存在哈希键为x-1的数据,并且所述邻居桶x-2不为满时,则将待迁移数据迁移至所述邻居桶x-1中,将待插入数据插入至所述目标桶x中;
10、在所述目标桶x、所述邻居桶x+1满、所述邻居桶x+2为满并且所述邻居桶x-2为满时,将所述邻居桶x-2中最冷数据移出所述存储器,并将待迁移数据迁移至所述邻居桶x-1中,将待插入数据插入至所述目标桶x中。
11、进一步地,根据所述哈希索引结构对所述存储器进行查询操作,包括:
12、根据预设哈希函数和哈希键获取待查询桶的位置,以数据键值的高位作为指纹,若待查询桶的指纹与预期指纹一致,则比较待查询桶键值与预期桶的键值是否一致,若一致,则更新待查询桶的数据冷热信息,并获取待查询数据的位置。
13、进一步地,在对所述存储器进行插入操作,包括:
14、若在所述存储器中有空余位置并且无重复数据,则在所述存储器中插入待插入的数据,并进行持久化,在所述存储器中写入待插入的数据的相邻位和锁,在所述存储器中对所述待插入的数据的有效位进行持久化。
15、进一步地,在对所述存储器进行更新操作,包括:
16、若待更新数据所在的所述桶存在空位,则在所述空位上插入更新后的数据,将所述待更新数据的有效位设置为无效,将更新后的数据的有效位设置为有效;
17、若待更新数据所在的所述桶不存在空位,则删除待更新数据,并在待更新数据所在位置上插入更新后的数据。
18、进一步地,所述全闪存阵列地址管理方法还包括,在所述存储器崩溃恢复之后,当对所述存储器进行剔除操作时,将目标桶的数据插入至邻居桶中,删除所述目标桶的原数据,当对所述存储器进行删除操作时,删除所述邻居桶中所有哈希键一致的数据,在对所述存储器进行更新操作时,先对重复的哈希键中的一个哈希键对应的数据进行删除,再对所述存储器进行更新操作。
19、进一步地,所述全闪存阵列地址管理方法,对所述存储器进行删除操作、更新操作或者插入操作时,在对所述桶进行加锁之前,还包括:通过线程获取目标桶的锁,若获取成功,通过所述线程获取邻居桶的锁。
20、进一步地,所述全闪存阵列地址管理方法还包括,在对所述存储器进行读操作之前,保存待读取数据的版本号,在对所述存储器进行读操作之后,读取所述待读取数据的版本号,当保存的所述待读取数据的版本号与读取的所述待读取数据的版本号不一致时,重新对所述存储器进行读操作。
21、进一步地,所述全闪存阵列地址管理方法还包括,在对所述存储器进行删除操作时,对所述目标桶的有效位设置原子写,并且所述有效位的大小小于8字节。
22、本发明的另一技术方案如下,提供一种全闪存阵列地址管理装置,包括存储器、哈希索引结构构建模块、第一数据操作模块以及第二数据操作模块;
23、所述哈希索引结构构建模块,根据所述存储器建立哈希索引结构,其中,所述哈希索引结构在逻辑上包括目录、段和桶,所述目录和段存在指针指向关系,所述段包括多个连续的桶,所述桶处在一个连续的地址空间内;
24、所述第一数据操作模块,用于根据所述哈希索引结构对所述存储器进行剔除操作或查询操作;
25、所述第二数据操作模块,用于对所述桶进行加锁,对所述存储器进行删除操作、更新操作或者插入操作。
26、本发明的另一技术方案如下,提供一种电子设备,包括存储器、处理器,所述存储器存储有可被所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述任一项技术方案所述的全闪存阵列地址管理方法方法的步骤。
27、本发明的另一技术方案如下,提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一项技术方案所述的全闪存阵列地址管理方法的步骤。
28、本发明提供的一种全闪存阵列地址管理方法、装置、电子设备及计算机可读存储介质,根据所述存储器建立哈希索引结构,其中,所述哈希索引结构在逻辑上包括目录、段和桶,所述目录和段存在指针指向关系,所述段包括多个连续的桶,所述桶处在一个连续的地址空间内;在对所述存储器进行剔除操作或者查询操作时,根据所述哈希索引结构对所述存储器进行剔除操作或查询操作;在对所述存储器进行删除操作、更新操作或者插入操作时,对所述桶进行加锁,对所述存储器进行删除操作、更新操作或者插入操作;通过上述方式,可以在不过多的增加缓存成本的情况下,降低了io延迟,兼顾了缓存成本和io延迟,有效地解决大容量dram缓存成本高与小容量dram缓存io延迟大两者之间的矛盾。
1.一种全闪存阵列地址管理方法,其特征在于,所述方法适用于包括存储器的存储系统,所述方法包括:
2.根据权利要求1所述的全闪存阵列地址管理方法,其特征在于,根据所述哈希索引结构对所述存储器进行剔除操作,包括:
3.根据权利要求1所述的全闪存阵列地址管理方法,其特征在于,根据所述哈希索引结构对所述存储器进行查询操作,包括:
4.根据权利要求1所述的全闪存阵列地址管理方法,其特征在于,对所述存储器进行插入操作,包括:
5.根据权利要求1所述的全闪存阵列地址管理方法,其特征在于,对所述存储器进行更新操作,包括:
6.根据权利要求5所述的全闪存阵列地址管理方法,其特征在于,还包括,在所述存储器崩溃恢复之后,当对所述存储器进行剔除操作时,将目标桶的数据插入至邻居桶中,删除所述目标桶的原数据,当对所述存储器进行删除操作时,删除所述邻居桶中所有哈希键一致的数据,在对所述存储器进行更新操作时,先对重复的哈希键中的一个哈希键对应的数据进行删除,再对所述存储器进行更新操作。
7.根据权利要求1所述的全闪存阵列地址管理方法,其特征在于,对所述存储器进行删除操作、更新操作或者插入操作时,在对所述桶进行加锁之前,还包括:通过线程获取目标桶的锁,若获取成功,通过所述线程获取邻居桶的锁。
8.根据权利要求1所述的全闪存阵列地址管理方法,其特征在于,还包括,在对所述存储器进行读操作之前,保存待读取数据的版本号,在对所述存储器进行读操作之后,读取所述待读取数据的版本号,当保存的所述待读取数据的版本号与读取的所述待读取数据的版本号不一致时,重新对所述存储器进行读操作。
9.根据权利要求1所述的全闪存阵列地址管理方法,其特征在于,还包括,在对所述存储器进行删除操作时,对所述目标桶的有效位设置原子写,并且所述有效位的大小小于8字节。
10.一种存储系统,其特征在于,包括存储器、哈希索引结构构建模块、第一数据操作模块以及第二数据操作模块;
11.一种电子设备,包括存储器、处理器,所述存储器存储有可被所述处理器执行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至9任一项所述的全闪存阵列地址管理方法的步骤。
12.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至9任一项所述的全闪存阵列地址管理方法的的步骤。
