一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种快速修改多重命名空间的方法与流程

2021-11-17 23:33:00 来源:中国专利 TAG:

1.本发明涉及命名空间
技术领域
,尤其涉及一种快速修改多重命名空间的方法。
背景技术
:2.命名空间(namespace)是nvme协议中一个基本逻辑空间的概念,简单地说命名空间将nvmessd的用户空间进行逻辑划分,每个命名空间拥有自身的独立储存空间,可个别进行格式化和加密等操作。也是iodeterminism、多路径等特性实现的基础。3.在nvme技术中,命名空间是主机软件可访问的逻辑块地址(lba)的集合。命名空间id是控制器用来对命名空间访问的标识符。命名空间不是实体物理性的隔离,而是主机软件可寻址的逻辑隔离,所以主机软件可随时创建不同大小的命名空间,也可删除旧的命名空间。但由于每次创建的命名空间大小皆不相同,因此在多次创建和删除的过程中,ssd的命名空间映射表就会变成非常凌乱,使每次创建新的命名空间都要花费非常多的时间修改映像表。技术实现要素:4.本发明的目的在于提出一种可快速完成动态命名空间的修改,且不影响ssd的传输速度的方法。5.为达到上述目的,本发明提出一种快速修改多重命名空间的方法,设置两张映射表,分别为ns_idx以及ns_map;6.所述ns_idx用于存储命名空间在所述ns_map中对应lba地址的底部指标以及占用单位数量;通过两张映射表的映射关系,实现新的命名空间创建,以及实现命名空间删除后的快速更新。7.进一步的,所述ns_idx包括ptr_start字段和size字段;所述ptr_start字段用于各个命名空间存储对应lba地址的底部指标,所述size字段用于记录每个命名空间占用的单位数量。8.进一步的,新的命名空间创建过程为:更新所述ns_idx,将所述ns_map的底部指标写入ns_idx的ptr_start字段,再将新的命名空间占用的单位数量写入size字段,实现ns_idx与所述ns_map之间的映射关系,完成创建一个新的命名空间。9.进一步的,所述空间命名的删除步骤如下:10.要删除某个命名空间,搜寻整个ns_idx,将所述命名空间删除,在ns_map中,对应删除的所述命名空间的lba地址移动至所述ns_map映射表的底部,原本位于删除的所述命名空间对应的lba地址下方的每一个lba地址均在所述ns_map映射表中向上移动n个单位;n个单位为删除的命名空间对应的lba地址数量,即删除的命名空间占用的单位数量。11.进一步的,所述空间命名的删除步骤如下:12.首先设置一个头部指标m,要删除某个命名空间,搜寻整个ns_idx,将所述命名空间删除,在ns_map中,同时移动删除的所述命名空间对应的n个lba地址,将n个lba地址自ns_map映射表首部m格往下排布;13.在所述ns_map中,初始映射表m格记录的lba地址,至原本位于删除的所述命名空间对应的lba地址上方的lba地址,均向下位移n个单位;n个单位为删除的命名空间对应的lba地址数量,即删除的命名空间占用的单位数量。14.进一步的,所述ns_map中还包括nsid字段:所述nsid字段用于指定对应的所述ns_idx中相应的id序列,在删除了一个命名空间的情况下,相应的通过位移所述ns_idx中的id序列即可15.与现有技术相比,本发明的优势之处在于:16.1、本发明在创建新的命名空间时,利用两张表的映射关系在可在极短的时间内完成命名空间映射表的更新。17.2.本发明通常越早创建的命名空间,也有较大机率越早删除,根据此特性,通过本发明ns_map在删除命名空间后,自身对lba地址的重排规律,可大幅缩小删除旧的命名空间所花的时间。18.3.若删除一个命名空间,在更新映射表的过程中,主机又创建新的命名空间,或主机发出新的读写命令,需要查询映像表,通过在ns_map中设置nsid字段,可以立刻处理新的需求,不用等删除命名空间的步骤全部完成才能处理。附图说明19.图1为本发明实施例1中空间命名的删除步骤的示意图;20.图2为本发明实施例2中空间命名的删除步骤的示意图;21.图3为本发明实施例3中空间命名的删除步骤的示意图。具体实施方式22.为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案作进一步地说明。23.实施例1:24.本发明提出一种快速修改多重命名空间的方法,设置两张映射表,分别为ns_idx以及ns_map;25.ns_idx用于存储命名空间在ns_map中对应lba地址的底部指标以及占用单位数量;通过两张映射表的映射关系,实现新的命名空间id创建,以及实现命名空间删除后的快速更新。26.在本实施例中,ns_idx包括ptr_start字段和size字段;ptr_start字段用于各个命名空间存储对应lba地址的底部指标,size字段用于记录每个命名空间占用的单位数量。27.在本实施例中,新的命名空间创建过程为:更新ns_idx,将ns_map的底部指标写入ns_idx的ptr_start字段,再将新的命名空间占用的单位数量写入size字段,实现ns_idx与ns_map之间的映射关系,完成创建一个新的命名空间。28.如图1所示,ssd总容量是4tbytes,命名空间的granularity(命名空间的最小单位,也可计算出命名空间映射表的大小)为1gbytes,则ns_maptable共有4096个entry。29.要删除某个命名空间,在本实施例中,要删除命名空间ns4,首先搜寻整个ns_idx,将ns_idx中的ns4删除,对应到ns_map中,由于ns4占用的单位数量为5,对应ns_map中entry18‑22,因此,将原本entry18‑22的数值向表格尾端移动,填入entry4091‑4095,随后,将原本entry23‑4095的数值全部往上移动5个entry。通过上述做法,可以快速实现某个命名空间的删除,同时可以保证ns_map中没有空缺,将原本删除的lba地址移动到ns_map的末端备用,便于后期新建命名空间时使用。30.实施例2:31.实施例2与实施例1的整体方式相同,区别技术特征在于某个命名空间删除方式不同,如图2所示,要删除命名空间ns4,此方法增加一个头部指标(headpointer),在本实施例中,headpointer是3,若要删除命名空间ns4,首先搜寻整个ns_idx,由于ns4占用的单位数量为5,对应ns_map中entry18‑22,因此,将原本entry18‑22的数值填入ns_map的entry3(根据头部指标的设定来决定)‑7之间,同时,原本介于,entry3‑17的数值全部往下移动5个entry。32.通过上述操作后,由于新建的文档一般处于表格末端,而旧文档一般处于表格的首端,旧文档删除几率相对较大,旧文档的删除,若采用实施例1中,将删除的lba地址移动到ns_map的末端,此时,移动的lba地址往下的lba地址均要向上位移n个单位,若存储空间过大,则要位移的lba地址数据较多,表格的处理时间过长;采用实施例2的方式,将删除的lba地址移动到表格的首端,即headpointer往下,这样情况下,只需要移动原本headpointer往下至待删除的lba地址之间的地址数据,表格下方的lba地址无需移动,这种情况下,lba地址的处理数据量大大较少,删除时间得到缩减,可大幅缩小删除旧的命名空间所花的时间。33.实施例3:34.实施例3与实施例2的技术方案相同,区别在于,如图3所示,在ns_map增加一个nsid的字段,代表这个entry是哪一个命名空间指过来的,此作法可以实现ns_map和ns_idx中更清楚的映射关系,由于表格的对应关系可能不是序列排布,即ns3之后有可能直接是ns8,并非ns4,因此在表格删除命名空间的阶段,想要查询一个命名空间,需要删除完成后重排完成才能进行查表,在设置了nsid的字段后,每一个entry与ns_map直接对应,不须要全部位移完毕,在删除过程中,可以暂停删除任务,进行查表。35.上述仅为本发明的优选实施例而已,并不对本发明起到任何限制作用。任何所属
技术领域
的技术人员,在不脱离本发明的技术方案的范围内,对本发明揭露的技术方案和技术内容做任何形式的等同替换或修改等变动,均属未脱离本发明的技术方案的内容,仍属于本发明的保护范围之内。当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献