CN117453152B - 一种ZNS固态硬盘Zone LBA管理方法以及区块管理命令的算法 - Google Patents
一种ZNS固态硬盘Zone LBA管理方法以及区块管理命令的算法 Download PDFInfo
- Publication number
- CN117453152B CN117453152B CN202311795835.6A CN202311795835A CN117453152B CN 117453152 B CN117453152 B CN 117453152B CN 202311795835 A CN202311795835 A CN 202311795835A CN 117453152 B CN117453152 B CN 117453152B
- Authority
- CN
- China
- Prior art keywords
- zone
- raid
- block
- zns
- command
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 239000007787 solid Substances 0.000 title claims abstract description 51
- 238000007726 management method Methods 0.000 title claims abstract description 27
- 238000013507 mapping Methods 0.000 claims abstract description 110
- 238000000034 method Methods 0.000 claims description 20
- 238000012005 ligant binding assay Methods 0.000 claims description 16
- 238000012163 sequencing technique Methods 0.000 claims description 4
- 238000003491 array Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 abstract description 14
- 238000002955 isolation Methods 0.000 abstract description 2
- 230000009467 reduction Effects 0.000 abstract description 2
- 230000004044 response Effects 0.000 abstract description 2
- 239000000284 extract Substances 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000750 progressive effect Effects 0.000 description 2
- 230000003321 amplification Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0615—Address space extension
- G06F12/063—Address space extension for I/O modules, e.g. memory mapped I/O
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种ZNS固态硬盘Zone LBA管理方法以及区块管理命令的算法,首先对ZNS固态硬盘进行扫描确定坏块信息,提取每个Plane中连续好块的布局信息,将每个逻辑单元中每个Plane中对应的最短连续Block区域作为最小连续单元,以最小连续单元作为组成Zone的物理结构,实现了Zone的多通道高速读写以及Zone之间彼此物理隔离,同时可以避免单个Block可能因跨越多个Zone而导致数据错误操作以及因此导致的性能降低。另外,通过将Raid Block行带与Zone一一对应,对关键数据选择性开启Raid,既保证高速读写,又提高了敏感数据的安全性和可靠性。再者,通过维护LPB映射表,FTL不需要关注坏块问题,简化了FTL算法以及固件逻辑开销,缩短了FTL处理的响应时间,使得ZNS固态硬盘的性能最大化。
Description
技术领域
本申请属于固态硬盘存储领域,具体的,涉及一种ZNS固态硬盘Zone LBA管理方法以及区块管理命令的算法,其中至少包含ZNS Zone LBA地址的管理算法,ZNS Zone运行时管理算法以及ZNS Zone断电上电重建算法。
背景技术
ZNS固态硬盘(Zone Namespace Solid State Drive,即ZNS SSD)是从OC(OpenChannel,开放通道)SSD的基础上发展而来的,实现了从FTL(Flash Translation Layer,闪存转换层)从SSD内部迁移到上层的Host端,把SSD内部开放给了Host端,用户可以根据需灵活的制定FTL。用户可以根据数据类型的不同选择单独的位置存放,从而可以将数据与SSD的物理介质对齐,提高了读写的容量并实现了I/O以及数据的相互隔离。在ZNS规范中,将ZNS SSD的中的SSD Namespace的整个LBA(logical block address,逻辑区块地址)范围划分为若干等长的区间,每个等长的LBA区间作为一个Zone。每个Zone内必须以顺序的方式进行写入,且每个Zone有独立的状态机进行管理。
Zone在进行数据写入时,通过I/O写命令,写入的逻辑地址以LBA形式进行管理,通常LBA的大小为4KB。ZNS SSD的存储介质是Nand Flash,以长江存储X3-9060为例,一个Block由2304个Page组成,一个Page的大小为16K+2K Bytes。Host写入的LBA数据都需要存储在Nand Flash介质中以保证断电后数据不会丢失。而Nand Flash的Block在出厂时存在Bad Block,且ZNS协议中Reset Zone是需要将对应的Nand Flash以一个最小单元Block来Erase。若两段Zone的LBA都分配在同一个Block上,那Reset一个Zone的数据时会把另一段Zone的LBA数据给复位掉。这需要首先对另一段Zone的LBA数据进行搬运转移,然后将新的存放地址映射到对应的LAB,然后再进行相应的Reset操作,这个过程中需要通过FTL查询映射表,多次搬运数据。这无疑增加了ZNS SSD的写放大并降低了ZNS SSD的性能。因此,ZNSSSD的FTL需要针对Nand Flash特性对LBA地址进行管理。
发明内容
本申请提出一种ZNS固态硬盘Zone LBA管理方法以及区块管理命令的算法,通过对ZNS固态硬盘Zone对应的最小粒度进行设计管理,避免了ZNS固态硬盘在进行多通道操作时因竞争操作而导致的错误,实现了Zone的多通道操作,并保证了数据整体的安全性和I/O的高效性。
具体地,涉及一种ZNS固态硬盘Zone LBA管理方法,所述ZNS固态硬盘包括M个逻辑单元,其中每个逻辑单元(LUN)中包括H个Plane,每个所述Plane包括多个Block,每个所述Block包括多个Page,其中M和H均为大于1的正整数;其特征在于,至少包括如下步骤:
1)对ZNS固态硬盘上的每个所述逻辑单元(LUN)对应的Plane中的全部Block进行坏块Block扫描并记录,形成坏块Block以及好块Block的信息表库;其中所述好块Block的数量为多个。
2)控制模块读取所述信息表库并配置Raid模式。
3)从多个好块Block中选择M*N*H个好块Block,构建Raid Block;其中N为ZNS固态硬盘的Zone的数量,且所述每个好块Block在对应Plane内是连续的;所述构建Raid Block的步骤至少包括:
3-1)将所有所述逻辑单元(LUN)的选择的好块Block依次按照地址从小到大的顺序纵向对齐排列,形成M*N个Raid Block阵列;其中所述阵列中每个存储空间包括H个好块Block,且所述H个好块Block均分布在H个不同的Plane中;
3-2)形成N个Raid Block行带,其中第i行Raid Block行带分别由M个逻辑单元中每个Plane对应的连续好块Block的第i个好块Block依次排列构成,即LogicBlock0组成一个Raid Block0且LogicBlock1组成一个Raid Block1……以此类推,LogicBlockN组成一个Raid BlockN;最终Raid Block0,Raid Block1……Raid BlockN组成N个Raid Block。
4)建立Logic Plane Block的LPB映射表,所述LPB映射表至少包括第一副表和第二副表,其中所述第一副表用于记录被编址的Plane的映射关系;第二副表用于记录未被编址的Plane的映射关系;所述LPB映射表中每条映射关系至少包括[Raid Block Number]、[LUN Number]、[Plane Number]以及[Freq]等四条信息,当映射关系发生改变时,LPB映射表被更新。
5)将所述N个Raid Block行带组成N个Zone,并建立并维护一Zone对应Host LBA范围区间的ZL映射表;针对关键用户信息开启Raid。
6)通过区块管理命令对ZNS固态硬盘Zone进行读、写或者覆盖写操作。
进一步,在一个实施例中,步骤2)中控制模块读取所述信息表库的步骤进一步包括:
2-1)获取每个Plane中连续好Block的数量,并通过比较得到每个Plane中连续Block的数量最大值Pj[max],其中j表示对应逻辑单元的第j个Plane,j为正整数且j≤H;
2-2)比较P0,P1……Pj的大小,使N=MIN[P0,P1……Pj]。
进一步,在一个实施例中,所述Raid模式包括Raid1和Raid5中的至少一个;控制模块获取读取所述逻辑单元的对应的Plane的数量H,当H不大于2时,所述Raid模式选择为Raid1;当H大于2时,所述Raid模式选择为Raid3或Raid5。
进一步,在一个实施例中,所述区块管理命令至少包括ZNS LBA写命令、ZNS LBA读命令、ZNS Reset Zone命令、ZNS Finish Zone命令以及ZNS Full Zone命令。
进一步,在一个实施例中,所述ZNS LBA写命令包括如下步骤:
6-1-1)Host写入LBA;
6-1-2)固件通过映射表解析LBA对应的Zone的Raid Block位置;
6-1-3)通过ZNS定义的每个Zone的写指针写入Nand当前的位置;
6-1-4)更新当前Zone的写指针,
6-1-5)写命令完成。
进一步,在一个实施例中,所述ZNS LBA读命令包括如下步骤:
6-2-1)Host读取LBA;
6-2-2)固件通过映射表解析LBA对应的Zone的Raid Block位置;
6-2-3)通过LBA计算出当前Raid Block的LUN、Block以及Page信息;
6-2-4)读取对应的Nand位置数据;
6-2-5)读命令完成。
进一步,在一个实施例中,所述ZNS Reset Zone命令包括如下步骤:
6-3-1)Host收到Reset Zone命令;
6-3-2)固件通过映射表得到对应Zone的Raid Block位置;
6-3-3)将当前Zone对应的Raid Block做Nand Flash的Erase操作;
6-3-4)Reset Zone命令完成。
进一步,在一个实施例中,所述ZNS Finish Zone命令包括如下步骤:
6-4-1)Host收到Finish Zone命令;
6-4-2)固件通过映射表得到对应Zone的Raid Block位置;
6-4-3)通过ZNS定义的每个Zone的写指针写入当前Nand的位置;
6-4-4)查询当前数据是否残留在写入缓存,若是,则写入满足Nand Flash条件的填充数据,然后Finish Zone命令完成;若否,则Finish Zone命令直接完成。
进一步,在一个实施例中,所述ZNS Full Zone命令包括如下步骤:
6-5-1)Host收到Full Zone命令;
6-5-2)固件通过映射表得到对应Zone的Raid Block位置;
6-5-3)将当前Zone对应的Raid Block写入垃圾数据直至写满;
6-5-4)更新当前Zone的写指针为INVALID;
6-5-5)Full Zone命令完成。
进一步,在一个实施例中,所述固件通过映射表得到对应Zone的Raid Block位置的步骤进一步包括:
1)固件首先通过ZL映射表解析出LBA对应的Zone,然后再通过LPB映射表得到对应Zone的Raid Block位置;
2)当LPB映射表中的对应的LBA的映射关系被正确查询后,Freq自增1;
3)通过排序模块获取LPB映射表中的Freq参数,然后对LPB映射表中映射关系的排列顺序进行优化,所述排序模块被配置为:当某一条映射关系中Freq≥Q时,则将所有满足Freq≥Q条件的映射关系进行置顶,并按照Freq从大到小的顺序对其进行排序,其中Q为当前LPB映射表中全部映射关系的Freq值的平均数;或者每隔一时间段,对LPB映射表中全部的映射关系依据Freq从大到小的顺序依次排序;所述时间段可以为固定时间间隔或者非固定时间间隔。
本申请与背景技术相比,具有如下优异的技术效果:
(1)本申请通过建立LPB映射表,实现了ZNS固态硬盘LBA对应的物理地址的FTL算法,使每个Zone之间彼此物理隔离,避免了某一Block被两个及以上Zone使用,简化了ZNS固态硬盘FTL的算法实现,同时在Zone结构的实现上解决了多个Zone在执行多通道操作时之间相互干扰的问题。进一步,ZNS固态硬盘以逻辑单元(LUN)为基本粒度组成一个RaidBlock,充分利用Nand Flash的Muti-Plane Program/Read特性,达到性能最大化。
(2)本申请的整个ZNS固态硬盘由N个没有坏块的Raid Block组成且Zone之间彼此物理隔离,同时优先采用连续好块Block进行坏块替换,大大减少了因坏块替换导致的地址不连续而产生的读写性能的损失。进一步,可以通过Raid Block实现了对用户重要数据的保护,提高了数据的安全性。
(3)本申请通过维护LPB映射表,使得FTL不需要关注写入LBA数据遇到的坏块问题,简化了ZNS固态硬盘的FTL算法,缩短了ZNS固态硬盘FTL处理的响应时间,简化了固件的逻辑开销。
(4)本申请针对LPB映射表进行了进一步的优化处理,使将被查询次数多的映射关系更靠前,缩短了LPB映射表的查询时间提高了查询效率,通过设置一阈值,动态的对映射表中的映射关系进行排序,减少了因频繁触发操作对系统资源的开销。
(5)本申请针对Plane中的好快做冗余替换,为ZNS固态硬盘的动态均衡以及错误处理预留空间,进一步提高了ZNS固态硬盘工作的稳定性和寿命。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
本说明书附图所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本申请可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本申请所能产生的功效及所能达成的目的下,均应仍落在本申请所揭示的技术内容得能涵盖的范围内。
图1为ZNS协议定义的Zone和LBA关系示意图。
图2为某存储颗粒的内部存储结构示意图。
图3为本申请一个实施例中实现Zone管理的算法设计示意图。
图4为本申请一个实施例中N个Zone结构示意图。
图5为本申请一个实施例中ZNS LBA写命令固件处理算法。
图6为本申请一个实施例中ZNS LBA读命令固件处理算法。
图7为本申请一个实施例中ZNS Reset Zone命令固件处理算法。
图8为本申请一个实施例中ZNS Finish Zone命令固件处理算法。
图9为本申请一个实施例中ZNS Full Zone命令固件处理算法。
具体实施方式
下面将结合本申请实施例中的附图,对本申请中的实施例进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请提出一种ZNS固态硬盘Zone LBA管理方法以及区块管理命令的算法,首先对ZNS固态硬盘进行扫描确定坏块信息,同时提取连续好块的布局信息,根据上述布局信息对ZNS固态硬盘的Zone进行设计,即将每个逻辑单元中每个Plane中对应的最短连续Block区域作为最小连续单元,以最小连续单元作为组成Zone的物理结构,避免了单个Block可能因跨越多个Zone而导致数据错误操作或因此而引发的性能损失,实现了Zone的多通道操作,并保证了数据整体的安全性和I/O的高效性。进一步,通过形成Raid Block行带作为Zone区,可以根据用户需要开始针对关键数据选择性开启Raid,提高了敏感数据的安全性。
为了更好地理解本申请的技术方案,下面结合实施例进一步对技术方案进行说明。
本申请涉及一种ZNS固态硬盘Zone LBA管理方法以及实现区块管理命令的算法,所述ZNS固态硬盘包括M个逻辑单元,其中每个逻辑单元(LUN)中包括H个Plane,每个所述Plane包括多个Block,每个所述Block包括多个Page,其中M和H均为大于1的正整数。
在一个实施例中,参见附图2,为一个ZNS固态硬盘使用的颗粒中的逻辑结构中示意图。其中,每个逻辑结构由4个Plane组成;每个Plane由499个Block组成;每个Block由2304个Page组成;每个Page大小为16k+2k bytes。本申请通过下述步骤实现ZNS固态硬盘Zone LBA管理方法,所述方法包括:
1)对ZNS固态硬盘上的每个所述逻辑单元(LUN)对应的Plane中的全部Block进行坏块Block扫描并记录,形成坏块Block以及好块Block的信息表库;其中所述好块Block的数量总计为M个。通过扫描逻辑单元(LUN)的坏块,可以获取到ZNS固态硬盘中坏块的分布情况,从而为建立Raid Block打下基础,实现任意一个Zone内无坏块,保证在任意一个Zone内地址是连续的,大大缩短了因坏块替换查询映射表而导致的读写速度的损失。
2)控制模块读取所述信息表库并配置Raid模式。为了保证用户关键数据,ZNS固态硬盘可以选择性的开启Raid,通过Raid技术对数据实现保护。通常计算机功能既可以由硬件来实现,也可以由软件来实现。对于Raid而言,它同样可以采用硬件方式或者软件方式实现。
硬Raid拥有自己的Raid控制处理与I/O处理芯片,甚至还有阵列缓冲,对CPU的占用率和整体性能是三类实现中最优的,但实现成本也最高的。
软Raid由操作系统和CPU来实现所的Raid的功能,尚未设置专用的控制芯片和I/O芯片。现代操作系统基本上都通过在磁盘设备驱动程序上添加一个软件层,作为物理驱动器与逻辑驱动器之间的抽象层,来提供软Raid支持。软Raid的配置管理和数据恢复都比较简单,但是Raid所有任务的处理完全由CPU来完成,如计算校验值,所以执行效率比较低下,这种方式需要消耗大量的运算资源,支持Raid模式较少,很难广泛应用。软Raid性能欠佳,而且不能保护系统分区,因此很难应用于桌面系统。而硬Raid成本非常昂贵,且不同Raid相互独立,不具互操作性。
本申请利用信息表库相应的配置Zone,通过Raid Block实现了Raid功能,同时利用多个Zone之间相互独立的特性,在一定程度上降低了对CPU计算能力的消耗。
在一个实施例中,步骤2)中控制模块读取所述信息表库的步骤进一步包括如下步骤:2-1)获取每个Plane中连续好Block的数量,并通过比较得到每个Plane中连续Block的数量最大值Pj[max],其中j表示对应逻辑单元的第j个Plane,j为正整数且j≤H;2-2)比较P0,P1……Pj的大小,使N=MIN[P0,P1……Pj]。通过步骤2)可以获得每个Plane中连续Block的最大数量,进而为后面步骤中实现Raid Block提供条件。通过获取Plane中可以支持的最大的连续Block的数量,可以为ZNS固态硬盘提供更大存储空间的Raid,使ZNS固态硬盘的存储空间效率最大化,性能最优。
在一个实施例中,所述Raid模式包括Raid1和Raid5中的至少一个;控制模块获取读取所述逻辑单元的对应的Plane的数量H,当H不大于2时,所述Raid模式选择为Raid1;当H大于2时,所述Raid模式选择为Raid3或Raid5。选择不同的模式,可以为用户提供不同的存储空间以及不同程度的数据保护,用户可以根据ZNS固态硬盘的具体情况进行选择设置,既兼顾了固态硬盘的容量,又保证了数据的安全性,方便用户使用和操作。
3)从多个好块Block中选择M*N*H个好块Block,构建Raid Block;其中N为ZNS固态硬盘的Zone的数量,且所述每个好块Block在对应Plane内是连续的;所述构建Raid Block的步骤至少包括:
3-1)参见附图3,将所有所述逻辑单元(LUN)的选择的好块Block依次按照地址从小到大的顺序纵向对齐排列,形成M*N个Raid Block阵列;其中所述阵列中每个存储空间包括H个好块Block,且所述H个好块Block均分布在H个不同的Plane中。在形成Raid Block时,充分利用了每个Plane中的连续好块,将其设置为Raid Block的基本组成单元,而Plane中非连续或者其他连续的好块则可以作为Raid Block的冗余替换块。
在一个实施例中,一个Plane中可以会存在多个连续好块。当对应的Plane中被编址的连续好块中某一Block失效时,在进行坏块替换时,优先进行整体替换,即选择连续好块的数量大于或等于N的Block作为替换块来整体替换对应Plane中被编址的连续Block;而当不能进行整体替换时,再选择局部块替换,这样有利于保证ZNS固态硬盘的性能不会因此发生损失。
3-2)如图4所示,将多个Plane中的多个Block按此一定的次序形成N个Raid Block行带,其中第i行Raid Block行带分别由M个逻辑单元中每个Plane对应的连续Block的第i个Block依次排列构成,即LogicBlock0组成一个Raid Block0;且LogicBlock1组成一个Raid Block1……LogicBlockN组成一个Raid BlockN;Raid Block0,Raid Block1……RaidBlockN组成N个Raid Block;i表示0-N的正整数。
通过上述步骤,利用每个Plane中的连续号块为单元形成了Raid Block阵列,而不是像现有技术那样对LBA地址进行机械式划分,避免坏块分布不可控而导致ZNS固态硬盘的性能的降低;例如当某个Zone内出现坏块时,在进行读写操作时,必然需要通过查询映射表寻找与坏块对应的映射关系,这会大大降低数据的读写速度。通过提取并利用每个Plane中的连续好块,进而依次排列形成Raid Block阵列,进一步通过将其映射为Zone对应的存储空间,进一步提高了ZNS固态硬盘的性能。
4)建立Logic Plane Block的LPB映射表,通过该LPB映射表即可完成坏块的替换,使得FTL不需要关心写入LBA数据遇到的坏块问题,简化了固件的逻辑开销。所述LPB映射表至少包括第一副表和第二副表,其中所述第一副表用于记录被编址的Plane的映射关系;第二副表用于记录未被编址的Plane的映射关系;所述LPB映射表中每条映射关系至少包括[Raid Block Number]、[LUN Number]、[Plane Number]以及[Freq]等四条信息,当映射关系发生改变时,LPB映射表被更新。通过查询第一副表可以快速的获取Raid Block的映射关系;而当产生坏块需要替换时,通过第二副表即可得到冗余好块的映射关系,将第一副表中发生坏块的映射关系指向的物理地址替换为冗余块的物理地址即可。这样进行分类处理,提高了LPB映射表的查询效率,缩短了命令执行的时间。
5)将所述N个Raid Block行带组成N个Zone,并建立并维护一Zone对应Host LBA范围区间的ZL映射表;针对关键用户信息开启Raid。其中ZL映射表直接面向FTL和Zone,而不需要关注和维护ZNS固态硬盘的坏块,大大缩小了ZL映射表的存储空间要求,同时提高了地址查询和执行效率。
6)通过区块管理命令对ZNS固态硬盘Zone进行读、写或者覆盖写操作。所述区块管理命令至少包括ZNS LBA写命令、ZNS LBA读命令、ZNS Reset Zone命令、ZNS Finish Zone命令以及ZNS Full Zone命令。
在一个实施例中,如图5所示,所述ZNS LBA写命令包括如下步骤:
6-1-1)Host写入LBA;
6-1-2)固件通过映射表解析LBA对应的Zone的Raid Block位置;
6-1-3)通过ZNS定义的每个Zone的写指针写入Nand当前的位置;
6-1-4)更新当前Zone的写指针,
6-1-5)写命令完成。
在一个实施例中,如图6所示,所述ZNS LBA读命令包括如下步骤:
6-2-1)Host读取LBA;
6-2-2)固件通过映射表解析LBA对应的Zone的Raid Block位置;
6-2-3)通过LBA计算出当前Raid Block的逻辑单元(LUN)、Block以及Page信息;
6-2-4)读取对应的Nand位置数据;
6-2-5)读命令完成。
在一个实施例中,如图7所示,所述ZNS Reset Zone命令包括如下步骤:
6-3-1)Host收到Reset Zone命令;
6-3-2)固件通过映射表得到对应Zone的Raid Block位置;
6-3-3)将当前Zone对应的Raid Block做Nand Flash的Erase操作;
6-3-4)Reset Zone命令完成。
在一个实施例中,如图8所示,所述ZNS Finish Zone命令包括如下步骤:
6-4-1)Host收到Finish Zone命令;
6-4-2)固件通过映射表得到对应Zone的Raid Block位置;
6-4-3)通过ZNS定义的每个Zone的写指针写入当前Nand的位置;
6-4-4)查询当前数据是否残留在写入缓存(Write Cache),若是,则写入满足NandFlash条件的填充数据,然后Finish Zone命令完成;若否,则Finish Zone命令直接完成。
在一个实施例中,如图9所示,所述ZNS Full Zone命令包括如下步骤:
6-5-1)Host收到Full Zone命令;
6-5-2)固件通过映射表得到对应Zone的Raid Block位置;
6-5-3)将当前Zone对应的Raid Block写入垃圾数据直至写满;
6-5-4)更新当前Zone的写指针为INVALID;
6-6-4)Full Zone命令完成。
在查询LPB映射表时,为了加快查询效率,所述固件通过映射表得到对应Zone的Raid Block位置的步骤进一步包括:
1)固件首先通过ZL映射表解析出LBA对应的Zone,然后再通过LPB映射表得到对应Zone的Raid Block位置;
2)当LPB映射表中的对应的LBA的映射关系被正确查询后,Freq自增1;
3)通过排序模块获取LPB映射表中的Freq参数,然后对LPB映射表中映射关系的排列顺序进行优化,所述排序模块被配置为:当某一条映射关系中Freq≥Q时,则将所有满足Freq≥Q条件的映射关系进行顶置,并按照Freq从大到小的顺序对其进行排序,其中Q为当前LPB映射表中全部映射关系的Freq值的平均数;或者每隔一时间段,对LPB映射表中全部的映射关系依据Freq从大到小的顺序依次排序;所述时间段可以为固定时间间隔或者非固定时间间隔。
通过配置Freq参数利用排序模块对LPB映射表中映射关系的顺序进行优化处理,使得经常操作的热数据的映射关系在LPB映射表中的位置更显著,可以缩短LPB映射表查询的时间,提高系统的执行效率,进一步提高ZNS固态硬盘的性能。
本说明书中各个实施例采用递进、或并列、或递进和并列结合的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
需要说明的是,在本申请的描述中,需要理解的是,术语“上”、“下”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。当一个组件被认为是“连接”另一个组件,它可以是直接连接到另一个组件或者可能同时存在居中设置的组件。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括上述要素的物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (9)
1.一种ZNS固态硬盘Zone LBA管理方法,所述ZNS固态硬盘包括M个逻辑单元,其中每个逻辑单元(LUN)中包括H个Plane,每个所述Plane包括多个Block,每个所述Block包括多个Page,其中M和H均为大于1的正整数;其特征在于,至少包括如下步骤:
1)对ZNS固态硬盘上的每个所述逻辑单元(LUN)对应的Plane中的全部Block进行坏块Block扫描并记录,形成坏块Block以及好块Block的信息表库;其中所述好块Block的数量为多个;
2)控制模块读取所述信息表库并配置Raid模式;所述控制模块读取所述信息表库进一步包括:
2-1)获取每个Plane中连续好块Block的数量,并通过比较得到每个Plane中连续好块Block的数量最大值Pj[max],其中j表示对应逻辑单元的第j个Plane,j为正整数且j≤H;
2-2)比较P0,P1……Pj的大小,使N=MIN[P0,P1……Pj];
3)从多个好块Block中选择M*N*H个好块Block,构建Raid Block;其中N为ZNS固态硬盘的Zone的数量,且所述每个好块Block在对应Plane内是连续的;所述构建Raid Block的步骤至少包括:
3-1)将所有所述逻辑单元(LUN)的选择的好块Block依次按照地址从小到大的顺序纵向对齐排列,形成M*N个Raid Block阵列;其中所述阵列中每个存储空间包括H个好块Block,且所述H个好块Block均分布在H个不同的Plane中;
3-2)形成N个Raid Block行带,其中第i行Raid Block行带分别由M个逻辑单元中每个Plane对应的连续好块Block的第i个好块Block依次排列构成,即LogicBlock0组成一个Raid Block0且LogicBlock1组成一个Raid Block1……依此类推,LogicBlockN-1组成一个Raid BlockN-1;最后Raid Block0,Raid Block1……Raid BlockN-1组成N个Raid Block,其中i表示0-(N-1)的正整数;
4)建立Logic Plane Block的LPB映射表,所述LPB映射表至少包括第一副表和第二副表,其中所述第一副表用于记录被编址的Plane的映射关系;第二副表用于记录未被编址的Plane的映射关系;所述LPB映射表中每条映射关系至少包括[Raid Block Number]、[LUNNumber]、[Plane Number]以及[Freq]四条信息,当映射关系发生改变时,LPB映射表被更新;
5)将所述N个Raid Block行带组成N个Zone,建立并维护一Zone对应Host LBA范围区间的ZL映射表;针对关键用户信息开启Raid;
6)通过区块管理命令对ZNS固态硬盘Zone进行读、写或者覆盖写操作。
2.根据权利要求1所述的方法,其特征在于:所述Raid模式包括Raid1、Raid3和Raid5中的至少一个;控制模块获取所述逻辑单元的对应的Plane的数量H,当H不大于2时,所述Raid模式选择为Raid1;当H大于2时,所述Raid模式选择为Raid3或Raid5。
3.根据权利要求1所述的方法,其特征在于:所述区块管理命令至少包括ZNS LBA写命令、ZNS LBA读命令、ZNS Reset Zone命令、ZNS Finish Zone命令和ZNS Full Zone命令。
4.根据权利要求3所述的方法,其特征在于:所述ZNS LBA写命令包括如下步骤:
6-1-1)Host写入LBA;
6-1-2)固件通过映射表解析LBA对应的Zone的Raid Block位置;
6-1-3)通过ZNS定义的每个Zone的写指针写入Nand当前的位置;
6-1-4)更新当前Zone的写指针,
6-1-5)写命令完成。
5.根据权利要求3所述的方法,其特征在于:所述ZNS LBA读命令包括如下步骤:
6-2-1)Host读取LBA;
6-2-2)固件通过映射表解析LBA对应的Zone的Raid Block位置;
6-2-3)通过LBA计算出当前Raid Block的LUN、Block以及Page信息;
6-2-4)读取对应的Nand位置数据;
6-2-5)读命令完成。
6.根据权利要求3所述的方法,其特征在于:所述ZNS Reset Zone命令包括如下步骤:
6-3-1)Host收到Reset Zone命令;
6-3-2)固件通过映射表得到对应Zone的Raid Block位置;
6-3-3)将当前Zone对应的Raid Block做Nand Flash的Erase操作;
6-3-4)Reset Zone命令完成。
7.根据权利要求3所述的方法,其特征在于:所述ZNS Finish Zone命令包括如下步骤:
6-4-1)Host收到Finish Zone命令;
6-4-2)固件通过映射表得到对应Zone的Raid Block位置;
6-4-3)通过ZNS定义的每个Zone的写指针写入当前Nand的位置;
6-4-4)查询当前数据是否残留在写入缓存,若是,则写入满足Nand Flash条件的填充数据,然后Finish Zone命令完成;若否,则Finish Zone命令直接完成。
8.根据权利要求3所述的方法,其特征在于:所述ZNS Full Zone命令包括如下步骤:
6-5-1)Host收到Full Zone命令;
6-5-2)固件通过映射表得到对应Zone的Raid Block位置;
6-5-3)将当前Zone对应的Raid Block写入垃圾数据直至写满;
6-5-4)更新当前Zone的写指针为INVALID;
6-5-5)Full Zone命令完成。
9.根据权利要求4-8任意一项所述的方法,其特征在于:所述固件通过映射表得到对应Zone的Raid Block位置的步骤进一步包括:
1)固件首先通过ZL映射表解析出LBA对应的Zone,然后再通过LPB映射表得到对应Zone的Raid Block位置;
2)当LPB映射表中的对应的LBA的映射关系被正确查询后,Freq自增1;
3)通过排序模块获取LPB映射表中的Freq参数,然后对LPB映射表中映射关系的排列顺序进行优化,所述排序模块被配置为:当某一条映射关系中Freq≥Q时,则将所有满足Freq≥Q条件的映射关系进行置顶,并按照Freq从大到小的顺序对其进行排序,其中Q为当前LPB映射表中全部映射关系的Freq值的平均数;或者每隔一时间段,对LPB映射表中全部的映射关系依据Freq从大到小的顺序依次排序;所述时间段为固定时间间隔或者非固定时间间隔。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311795835.6A CN117453152B (zh) | 2023-12-25 | 2023-12-25 | 一种ZNS固态硬盘Zone LBA管理方法以及区块管理命令的算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311795835.6A CN117453152B (zh) | 2023-12-25 | 2023-12-25 | 一种ZNS固态硬盘Zone LBA管理方法以及区块管理命令的算法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117453152A CN117453152A (zh) | 2024-01-26 |
CN117453152B true CN117453152B (zh) | 2024-04-02 |
Family
ID=89580333
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311795835.6A Active CN117453152B (zh) | 2023-12-25 | 2023-12-25 | 一种ZNS固态硬盘Zone LBA管理方法以及区块管理命令的算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117453152B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117873406A (zh) * | 2024-03-11 | 2024-04-12 | 武汉麓谷科技有限公司 | 一种控制zns固态硬盘的磨损均衡的方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11093139B1 (en) * | 2019-07-18 | 2021-08-17 | Pure Storage, Inc. | Durably storing data within a virtual storage system |
US11340987B1 (en) * | 2021-03-04 | 2022-05-24 | Netapp, Inc. | Methods and systems for raid protection in zoned solid-state drives |
CN114546296A (zh) * | 2022-04-25 | 2022-05-27 | 武汉麓谷科技有限公司 | 一种基于zns固态硬盘的全闪存系统和地址映射方法 |
CN115145479A (zh) * | 2021-03-29 | 2022-10-04 | 美光科技公司 | 区条带化的区名字空间存储器 |
CN115686372A (zh) * | 2022-11-07 | 2023-02-03 | 武汉麓谷科技有限公司 | 一种基于zns固态硬盘zrwa功能的数据管理的方法 |
CN116126251A (zh) * | 2023-04-04 | 2023-05-16 | 北京忆恒创源科技股份有限公司 | 一种实现多并发写入的方法、控制器和固态存储设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104407813B (zh) * | 2014-11-20 | 2019-02-19 | 上海宝存信息科技有限公司 | 一种基于固态存储介质的raid系统及方法 |
TWI553481B (zh) * | 2015-09-30 | 2016-10-11 | 宇瞻科技股份有限公司 | 固態硬碟的資料管理方法、寫入管理系統及其方法 |
LU102091B1 (en) * | 2020-09-29 | 2022-03-29 | Microsoft Technology Licensing Llc | Zone hints for zoned namespace storage devices |
US20220236904A1 (en) * | 2021-01-25 | 2022-07-28 | Pure Storage, Inc. | Using data similarity to select segments for garbage collection |
US11960753B2 (en) * | 2021-08-25 | 2024-04-16 | Western Digital Technologies, Inc. | Solution for super device imbalance in ZNS SSD |
-
2023
- 2023-12-25 CN CN202311795835.6A patent/CN117453152B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11093139B1 (en) * | 2019-07-18 | 2021-08-17 | Pure Storage, Inc. | Durably storing data within a virtual storage system |
US11340987B1 (en) * | 2021-03-04 | 2022-05-24 | Netapp, Inc. | Methods and systems for raid protection in zoned solid-state drives |
CN115145479A (zh) * | 2021-03-29 | 2022-10-04 | 美光科技公司 | 区条带化的区名字空间存储器 |
CN114546296A (zh) * | 2022-04-25 | 2022-05-27 | 武汉麓谷科技有限公司 | 一种基于zns固态硬盘的全闪存系统和地址映射方法 |
CN115686372A (zh) * | 2022-11-07 | 2023-02-03 | 武汉麓谷科技有限公司 | 一种基于zns固态硬盘zrwa功能的数据管理的方法 |
CN116126251A (zh) * | 2023-04-04 | 2023-05-16 | 北京忆恒创源科技股份有限公司 | 一种实现多并发写入的方法、控制器和固态存储设备 |
Also Published As
Publication number | Publication date |
---|---|
CN117453152A (zh) | 2024-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11175984B1 (en) | Erasure coding techniques for flash memory | |
JP3505093B2 (ja) | ファイル管理システム | |
US8850114B2 (en) | Storage array controller for flash-based storage devices | |
US8819338B2 (en) | Storage system and storage apparatus | |
JP4818812B2 (ja) | フラッシュメモリストレージシステム | |
US9304685B2 (en) | Storage array system and non-transitory recording medium storing control program | |
CN111158587B (zh) | 基于存储池虚拟化管理的分布式存储系统及数据读写方法 | |
CN101272332B (zh) | 具有未使用物理区域自主管理功能的存储装置 | |
CN117453152B (zh) | 一种ZNS固态硬盘Zone LBA管理方法以及区块管理命令的算法 | |
JP6062060B2 (ja) | ストレージ装置、ストレージシステム、及びストレージ装置制御方法 | |
US20160253123A1 (en) | NVMM: An Extremely Large, Logically Unified, Sequentially Consistent Main-Memory System | |
US10795768B2 (en) | Memory reallocation during raid rebuild | |
US20140068181A1 (en) | Elastic cache with single parity | |
JP2013156977A (ja) | 冗長キャッシュデータのエラスティックキャッシュ | |
TW201216057A (en) | Block management method, memory controller and memory storage apparatus | |
US20120239882A1 (en) | Control apparatus and method, and storage apparatus | |
CN111124950A (zh) | 数据管理装置、数据管理方法和存储介质 | |
JP4460967B2 (ja) | メモリカード、不揮発性半導体メモリ、及び半導体メモリの制御方法 | |
US10949110B2 (en) | Configurable mapping system in a non-volatile memory | |
JPH11288387A (ja) | ディスクキャッシュ装置 | |
JP4252102B2 (ja) | 計算機システムおよび二次記憶装置 | |
JP4734432B2 (ja) | データ記憶システム | |
TW202401232A (zh) | 儲存系統以及操作儲存系統的方法 | |
US11592988B2 (en) | Utilizing a hybrid tier which mixes solid state device storage and hard disk drive storage | |
JP4128206B2 (ja) | 計算機システムおよび二次記憶装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |