G06F3/06 G06F12/02
1.一种将数据写入叠瓦状磁记录SMR硬盘的方法,其特征在于,所述SMR 硬盘包括多个根据磁轨带band虚拟化后得到的chunk,所述方法包括:
接收写数据指令,所述写数据指令包括键、数据和标记,所述键用于标识 所述数据,所述标记为写标记、删除标记或修改标记,所述写标记用于表示将 所述数据写入所述SMR硬盘中,所述删除标记用于表示删除所述SMR硬盘中 具有所述键的数据,所述修改标记用于表示利用所述数据修改具有相同键且已 被写入所述SMR硬盘的数据;
根据数据记录的长度向正在使用的chunk申请空间,所述数据记录包括所 述写数据指令中的所述键、所述数据和所述标记;
将所述数据记录写入申请的所述空间中;
保存所述键、所述标记与所述数据被写入所述正在使用的chunk中的地址。
2.根据权利要求1所述的方法,其特征在于,所述正在使用的chunk中包 含用于存储数据记录的数据区,所述根据数据记录的长度向正在使用的chunk 申请空间,包括:
根据所述数据记录的长度向所述正在使用的chunk中的所述数据区申请空 间。
3.根据权利要求2所述的方法,其特征在于,所述正在使用的chunk中包 含用于存储索引记录的索引区,所述保存所述键、所述标记与所述数据被写入 所述正在使用的chunk中的地址,包括:
将所述键、所述标记与所述数据被写入所述正在使用的chunk中的地址组 成索引记录;
将所述索引记录保存至内存中与正在使用的chunk对应的第一存储区域; 或者,在所述正在使用的chunk中的剩余空间不足以分配写数据指令中需要写 入的数据时,将所述内存中的所述第一存储区域内的所述索引记录存储至所述 正在使用的chunk中的所述索引区。
4.根据权利要求3所述的方法,其特征在于,在所述将所述内存中的所述 第一存储区域内的所述索引记录存储至所述正在使用的chunk中的所述索引区 之后,还包括:
将所述正在使用的chunk的属性修改为已使用,并申请一个未使用的chunk 作为下次写入数据的正在使用的chunk;
将所述第一存储区域内的所述索引记录存储至所述内存中与已使用的 chunk对应的第二存储区域;
清除所述第一存储区域内的所述索引记录。
5.根据权利要求2至4中任一所述的方法,其特征在于,所述方法还包括:
在重启所述硬盘时,根据chunk的属性确定已使用的chunk和正在使用的 chunk;
将所述已使用的chunk中存储的索引记录,写入所述内存中与已使用的 chunk对应的第二存储区域;
根据所述正在使用的chunk中存储的数据记录,重建与所述数据记录对应 的索引记录,并将重建得到的所述索引记录写入所述内存中与正在使用的chunk 对应的第一存储区域。
6.根据权利要求5所述的方法,其特征在于,所述重建得到的所述索引记 录包括:所述数据记录中数据的键、与所述数据对应的标记以及所述数据被写 入所述正在使用的chunk中的地址。
7.一种将数据写入叠瓦状磁记录SMR硬盘的装置,其特征在于,所述SMR 硬盘包括多个根据磁轨带band虚拟化后得到的chunk,所述装置包括:
接收模块,用于接收写数据指令,所述写数据指令包括键、数据和标记, 所述键用于标识所述数据,所述标记为写标记、删除标记或修改标记,所述写 标记用于表示将所述数据写入所述SMR硬盘中,所述删除标记用于表示删除所 述SMR硬盘中具有所述键的数据,所述修改标记用于表示利用所述数据修改具 有相同键且已被写入所述SMR硬盘的数据;
申请模块,用于根据数据记录的长度向正在使用的chunk申请空间,所述 数据记录包括所述写数据指令中的所述键、所述数据和所述标记;
第一写入模块,用于将所述数据记录写入申请的所述空间中;
保存模块,用于保存所述键、所述标记与所述数据被写入所述正在使用的 chunk中的地址。
8.根据权利要求7所述的装置,其特征在于,所述正在使用的chunk中包 含用于存储数据记录的数据区,所述申请模块用于根据所述数据记录的长度向 所述正在使用的chunk中的所述数据区申请空间。
9.根据权利要求8所述的装置,其特征在于,所述正在使用的chunk中包 含用于存储索引记录的索引区,所述保存模块,包括:
组成单元,用于将所述键、所述标记与所述数据被写入所述正在使用的 chunk中的地址组成索引记录;
保存单元,用于将所述索引记录保存至内存中与正在使用的chunk对应的 第一存储区域;或者,在所述正在使用的chunk中的剩余空间不足以分配写数 据指令中需要写入的数据时,将所述内存中的所述第一存储区域内的所述索引 记录存储至所述正在使用的chunk中的所述索引区。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
修改模块,用于将所述正在使用的chunk的属性修改为已使用,并申请一 个未使用的chunk作为下次写入数据的正在使用的chunk;
存储模块,用于将所述第一存储区域内的所述索引记录存储至所述内存中 与已使用的chunk对应的第二存储区域;
清除模块,用于清除所述第一存储区域内的所述索引记录。
11.根据权利要求8至10中任一所述的装置,其特征在于,所述装置还包 括:
确定模块,用于在重启所述硬盘时,根据chunk的属性确定已使用的chunk 和正在使用的chunk;
第二写入模块,用于将所述已使用的chunk中存储的索引记录,写入所述 内存中与已使用的chunk对应的第二存储区域;
重建模块,用于根据所述正在使用的chunk中存储的数据记录,重建与所 述数据记录对应的索引记录,并将重建得到的所述索引记录写入所述内存中与 正在使用的chunk对应的第一存储区域。
12.根据权利要求11所述的装置,其特征在于,所述重建得到的所述索引 记录包括:所述数据记录中数据的键、与所述数据对应的标记以及所述数据被 写入所述正在使用的chunk中的地址。
本发明涉及计算机技术领域,特别涉及一种将数据写入叠瓦状磁记录SMR 硬盘的方法及装置。
SMR(Shingled Magnetic Record,叠瓦状磁记录)技术可以通过对现有硬盘 磁道进行部分重叠覆盖来减小磁道宽度,从而提高记录密度。
分布式Key-Value存储系统具有查询速度快、存放数据量大、支持高并发等 优点,非常适合通过主键进行查询。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:由于SMR 硬盘的磁道很窄,在将数据写入某一个磁道中时将会对其相邻一定数量的磁道 中的数据产生写覆盖,从而导致相邻磁道中的数据失效。因此,不能直接将 Key-Value存储系统布局方案移植到SMR硬盘上,导致SMR硬盘的写入性能较 低。
为了解决不能直接将Key-Value存储系统布局方案移植到SMR硬盘上的问 题,本发明实施例提供了一种将数据写入叠瓦状磁记录SMR硬盘的方法及装置。 所述技术方案如下:
第一方面,提供了一种将数据写入叠瓦状磁记录SMR硬盘的方法,所述 SMR硬盘包括多个根据磁轨带band虚拟化后得到的chunk,所述方法包括:
接收写数据指令,所述写数据指令包括键、数据和标记,所述键用于标识 所述数据,所述标记为写标记、删除标记或修改标记,所述写标记用于表示将 所述数据写入所述SMR硬盘中,所述删除标记用于表示删除所述SMR硬盘中 具有所述键的数据,所述修改标记用于表示利用所述数据修改具有相同键且已 被写入所述SMR硬盘的数据;
根据数据记录的长度向正在使用的chunk申请空间,所述数据记录包括所 述写数据指令中的所述键、所述数据和所述标记;
将所述数据记录写入申请的所述空间中;
保存所述键、所述标记与所述数据被写入所述正在使用的chunk中的地址。
在第一方面的第一种可能的实施方式中,所述正在使用的chunk中包含用 于存储数据记录的数据区,所述根据数据记录的长度向正在使用的chunk申请 空间,包括:
根据所述数据记录的长度向所述正在使用的chunk中的所述数据区申请空 间。
结合第一方面或者第一方面的第一种可能的实施方式,在第二种可能的实 施方式中,所述正在使用的chunk中包含用于存储索引记录的索引区,所述保 存所述键、所述标记与所述数据被写入所述正在使用的chunk中的地址,包括:
将所述键、所述标记与所述数据被写入所述正在使用的chunk中的地址组 成索引记录;
将所述索引记录保存至内存中与正在使用的chunk对应的第一存储区域; 或者,在所述正在使用的chunk中的剩余空间不足以分配写数据指令中需要写 入的数据时,将所述内存中的所述第一存储区域内的所述索引记录存储至所述 正在使用的chunk中的所述索引区。
结合第一方面、第一方面的第一种可能的实施方式或者第一方面的第二种 可能的实施方式,在第三种可能的实施方式中,所述将所述内存中的所述第一 存储区域内的所述索引记录存储至所述正在使用的chunk中的所述索引区之后, 还包括:
将所述正在使用的chunk的属性修改为已使用,并申请一个未使用的chunk 作为下次写入数据的正在使用的chunk;
将所述第一存储区域内的所述索引记录存储至所述内存中与已使用的 chunk对应的第二存储区域;
清除所述第一存储区域内的所述索引记录。
结合第一方面、第一方面的第一种可能的实施方式、第一方面的第二种可 能的实施方式或者第一方面的第三种可能的实施方式,在第四种可能的实施方 式中,所述方法还包括:
在重启所述硬盘时,根据chunk的属性确定已使用的chunk和正在使用的 chunk;
将所述已使用的chunk中存储的索引记录,写入所述内存中与已使用的 chunk对应的第二存储区域;
根据所述正在使用的chunk中存储的数据记录,重建与所述数据记录对应 的索引记录,并将重建得到的所述索引记录写入所述内存中与正在使用的chunk 对应的第一存储区域。
结合第一方面、第一方面的第一种可能的实施方式至第一方面的第四种可 能的实施方式中的任一种实施方式,在第五种可能的实施方式中,所述重建得 到的所述索引记录包括:所述数据记录中数据的键、与所述数据对应的标记以 及所述数据被写入所述正在使用的chunk中的地址。
第二方面,提供了一种将数据写入叠瓦状磁记录SMR硬盘的装置,所述 SMR硬盘包括多个根据磁轨带band虚拟化后得到的chunk,所述装置包括:
接收模块,用于接收写数据指令,所述写数据指令包括键、数据和标记, 所述键用于标识所述数据,所述标记为写标记、删除标记或修改标记,所述写 标记用于表示将所述数据写入所述SMR硬盘中,所述删除标记用于表示删除所 述SMR硬盘中具有所述键的数据,所述修改标记用于表示利用所述数据修改具 有相同键且已被写入所述SMR硬盘的数据;
申请模块,用于根据数据记录的长度向正在使用的chunk申请空间,所述 数据记录包括所述写数据指令中的所述键、所述数据和所述标记;
第一写入模块,用于将所述数据记录写入申请的所述空间中;
保存模块,用于保存所述键、所述标记与所述数据被写入所述正在使用的 chunk中的地址。
在第二方面的第一种可能的实施方式中,所述正在使用的chunk中包含用 于存储数据记录的数据区,所述申请模块用于根据所述数据记录的长度向所述 正在使用的chunk中的所述数据区申请空间。
结合第二方面或者第二方面的第一种可能的实施方式,在第二种可能的实 施方式中,所述正在使用的chunk中包含用于存储索引记录的索引区,所述保 存模块,包括:
组成单元,用于将所述键、所述标记与所述数据被写入所述正在使用的 chunk中的地址组成索引记录;
保存单元,用于将所述索引记录保存至内存中与正在使用的chunk对应的 第一存储区域;或者,在所述正在使用的chunk中的剩余空间不足以分配写数 据指令中需要写入的数据时,将所述内存中的所述第一存储区域内的所述索引 记录存储至所述正在使用的chunk中的所述索引区。
结合第二方面、第二方面的第一种可能的实施方式或者第二方面的第二种 可能的实施方式,在第三种可能的实施方式中,所述装置还包括:
修改模块,用于将所述正在使用的chunk的属性修改为已使用,并申请一 个未使用的chunk作为下次写入数据的正在使用的chunk;
存储模块,用于将所述第一存储区域内的所述索引记录存储至所述内存中 与已使用的chunk对应的第二存储区域;
清除模块,用于清除所述第一存储区域内的所述索引记录。
结合第二方面、第二方面的第一种可能的实施方式、第二方面的第二种可 能的实施方式或者第二方面的第三种可能的实施方式,在第四种可能的实施方 式中,所述装置还包括:
确定模块,用于在重启所述硬盘时,根据chunk的属性确定已使用的chunk 和正在使用的chunk;
第二写入模块,用于将所述已使用的chunk中存储的索引记录,写入所述 内存中与已使用的chunk对应的第二存储区域;
重建模块,用于根据所述正在使用的chunk中存储的数据记录,重建与所 述数据记录对应的索引记录,并将重建得到的所述索引记录写入所述内存中与 正在使用的chunk对应的第一存储区域。
结合第二方面、第二方面的第一种可能的实施方式至第二方面的第四种可 能的实施方式中的任一种实施方式,在第五种可能的实施方式中,所述重建得 到的所述索引记录包括:所述数据记录中数据的键、与所述数据对应的标记以 及所述数据被写入所述正在使用的chunk中的地址。
第三方面,提供了一种将数据写入叠瓦状磁记录SMR硬盘的装置,应用于 包含有所述SMR硬盘的设备中,所述SMR硬盘包括多个根据磁轨带band虚拟 化后得到的chunk,所述装置包括:接收机和处理器,其中处理器与接收机耦合;
所述接收机,用于接收写数据指令,所述写数据指令包括键、数据和标记, 所述键用于标识所述数据,所述标记为写标记、删除标记或修改标记,所述写 标记用于表示将所述数据写入所述SMR硬盘中,所述删除标记用于表示删除所 述SMR硬盘中具有所述键的数据,所述修改标记用于表示利用所述数据修改具 有相同键且已被写入所述SMR硬盘的数据;
所述处理器,用于根据数据记录的长度向正在使用的chunk申请空间,所 述数据记录包括所述写数据指令中的所述键、所述数据和所述标记;
所述处理器,还用于将所述数据记录写入申请的所述空间中;
所述处理器,还用于保存所述键、所述标记与所述数据被写入所述正在使 用的chunk中的地址。
在第三方面的第一种可能的实施方式中,所述正在使用的chunk中包含用 于存储数据记录的数据区,所述处理器还用于根据所述数据记录的长度向所述 正在使用的chunk中的所述数据区申请空间。
结合第三方面或者第三方面的第一种可能的实施方式,在第二种可能的实 施方式中,所述正在使用的chunk中包含用于存储索引记录的索引区,所述处 理器,还用于将所述键、所述标记与所述数据被写入所述正在使用的chunk中 的地址组成索引记录;
所述处理器,还用于将所述索引记录保存至内存中与正在使用的chunk对 应的第一存储区域;或者,在所述正在使用的chunk中的剩余空间不足以分配 写数据指令中需要写入的数据时,将所述内存中的所述第一存储区域内的所述 索引记录存储至所述正在使用的chunk中的所述索引区。
结合第三方面、第三方面的第一种可能的实施方式或者第三方面的第二种 可能的实施方式,在第三种可能的实施方式中,所述处理器,还用于将所述正 在使用的chunk的属性修改为已使用,并申请一个未使用的chunk作为下次写入 数据的正在使用的chunk;
所述处理器,还用于将所述第一存储区域内的所述索引记录存储至所述内 存中与已使用的chunk对应的第二存储区域;
所述处理器,还用于清除所述第一存储区域内的所述索引记录。
结合第三方面、第三方面的第一种可能的实施方式、第三方面的第二种可 能的实施方式或者第三方面的第三种可能的实施方式,在第四种可能的实施方 式中,所述处理器,还用于在重启所述硬盘时,根据chunk的属性确定已使用 的chunk和正在使用的chunk;
所述处理器,还用于将所述已使用的chunk中存储的索引记录,写入所述 内存中与已使用的chunk对应的第二存储区域;
所述处理器,还用于根据所述正在使用的chunk中存储的数据记录,重建 与所述数据记录对应的索引记录,并将重建得到的所述索引记录写入所述内存 中与正在使用的chunk对应的第一存储区域。
结合第三方面、第三方面的第一种可能的实施方式至第三方面的第四种可 能的实施方式中的任一种实施方式,在第五种可能的实施方式中,所述重建得 到的所述索引记录包括:所述数据记录中数据的键、与所述数据对应的标记以 及所述数据被写入所述正在使用的chunk中的地址。
本发明实施例提供的技术方案带来的有益效果是:
通过将包含有键、数据和标记的数据记录写入正在使用的chunk中;由于 根据写数据指令生成的数据记录包含有键和数据,因此,解决了不能直接将分 布式存储系统布局方案移植到SMR硬盘上,导致SMR硬盘的写入性能较低的 问题;由于chunk根据band虚拟化得到,在各个chunk之间可以随机写入数据, 因此达到了可以提高在SMR硬盘写入数据的灵活性的效果。
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所 需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明 的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下, 还可以根据这些附图获得其他的附图。
图1是本发明一实施例中提供的SMR硬盘的空间布局示意图;
图2是本发明一实施例中提供的将数据写入叠瓦状磁记录SMR硬盘的方法 流程图;
图3A是本发明另一实施例中提供的将数据写入叠瓦状磁记录SMR硬盘的 方法流程图;
图3B是本发明一实施例中提供的chunk的切换过程的示意图;
图4是本发明一实施例中提供的垃圾清理过程的示意图;
图5是本发明再一实施例中提供的将数据写入叠瓦状磁记录SMR硬盘的方 法流程图;
图6是本发明一实施例中提供的将数据写入叠瓦状磁记录SMR硬盘的装置 的结构方框图;
图7是本发明另一实施例中提供的将数据写入叠瓦状磁记录SMR硬盘的装 置的结构方框图;
图8是本发明一实施例中提供的包含有SMR硬盘的设备的结构方框图;
图9是本发明另一实施例中提供的包含有SMR硬盘的设备的结构方框图。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明 实施方式作进一步地详细描述。
请参考图1,其示出了本发明一实施例中提供的SMR硬盘的空间布局示意 图,该SMR硬盘在逻辑上可以划分为系统元数据区110和记录区120。
系统元数据区110包括至少一个超级记录块130,超级记录块130包括至少 一个超级块140,超级块140用于记录记录区120中各个chunk150的属性和使 用信息。
由于超级块140需要频繁地更新记录区120中各个chunk150的属性和使用 信息,如果固定使用一个超级块140进行记录,可能导致超级块140所在磁盘 空间故障。因此,需要多个超级块140来记录记录区120中各个chunk150的属 性和使用信息。超级块140的大小可以根据记录区120中信息的大小来确定, 超级块140的个数可以根据超级块140能被重复写入的次数来确定,且超级块 140能被重复写入的次数越多,超级块140的个数可以设置得越少。而超级记录 块130的个数则可以根据超级块140的个数以及大小来确定。在实际应用场景 中,超级记录块130中的超级块140的个数,以及超级块140中包含的信息可 以根据实际使用时的情况进行变化。
可选的,超级记录块130中的超级块140还可以包括第一全局变量,该第 一全局变量用于标识各个超级块140的先后使用顺序。举例来讲,可以在每申 请一个超级块140后,将第一全局变量加1后作为申请到的超级块140的第一 全局变量。比如,当前,在申请到超级块140后,查到前一次申请的超级块 140的第一全局变量为100,则将该第一全局变量加1得到新的第一全局变量 101,将该第一全局变量101作为当前超级块140的第一全局变量。需要说明的 是,第一全局变量每次增加的数值也可以是其它值,比如2,3等,只需要保证 在后申请的超级块140的第一全局变量大于在前申请的超级块140的第一全局 变量。
记录区120包括至少一个chunk150,这里的chunk150是根据SMR硬盘中 的磁轨带band虚拟化后得到的。根据chunk150的使用情况,可以将chunk150 分为已使用的chunk、正在使用的chunk和未使用的chunk。记录区120用于存 储数据记录以及与数据记录对应的索引记录。
需要说明的是,记录区120中chunk150的种类可以根据实际使用时的情况 进行变化,可选的,记录区120中还可以包含其它种类的chunk。
可选的,记录区120中的chunk150包括数据区160和索引区170。
数据区160可以用于存储至少一条数据记录,每条数据记录至少包括键、 标记和数据中的前两种或全部。
数据记录中包含的信息种类可以根据数据记录的标记类型来确定。比如, 当数据记录的标记是删除标记时,该删除记录内可以只包括键和标记;当数据 记录的标记类型是写标记或修改标记时,该写入记录或修改记录内可以包括键、 标记和数据。
可选的,数据记录还可以包括其他信息,比如,校验信息、键长度信息和 数据长度信息等,本实施例对数据记录中包含的其他信息不作具体限定。
可选的,数据记录还可以包括第二全局变量,该第二全局变量用于标识各 条数据记录的被写入的先后顺序。举例来讲,在每写一条数据记录时,可以将 前一次写入的数据记录的第二全局变量加1后作为当前写入的数据记录的第二 全局变量。比如,在写入当前的数据记录时,查到前一次写入的数据记录的 第二全局变量为200,则将该第二全局变量加1得到新的第二全局变量201,将 该第二全局变量201作为当前数据记录的第二全局变量。需要说明的是,第二 全局变量每次增加的数值也可以是其它值,比如2,3等,只需要保证在后写入 的数据记录的第二全局变量大于在前写入的数据记录的第二全局变量。
需要说明的是,数据记录中的键、标记和数据的相对位置可以根据实际使 用时的情况进行变化。
索引区170用于存储与数据记录一一对应的索引记录,与数据记录对应的 索引记录至少包括与数据记录中相同的键、标记以及数据记录在SMR硬盘上的 地址。
数据区160中的数据记录与索引区170中的索引记录是一一对应关系,举 例来讲,如图1所示,数据记录1对应索引记录1,数据记录2对应索引记录2。 需要说明的是,图1中数据记录1、数据记录2、索引记录1和索引记录2的相 对位置仅是示意,本实施例对此不作限定。
可选的,索引记录还可以包括与数据记录对应的第二全局变量。且索引记 录中的键、标记以及地址的相对位置可以根据实际使用时的情况进行变化。
需要说明的是,系统元数据区110和记录区120在SMR硬盘上的相对位置 可以根据实际使用时的情况进行变化。
综上所述,本实施例提供的SMR硬盘,通过将SMR硬盘划分成系统元数 据区和记录区,记录区用于存储数据记录以及与数据记录对应的索引记录,系 统元数据区用于记录记录区中各个chunk的属性和使用信息;由于为SMR硬盘 中每条数据记录都建立了索引记录,因此,解决了不能直接将分布式存储系统 布局方案移植到SMR硬盘上,导致SMR硬盘的写入性能较低的问题;由于chunk 根据band虚拟化得到,在各个chunk之间可以随机写入数据,因此达到了可以 提高在SMR硬盘写入数据的灵活性的效果。
请参考图2,其示出了本发明一实施例中提供的将数据写入叠瓦状磁记录 SMR硬盘的方法流程图,该将数据写入叠瓦状磁记录SMR硬盘的方法可以用 于包含有SMR硬盘的设备中,该将数据写入叠瓦状磁记录SMR硬盘的方法, 可以包括:
步骤201,接收写数据指令,写数据指令包括键、数据和标记,键用于标识 数据,标记为写标记、删除标记或修改标记,写标记用于表示将该数据写入SMR 硬盘中,删除标记用于表示删除SMR硬盘中具有该键的数据,修改标记用于表 示利用该数据修改具有相同键且已被写入SMR硬盘的数据;
步骤202,根据数据记录的长度向正在使用的chunk申请空间,数据记录包 括写数据指令中的键、数据和标记;
步骤203,将数据记录写入申请的空间中;
步骤204,保存键、标记与数据被写入正在使用的chunk中的地址。
综上所述,本实施例提供的将数据写入叠瓦状磁记录SMR硬盘的方法,通 过将包含有键、数据和标记的数据记录写入正在使用的chunk中;由于根据写 数据指令生成的数据记录包含有键和数据,因此,解决了不能直接将分布式存 储系统布局方案移植到SMR硬盘上,导致SMR硬盘的写入性能较低的问题; 由于chunk根据band虚拟化得到,在各个chunk之间可以随机写入数据,因此 达到了可以提高在SMR硬盘写入数据的灵活性的效果。
在实际使用时,为了便于读取SMR硬盘中存入的数据,SMR所在的设备 需要对chunk的索引记录进行持久化,具体请参考图3A,其示出了本发明另一 实施例中提供的将数据写入叠瓦状磁记录SMR硬盘的方法流程图,该将数据写 入叠瓦状磁记录SMR硬盘的方法可以用于包含有SMR硬盘的设备中,该将数 据写入叠瓦状磁记录SMR硬盘的方法,可以包括:
步骤301,接收写数据指令;
这里的写数据指令包括键、数据和标记,键用于标识数据,标记为写标记、 删除标记或修改标记,写标记用于表示将该数据写入SMR硬盘中,删除标记用 于表示删除SMR硬盘中具有该键的数据,修改标记用于表示利用该数据修改具 有相同键且已被写入SMR硬盘的数据。
步骤302,根据数据记录的长度向正在使用的chunk中的数据区申请空间;
数据记录包括写数据指令中的键、数据和标记。
可选的,在步骤302之前,通常还可以包括根据写数据指令生成数据记录。
SMR所在的设备在接收到写数据指令后,可以根据该写数据指令按照数据 记录的格式生成一条数据记录。当写数据指令中不包括数据或包含的数据为空 时,数据记录可以只包括键和标记,比如该写数据指令的标记为删除标记时, 该写数据指令通常不包括数据。
SMR所在的设备在接收到写数据指令后,确定该写数据指令的标记类型, 根据该写数据指令的标记类型生成相应的数据记录,具体实现可以参见以下三 种实现方式。
在一种实现方式中,当写数据指令包括的标记为删除标记时,按照数据记 录的格式,将写数据指令中携带的键和标记组合成一条数据记录。
在另一种实现方式中,当写数据指令包括的标记为写标记时,按照数据记 录的格式,将写数据指令中携带的数据、键以及标记组合成一条数据记录。
在还一种实现方式中,当写数据指令包括的标记为修改标记时,按照数据 记录的格式,将写数据指令中携带的数据、键以及标记组合成一条数据记录。
也就是说,当写数据指令包括的标记为删除标记时,根据该写数据指令生 成的数据记录中通常包含键和标记;而当写数据指令包括的标记为写标记或修 改标记时,根据该写数据指令生成的数据记录中通常包含键、标记和数据。
SMR所在的设备可以计算数据记录的长度,并通过SMR硬盘中系统元数 据区内的超级块来获取记录区中各个chunk的属性,根据各个chunk的属性确定 出当前正在使用的chunk,并在内存中查到与该正在使用的chunk中的数据记 录对应的索引记录,根据查到的索引记录中的最后被写入数据的地址以及最 后被写入数据的长度,确定该正在使用的chunk最后被写入的位置。这里确定 的最后被写入的位置是指最后被写入数据的末尾位置。
SMR所在的设备根据生成的数据记录的长度从当前正在使用的chunk中最 后被写入的位置开始分配与生成的数据记录的长度相同的空间。
需要说明的是,当正在使用的chunk中的剩余空间小于生成的数据记录的 长度时,需要申请一个未使用的chunk来进行空间分配。
步骤303,将数据记录写入申请的空间中;
步骤304,将键、标记与数据被写入正在使用的chunk中的地址组成索引记 录;
这里的键和标记与数据记录里的键和标记相同,SMR所在的设备将键、标 记和数据被写入正在使用的chunk中的地址的组合确定为该数据记录的索引记 录。
需要说明的是,本实施例对索引记录中的键、标记和地址的相对位置不作 限定。
步骤305,将索引记录保存至内存中与正在使用的chunk对应的第一存储区 域;
这里的第一存储区域用于临时存储当前正在使用的chunk中写入的各条数 据记录所对应的索引记录,这里的内存可以是SMR所在的设备的系统内存。
在实际使用时,当检测到正在使用的chunk中的空间被分配完毕后,SMR 所在的设备需要对该正在使用的chunk的索引记录进行持久化,并需要申请新 的正在使用的chunk以进行后续的数据写入,对应的,还需要申请新的超级块 以记录相应记录信息,具体流程请参见下述步骤306至309。
步骤306,在正在使用的chunk中的剩余空间不足以分配写数据指令中需要 写入的数据时,将内存中的第一存储区域内的索引记录存储至正在使用的chunk 中的索引区;
当正在使用的chunk的数据区中剩余的空间不足以存储当前接收到的写数 据指令中所对应的数据时,SMR所在的设备则确定该正在使用的chunk的空间 被分配完毕。此时,SMR所在的设备将内存中的第一存储区域内的索引记录存 储至正在使用的chunk中的索引区。
步骤307,将正在使用的chunk的属性修改为已使用,并申请一个未使用的 chunk作为下次写入数据的正在使用的chunk;
SMR所在的设备在检测到正在使用的chunk的空间被分配完毕,并将第一 存储区域中存储的各条索引记录写入到该正在使用的chunk的索引区后,该正 在使用的chunk不再继续被写入数据记录,因此,此时可以将该正在使用的chunk 的属性更改为已使用,进而使得该正在使用的chunk变成已使用的chunk。
同时,SMR所在的设备需要在系统元数据区中申请下一个超级块,并在申 请到的超级块中记录当前记录区中各个chunk的属性和使用信息。
举例来讲,请参见图3B,其是本发明一实施例中提供的chunk的切换过程 的示意图。如图3B所示,SMR所在的设备在检测到正在使用的chunk320的数 据区321被分配完毕后,将与该正在使用的chunk320的数据区321的数据记录 所对应的索引记录从内存中的第一存储区域存储至该正在使用的chunk320的索 引区322中,并将该正在使用的chunk320的属性更改为已使用,进而变成已使 用的chunk330。同时,SMR所在的设备申请一块未使用的chunk340,将该未使 用的chunk340的属性更改为正在使用,进而变成正在使用的chunk350,并在该 正在使用的chunk350的数据区351中开始分配空间。SMR所在的设备在将正在 使用的chunk320和未使用的chunk340的属性更改后,申请一块超级块360,并 在该新申请的超级块360中记录当前记录区中各个chunk的属性和使用信息。
步骤308,将第一存储区域内的索引记录存储至内存中与已使用的chunk对 应的第二存储区域;
这里的第二存储区域用于存储SMR硬盘中所有已使用的chunk中的索引记 录。
为了便于查SMR硬盘中保存的有效数据,SMR所在的设备在将当前的 第一存储区域中存储的各条索引记录写入到正在使用的chunk的索引区后,还 需要将这些索引记录写入到内存中的第二存储区域。
在将第一存储区域中的索引记录写入内存中的第二存储区域时,SMR所在 的设备需要依次从第一存储区域中读取将要被写入第二存储区域的索引记录, 并根据读取到的索引记录中的标记进行相应操作,具体请参见下述三种情况:
第一种情况,当读取的索引记录中的标记为删除标记时,删除第二存储区 域中键与读取的索引记录中的键相同的索引记录,并丢弃读取的索引记录;
第二种情况,当读取的索引记录中的标记为修改标记时,删除第二存储区 域中键与读取的索引记录中的键相同的索引记录,并将读取的索引记录写入第 二存储区域中;
第三种情况,当读取的索引记录中的标记为写标记时,将读取的索引记录 写入第二存储区域中。
需要说明的是,当第一存储区域中的所有索引记录均读取完并保存至第二 存储区域之后,第二存储区域中各个索引记录所对应的数据记录均为有效数据。 此时,SMR所在的设备可以根据各个chunk中未保存到第二存储区域中的索引 记录,确定该chunk中无效数据所占的比例。
步骤309,清除第一存储区域内的索引记录;
SMR所在的设备在将内存中第一存储区域中的索引记录写入内存中的第二 存储区域后,需要清除该第一存储区域内的索引记录,以减少内存的占用率。
也就是说,第一存储区域被申请后通常用于存储当前正在使用的chunk中 生成的索引记录,如果将第一存储区域中记录的索引记录均持久化到该正在使 用的chunk之后,该第一存储区域内的索引记录通常会被清除掉。这样,被申 请的第一存储区域通常对应一个正在使用的chunk。
综上所述,本实施例提供的将数据写入叠瓦状磁记录SMR硬盘的方法,通 过将包含有键、数据和标记的数据记录写入正在使用的chunk中;由于根据写 数据指令生成的数据记录包含有键和数据,因此,解决了不能直接将分布式存 储系统布局方案移植到SMR硬盘上,导致SMR硬盘的写入性能较低的问题; 由于chunk根据band虚拟化得到,在各个chunk之间可以随机写入数据,因此 达到了可以提高在SMR硬盘写入数据的灵活性的效果。
另外,通过将第一存储区域内的索引记录存储至内存中与已使用的chunk 对应的第二存储区域;由于将SMR硬盘中已使用的chunk的索引记录持久化到 内存中,因此,解决了顺序读取SMR硬盘时的读取效率较低的问题;达到了提 高SMR硬盘的读取效率的效果。
在实际使用时,为了保证SMR硬盘的高效使用,SMR所在的设备需要对 SMR硬盘进行垃圾清理。具体请参考下述步骤:
第一,当SMR硬盘的空间使用率达到指定使用阈值时,查第一全局变量 最大的超级块;
需要说明的是,SMR硬盘中的超级块还可以包括第一全局变量,通常来讲, 在后被申请的超级块的第一全局变量大于在前被申请的超级块的第一全局变 量。举例来讲,当SMR所在的设备在系统元数据区中申请下一个超级块时,会 将当前的第一全局变量加1并作为申请得到的超级块第一全局变量。
超级块中的使用信息可以包括每个已使用chunk中无效数据记录的占用比 例,无效数据记录为索引记录未记载在内存的第二存储区域中的数据记录。
需要说明的是,这里的无效数据记录的占用比例的详细获取过程可以参见 图3A对应实施例中的步骤308,这里不再累述。
SMR所在的设备检测当前SMR硬盘的空间使用率,当检测到SMR硬盘的 空间使用率高于指定使用阈值时,在SMR硬盘的系统元数据区内查第一全局 变量最大的超级块。由于在后被申请的超级块的第一全局变量大于在前被申请 的超级块的第一全局变量,因此该第一全局变量最大的超级块中记录了当前 SMR硬盘中的记录区内各个chunk的属性和使用信息。
举例来讲,指定使用阈值为85%,SMR所在的设备检测到当前SMR硬盘 的空间使用率为90%,则此时SMR硬盘的空间使用率高于指定使用阈值。SMR 所在的设备将在SMR硬盘的系统元数据区内查第一全局变量最大的超级块。
可选的,由于该垃圾清理过程可能需要频繁地写入和读出,因此,为了不 影响SMR所在的设备的正常使用,SMR所在的设备可以先检测系统的使用情 况,当检测到系统空闲时,执行该垃圾清理过程。
第二,从查到的超级块中的使用信息中,读取每个已使用的chunk中无 效数据记录的占用比例;
SMR所在的设备可以根据查到的超级块获取每个已使用的chunk的使用 信息,根据每个已使用的chunk的使用信息确定每个已使用的chunk中无效数据 记录的占用比例。
第三,确定出无效数据记录的占用比例达到预定比例阈值的已使用的 chunk,对该已使用的chunk进行垃圾清理。
SMR所在的设备在确定出无效数据记录的占用比例达到预定比例阈值的已 使用的chunk后,确定出已使用的chunk中的索引记录,在内存中的第二存储区 域中查该索引记录,若查到该索引记录,则将该索引记录对应的数据记录 写入当前的正在使用的chunk中,若未查到该索引记录,则对该索引记录对 应的数据记录进行垃圾清理。
举例来讲,请参见图4,其是本发明一实施例中提供的垃圾清理过程的示意 图。如图4所示,SMR所在的设备在确定出已使用的chunk420中的无效数据记 录的占用比例达到预定比例阈值后,将该已使用的chunk420的数据区中的有效 数据记录0、有效数据记录2和有效数据记录4写入正在使用的chunk430的数 据区中,生成与有效数据记录0、有效数据记录2和有效数据记录4对应的索引 记录,并将这些索引记录保存到内存的第一存储区域中。SMR所在的设备在将 已使用的chunk420中有效数据全部写入到正在使用的chunk430后,将该已使用 的chunk420的属性更改为未使用,进而变成未使用的chunk440,并申请一块超 级块450,在该超级块450中记录当前记录区中各个chunk的属性和使用信息。
在实际使用时,当SMR硬盘重启后,为了保证SMR硬盘的正常使用,SMR 所在的设备需要在内存中重建数据,具体请参考图5,其示出了本发明再一实施 例中提供的将数据写入叠瓦状磁记录SMR硬盘的方法流程图,该将数据写入叠 瓦状磁记录SMR硬盘的方法可以用于包含有SMR硬盘的设备中,该将数据写 入叠瓦状磁记录SMR硬盘的方法,可以包括:
步骤501,接收写数据指令;
步骤502,根据数据记录的长度向正在使用的chunk中的数据区申请空间;
步骤503,将数据记录写入申请的空间中;
步骤504,将键、标记与数据被写入正在使用的chunk中的地址组成索引记 录;
步骤505,将索引记录保存至内存中与正在使用的chunk对应的第一存储区 域;
步骤506,在正在使用的chunk中的剩余空间不足以分配写数据指令中需要 写入的数据时,将内存中的第一存储区域内的索引记录存储至正在使用的chunk 中的索引区;
步骤507,将正在使用的chunk的属性修改为已使用,并申请一个未使用的 chunk作为下次写入数据的正在使用的chunk;
步骤508,将第一存储区域内的索引记录存储至内存中与已使用的chunk对 应的第二存储区域;
步骤509,清除第一存储区域内的索引记录;
上述步骤501至509是SMR所在的设备向SMR硬盘内写入数据记录以及 对chunk的索引记录进行持久化的过程,详细描述请参考与图3A对应的实施例, 这里就不再累述。
在实际使用时,当硬盘重启后,为了保证SMR硬盘的正常使用,SMR所 在的设备需要在内存中重建数据,具体流程请参见下述步骤510至512。
步骤510,在重启硬盘时,根据chunk的属性确定已使用的chunk和正在使 用的chunk;
当SMR硬盘重启后,SMR所在的设备可以根据chunk的属性确定已使用 的chunk和正在使用的chunk。
可选的,SMR所在的设备可以从SMR硬盘中系统元数据区内的最新的超 级块中来获取各个chunk的属性,从而确定已使用的chunk和正在使用的chunk。
可选的,超级块还可以包括第一全局变量,在后被申请的超级块的第一全 局变量大于在前被申请的超级块的第一全局变量。举例来讲,当SMR所在的设 备在系统元数据区中申请下一个超级块时,会将当前的第一全局变量加1并作 为申请得到的超级块第一全局变量。SMR所在的设备在检测到硬盘重新启动后, 在SMR硬盘中的系统元数据区内查第一全局变量最大的超级块。该第一全局 变量最大的超级块中记录了当前SMR硬盘中的记录区内各个chunk的属性和使 用信息。SMR所在的设备根据超级块中记录的各个chunk的属性和使用信息确 定已使用的chunk和正在使用的chunk。
步骤511,将已使用的chunk中存储的索引记录,写入内存中与已使用的 chunk对应的第二存储区域;
需要说明的是,索引记录还包括与数据记录唯一对应的第二全局变量,在 后写入的索引记录的第二全局变量大于在前写入的索引记录的第二全局变量。
SMR所在的设备在获取已使用的chunk中的索引记录后,根据各条索引记 录的第二全局变量,将已使用的chunk中的索引记录依次写入内存的第二存储 区域。SMR所在的设备在依次写入索引记录时,提取各条索引记录的标记,并 根据标记的类型执行相应操作,具体可以分为下述三种情况。
第一种情况,SMR所在的设备提取出的索引记录的标记为删除标记时,丢 弃键与提取的索引记录的键相同且第二全局变量小于提取的索引记录的第二全 局变量的索引记录,直到所有键与提取的索引记录的键相同且第二全局变量小 于提取的索引记录的第二全局变量的索引记录均被丢弃后,丢弃提取的索引记 录。
第二种情况,SMR所在的设备提取出的索引记录的标记为修改标记时,丢 弃键与提取的索引记录的键相同且第二全局变量小于提取的索引记录的第二全 局变量的索引记录,直到所有键与提取的索引记录的键相同且第二全局变量小 于提取的索引记录的第二全局变量的索引记录均被丢弃后,将提取的索引记录 写入第二存储区域。
第三种情况,SMR所在的设备提取出的索引记录的标记为写标记时,将提 取的索引记录写入第二存储区域。
步骤512,根据正在使用的chunk中存储的数据记录,重建与该数据记录对 应的索引记录,并将重建得到的索引记录写入内存中与正在使用的chunk对应 的第一存储区域。
重建得到的索引记录可以包括:数据记录中数据的键、与该数据对应的标 记以及数据被写入正在使用的chunk中的地址。
综上所述,本实施例提供的将数据写入叠瓦状磁记录SMR硬盘的方法,通 过将包含有键、数据和标记的数据记录写入正在使用的chunk中;由于根据写 数据指令生成的数据记录包含有键和数据,因此,解决了不能直接将分布式存 储系统布局方案移植到SMR硬盘上,导致SMR硬盘的写入性能较低的问题; 由于chunk根据band虚拟化得到,在各个chunk之间可以随机写入数据,因此 达到了可以提高在SMR硬盘写入数据的灵活性的效果。
另外,通过将已使用的chunk中存储的索引记录写入内存中的第二存储区 域,并将重建得到的索引记录写入内存中的第一存储区域;由于能够在硬盘重 启后及时重建数据,因此,解决了SMR硬盘重启后无法正常工作的问题;到达 了提高SMR硬盘的使用性能的效果。
请参考图6,其示出了本发明一实施例中提供的将数据写入叠瓦状磁记录 SMR硬盘的装置的结构方框图,该将数据写入叠瓦状磁记录SMR硬盘的装置 可以用于包含有SMR硬盘的设备中,该将数据写入叠瓦状磁记录SMR硬盘的 装置,可以包括:接收模块601、申请模块602、第一写入模块603和保存模块 604;
接收模块601,用于接收写数据指令,写数据指令包括键、数据和标记,键 用于标识数据,标记为写标记、删除标记或修改标记,写标记用于表示将数据 写入SMR硬盘中,删除标记用于表示删除SMR硬盘中具有键的数据,修改标 记用于表示利用数据修改具有相同键且已被写入SMR硬盘的数据;
申请模块602,用于根据数据记录的长度向正在使用的chunk申请空间,数 据记录包括写数据指令中的键、数据和标记;
第一写入模块603,用于将数据记录写入申请的空间中;
保存模块604,用于保存键、标记与数据被写入正在使用的chunk中的地址。
综上所述,本实施例提供的将数据写入叠瓦状磁记录SMR硬盘的装置,通 过将包含有键、数据和标记的数据记录写入正在使用的chunk中;由于根据写 数据指令生成的数据记录包含有键和数据,因此,解决了不能直接将分布式存 储系统布局方案移植到SMR硬盘上,导致SMR硬盘的写入性能较低的问题; 由于chunk根据band虚拟化得到,在各个chunk之间可以随机写入数据,因此 达到了可以提高在SMR硬盘写入数据的灵活性的效果。
请参考图7,其示出了本发明另一实施例中提供的将数据写入叠瓦状磁记录 SMR硬盘的装置的结构方框图,该将数据写入叠瓦状磁记录SMR硬盘的装置 可以用于包含有SMR硬盘的设备中,该将数据写入叠瓦状磁记录SMR硬盘的 装置,可以包括:接收模块701、申请模块702、第一写入模块703和保存模块 704;
接收模块701,用于接收写数据指令,写数据指令包括键、数据和标记,键 用于标识数据,标记为写标记、删除标记或修改标记,写标记用于表示将数据 写入SMR硬盘中,删除标记用于表示删除SMR硬盘中具有键的数据,修改标 记用于表示利用数据修改具有相同键且已被写入SMR硬盘的数据;
申请模块702,用于根据数据记录的长度向正在使用的chunk申请空间,数 据记录包括写数据指令中的键、数据和标记;
第一写入模块703,用于将数据记录写入申请的空间中;
保存模块704,用于保存键、标记与数据被写入正在使用的chunk中的地址。
在本实施例中的第一种可能的实现方式中,该申请模块702用于根据数据 记录的长度向正在使用的chunk中的数据区申请空间。
在本实施例中的第二种可能的实现方式中,该保存模块704可以包括:组 成单元704a和保存单元704b;
该组成单元704a,用于将键、标记与数据被写入正在使用的chunk中的地 址组成索引记录;
该保存单元704b,用于将索引记录保存至内存中与正在使用的chunk对应 的第一存储区域;或者,在正在使用的chunk中的剩余空间不足以分配写数据 指令中需要写入的数据时,将内存中的第一存储区域内的索引记录存储至正在 使用的chunk中的索引区。
在本实施例中的第三种可能的实现方式中,该装置还可以包括:修改模块 705、存储模块706和清除模块707。
该修改模块705,用于将正在使用的chunk的属性修改为已使用,并申请一 个未使用的chunk作为下次写入数据的正在使用的chunk;
该存储模块706,用于将第一存储区域内的索引记录存储至内存中与已使用 的chunk对应的第二存储区域;
该清除模块707,用于清除第一存储区域内的索引记录。
在本实施例中的第四种可能的实现方式中,该装置还可以包括:确定模块 708、第二写入模块709和重建模块710。
该确定模块708,用于在重启硬盘时,根据chunk的属性确定已使用的chunk 和正在使用的chunk;
该第二写入模块709,用于将已使用的chunk中存储的索引记录,写入内存 中与已使用的chunk对应的第二存储区域;
该重建模块710,用于根据正在使用的chunk中存储的数据记录,重建与数 据记录对应的索引记录,并将重建得到的索引记录写入内存中与正在使用的 chunk对应的第一存储区域。
在本实施例中的第五种可能的实现方式中,重建得到的索引记录包括:数 据记录中数据的键、与数据对应的标记以及数据被写入正在使用的chunk中的 地址。
综上所述,本实施例提供的将数据写入叠瓦状磁记录SMR硬盘的装置,通 过将包含有键、数据和标记的数据记录写入正在使用的chunk中;由于根据写 数据指令生成的数据记录包含有键和数据,因此,解决了不能直接将分布式存 储系统布局方案移植到SMR硬盘上,导致SMR硬盘的写入性能较低的问题; 由于chunk根据band虚拟化得到,在各个chunk之间可以随机写入数据,因此 达到了可以提高在SMR硬盘写入数据的灵活性的效果。
另外,通过将第一存储区域内的索引记录存储至内存中与已使用的chunk 对应的第二存储区域;由于将SMR硬盘中已使用的chunk的索引记录持久化到 内存中,因此,解决了顺序读取SMR硬盘时的读取效率较低的问题;达到了提 高SMR硬盘的读取效率的效果。
另外,通过将已使用的chunk中存储的索引记录写入内存中的第二存储区 域,并将重建得到的索引记录写入内存中的第一存储区域;由于能够在硬盘重 启后及时重建数据,因此,解决了SMR硬盘重启后无法正常工作的问题;到达 了提高SMR硬盘的使用性能的效果。
需要说明的是:上述实施例提供的将数据写入叠瓦状磁记录SMR硬盘的装 置在将数据写入叠瓦状磁记录SMR硬盘时,仅以上述各功能模块的划分进行举 例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成, 即将SMR所在的设备的内部结构划分成不同的功能模块,以完成以上描述的全 部或者部分功能。另外,上述实施例提供的将数据写入叠瓦状磁记录SMR硬盘 的装置与将数据写入叠瓦状磁记录SMR硬盘的方法实施例属于同一构思,其具 体实现过程详见方法实施例,这里不再赘述。
请参见图8,其示出了本发明一实施例中提供的包含有SMR硬盘的设备的 结构方框图,该设备可以包括:接收机802和处理器804,其中处理器804和接 收机802耦合。
接收机802,用于接收写数据指令,写数据指令包括键、数据和标记,键用 于标识数据,标记为写标记、删除标记或修改标记,写标记用于表示将数据写 入SMR硬盘中,删除标记用于表示删除SMR硬盘中具有键的数据,修改标记 用于表示利用数据修改具有相同键且已被写入SMR硬盘的数据;
处理器804,用于根据数据记录的长度向正在使用的chunk申请空间,数据 记录包括写数据指令中的键、数据和标记;
处理器804,还用于将数据记录写入申请的空间中;
处理器804,还用于保存键、标记与数据被写入正在使用的chunk中的地址。
综上所述,本实施例提供的包含有SMR硬盘的设备,通过将包含有键、数 据和标记的数据记录写入正在使用的chunk中;由于根据写数据指令生成的数 据记录包含有键和数据,因此,解决了不能直接将分布式存储系统布局方案移 植到SMR硬盘上,导致SMR硬盘的写入性能较低的问题;由于chunk根据band 虚拟化得到,在各个chunk之间可以随机写入数据,因此达到了可以提高在SMR 硬盘写入数据的灵活性的效果。
请参见图9,其示出了本发明另一实施例中提供的包含有SMR硬盘的设备 的结构方框图,该设备可以包括:接收机902、处理器904和存储器906,其中 处理器904分别与接收机902和存储器906耦合,存储器906中存储有至少一 种计算机软件,处理器904可以根据存储器906存储的计算机软件执行相关的 操作。
接收机902,用于接收写数据指令,写数据指令包括键、数据和标记,键用 于标识数据,标记为写标记、删除标记或修改标记,写标记用于表示将数据写 入SMR硬盘中,删除标记用于表示删除SMR硬盘中具有键的数据,修改标记 用于表示利用数据修改具有相同键且已被写入SMR硬盘的数据;
处理器904,用于根据数据记录的长度向正在使用的chunk申请空间,数据 记录包括写数据指令中的键、数据和标记;
处理器904,还用于将数据记录写入申请的空间中;
处理器904,还用于保存键、标记与数据被写入正在使用的chunk中的地址。
在本实施例中的第一种可能的实现方式中,处理器904,还用于根据数据记 录的长度向正在使用的chunk中的数据区申请空间。
在本实施例中的第二种可能的实现方式中,处理器904,还用于将键、标记 与数据被写入正在使用的chunk中的地址组成索引记录;
处理器904,还用于将索引记录保存至内存中与正在使用的chunk对应的第 一存储区域;或者,在正在使用的chunk中的剩余空间不足以分配写数据指令 中需要写入的数据时,将内存中的第一存储区域内的索引记录存储至正在使用 的chunk中的索引区。
在本实施例中的第三种可能的实现方式中,处理器904,还用于将正在使用 的chunk的属性修改为已使用,并申请一个未使用的chunk作为下次写入数据的 正在使用的chunk;
处理器904,还用于将第一存储区域内的索引记录存储至内存中与已使用的 chunk对应的第二存储区域;
处理器904,还用于清除第一存储区域内的索引记录。
在本实施例中的第四种可能的实现方式中,处理器904,还用于在重启硬盘 时,根据chunk的属性确定已使用的chunk和正在使用的chunk;
处理器904,还用于将已使用的chunk中存储的索引记录,写入内存中与已 使用的chunk对应的第二存储区域;
处理器904,还用于根据正在使用的chunk中存储的数据记录,重建与该数 据记录对应的索引记录,并将重建得到的索引记录写入内存中与正在使用的 chunk对应的第一存储区域。
在本实施例中的第五种可能的实现方式中,重建得到的索引记录包括:数 据记录中数据的键、与数据对应的标记以及数据被写入正在使用的chunk中的 地址。
综上所述,本实施例提供的包含有SMR硬盘的设备,通过将包含有键、数 据和标记的数据记录写入正在使用的chunk中;由于根据写数据指令生成的数 据记录包含有键和数据,因此,解决了不能直接将分布式存储系统布局方案移 植到SMR硬盘上,导致SMR硬盘的写入性能较低的问题;由于chunk根据band 虚拟化得到,在各个chunk之间可以随机写入数据,因此达到了可以提高在SMR 硬盘写入数据的灵活性的效果。
另外,通过将第一存储区域内的索引记录存储至内存中与已使用的chunk 对应的第二存储区域;由于将SMR硬盘中已使用的chunk的索引记录持久化到 内存中,因此,解决了顺序读取SMR硬盘时的读取效率较低的问题;达到了提 高SMR硬盘的读取效率的效果。
另外,通过将已使用的chunk中存储的索引记录写入内存中的第二存储区 域,并将重建得到的索引记录写入内存中的第一存储区域;由于能够在硬盘重 启后及时重建数据,因此,解决了SMR硬盘重启后无法正常工作的问题;到达 了提高SMR硬盘的使用性能的效果。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示 例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来 实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用 和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现 所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述 的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程, 在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方 法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性 的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以 有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统, 或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或 直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接, 可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为 单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者 也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部 单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中, 也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元 中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用 时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技 术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以 软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若 干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备 等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包 括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储 器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的 介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于 此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到 变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应 所述以权利要求的保护范围为准。
本文发布于:2023-04-14 19:46:05,感谢您对本站的认可!
本文链接:https://patent.en369.cn/patent/3/86815.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |