关联数据类型与流标识符以映射至顺序写入存储器装置的制作方法

文档序号:30496734发布日期:2022-06-22 05:18阅读:82来源:国知局
1.本公开的实施例大体上涉及存储器子系统,且更具体来说,涉及使数据类型与流标识符相关联以映射到顺序写入的存储器装置上。
背景技术
::2.存储器子系统可包含存储数据的一或多个存储器装置。存储器装置可为例如非易失性存储器装置和易失性存储器装置。一般来说,主机系统可利用存储器子系统以将数据存储在存储器装置处且从存储器装置检索数据。技术实现要素:3.在一方面中,本技术提供一种系统,其包括:多个集成电路(ic)管芯,其具有存储器单元;和处理装置,其耦合到所述多个ic管芯,所述处理装置进行包括以下各项的操作:将第一流标识符(id)指派给由操作系统内的应用程序的执行所产生的第一数据类型;使由所述应用程序所产生的第一文件与所述第一流id相关联,其中所述第一文件与所述第一数据类型相关联;将所述多个ic管芯的第一存储器单元群组分配给所述第一文件,其中为所述第一存储器单元群组指派所述第一流id;和基于所述第一流id使得将所述第一文件顺序写入到所述多个ic管芯的所述第一存储器单元群组。4.在另一方面中,本技术进一步提供一种系统,其包括:一种方法,其包括:由执行操作系统的文件系统的处理装置检索待写入到多个集成电路(ic)管芯的块群组,所述块群组为文件的连续部分;由所述处理装置存取与所述块群组相关联的块群组元数据以根据数据类型确定指派给所述块群组的与所述文件相关联的流标识符(id);由所述处理装置确定所述多个ic的指派给所述流id的存储器单元群组中是否存在可用空间,所述块群组分配给所述存储器单元群组;和响应于确定所述存储器单元群组中存在可用的可分配空间:由所述处理装置在所述块群组的所述块群组元数据内存取与所述存储器单元群组相关联的写入指针;和由所述处理装置在所述存储器单元群组内分配超出所述写入指针的顺序写入所述块群组的物理地址的连续范围。5.在又一方面中,本技术进一步提供一种非暂时性计算机可读媒体,其存储指令,所述指令在由处理装置执行时使得所述处理装置进行包括以下各项的操作:将第一流标识符(id)指派给归因于操作系统的执行所产生的数据类型;使由所述操作系统所产生的系统数据的第一文件与所述第一流id相关联,其中所述第一文件与所述数据类型相关联;将多个ic管芯的第一存储器单元群组分配给所述第一文件,其中为所述第一存储器单元群组指派所述第一流id;和基于所述第一流id使得将所述第一文件顺序写入到所述多个ic管芯的所述第一存储器单元群组。附图说明6.根据下文给出的详细描述且根据本公开的各种实施例的附图将更加充分地理解本公开。7.图1a说明根据实施例的包含主机和存储器子系统的实例计算系统。8.图1b为根据一些实施例的图1a的计算系统的详细框图。9.图2为说明根据各种实施例的包含流标识符(id)与数据类型的和流id与特定区(或存储器单元群组)的主机文件系统关联的计算系统的示意图。10.图3为根据一些实施例的用于将作为文件的连续部分的块群组分配给存储器单元群组(或区)的方法的流程图。11.图4为根据实施例的用于将流id指派给应用程序数据类型以使得数据类型的文件与指派给顺序写入的存储器装置中的存储器单元群组的流id相关联的方法的流程图。12.图5为根据实施例的用于将流id指派给操作系统数据以使得系统数据与指派给顺序写入的存储器装置中的存储器单元群组的流id相关联的方法的流程图。13.图6为其中可操作本公开的实施例的实例计算机系统的框图。具体实施方式14.本公开的各方面是针对使数据类型与流标识符相关联以映射到顺序写入的存储器装置上。存储器子系统可为存储装置、存储器模块,或存储装置与存储器模块的混合。下文结合图1a描述存储装置和存储器模块的实例。一般来说,主机系统可利用包含例如存储数据的存储器装置的一或多个组件的存储器子系统。主机系统可提供待存储在存储器子系统处的数据且可请求待从存储器子系统检索的数据。15.存储器子系统可包含多个组件,例如可将来自主机系统的数据存储在存储媒体中的存储器装置,例如,具有个别地存储数据的可寻址存储器单元的集成电路(ic)管芯。当今的某些存储器子系统中的处理通常通过对ic管芯的随机分配且以数据的较小增量(例如,四个千字节(kb))进行。页或数据块的这些随机分配包含对ic管芯的非顺序和/或随机写入。这一实践导致存储器(例如,动态随机存取存储器(dram)、静态随机存取存储器(sram)或持久性存储器)用于存储跟踪ic管芯的逻辑块地址(lba)空间与物理地址空间之间的逻辑到物理(ltp)地址映射的映射数据结构的高成本。举例来说,映射开销为主机可寻址媒体的每太字节(tb)约千兆字节(gb),且因此,16tb固态驱动器(ssd)需要相当大的16gb的存储器映射开销。另外,进行周期性快照和记录以在整个关机和出人意料的电力故障情形中保持映射数据结构。这将额外写入开销添加到ic管芯和性能损失。16.存储堆栈是在修改以利用顺序输入-输出(io)存储器装置效率的过程中。举例来说,存储堆栈按定位(例如,根据线程、过程或应用程序)包含于文件系统群组数据中且将数据顺序写入到存储装置。文件系统可接着将不同定位的数据作为并行顺序流写入到存储装置,每一流具有其自身的定位。对定位的提及可提及时间定位或空间定位。具有时间定位的数据为处理器趋向于在较短时间周期内重复地在同一存储器位置处存取的数据,例如,约同时写入、覆写和微调的数据。具有空间定位的数据捕获当存储器装置在特定时间引用特定存储位置时的趋势,接着存储器装置很可能在近期引用附近的存储器位置。在这一情况下,处理器可尝试确定当前引用周围的区域的大小和形状,准备所述当前引用以用于后续引用的较快存取是重要的。对顺序定位的引用是当数据元素线性地布置和存取时(例如,在遍历一维阵列中的元素时)发生的空间定位的特殊情况。17.当顺序写入具有定位的数据时,为简单起见,将数据写入到存储器单元群组(也称为区),其中每一区可存储多个物理数据块。因此,可以较高粒度(兆字节而不是千字节)记录映射,以便将特定数据群组映射为lba空间中的区,这显著减少所记录的元数据。在这一粒度下与lba空间相关联的映射空间可称为分区名字空间(zns),且以这一方式写入的存储器装置称为zns存储器装置。在一个实例中,数据群组由具有定位的多个数据块组成,其中每一数据块对应于ic管芯的物理块(例如,擦除单元)。在一个实施例中,存储器装置的物理块(或擦除单元)的大小为约16兆字节(mb)。存储器单元群组(或区)可为物理块的大小的至少两倍到四倍(或更多)。因此,区可存储至少64mb的数据(例如,64mb、128mb、256mb、512mb或更多),所述数据中的每一个显著大于四个千字节(kb)。18.在某些主机操作系统中,文件系统处置来自操作系统的文件、来自在操作系统上运行的应用程序的文件和由文件系统所产生的元数据的管理,目的是组织文件和分配在文件和元数据产生时写入所述文件和元数据所必需的ic管芯中的空间。某些主机操作系统(例如linux、unix和其类似物)的文件系统将块群组(例如,文件的连续部分,例如一系列lba)分配给ic管芯的一系列物理地址,在所述一系列物理地址处存储块群组。文件可为例如数据文件、包含索引节点(inode)的元数据、目录结构、自由空间管理器和其类似物,和能够封装数据/元数据且写入到ic管芯的其它数据结构(或对象),这将更详细地论述。这些文件系统通常基于块群组是否含有数据或元数据而将某些类型的块群组分配给ic管芯的特定系列的物理地址,且尝试不对这些特定系列的物理地址内的数据和元数据进行互混。19.在这些主机操作系统中,文件系统不适于将文件或块群组分配到区或顺序写入块群组,如在受zns管理存储器装置的区内所进行的。迄今为止,已由存储器子系统控制器(例如,其充当主机的文件系统与存储装置之间的中间物)在存储器装置层级下管理对受zns管理存储器装置的顺序写入。存储器子系统控制器内的管理添加复杂性水平,包含ltp地址映射、记录元数据和用于处置非顺序io写入的对应资源要求,尽管大部分io写入是顺序写入操作。20.本公开的至少一些方面通过配置具有将流id指派给特定数据类型且指派给特定元数据类型的能力的主机系统(例如,主机操作系统的文件系统)和使用流id将每一区(例如,存储器单元群组)分配给这些特定数据类型或元数据类型中的一个来解决以上和其它缺陷。以这一方式,文件系统使用数据流和数据流的对应流id以用于受zns管理存储器装置的ic管芯内的文件/数据结构管理和存储分配。21.另外,存储装置的写前拷贝(cow)管理通常最适合于顺序写入,因为一旦写入数据,数据就不被覆写。更具体来说,cow为计算机编程中的资源管理技术以有效地对存储器中的可修改资源实施复制或拷贝操作。如果复制资源但未修改,那么不必创建新资源;资源可在拷贝与初始之间共享。在文件系统顺序写入到存储装置的情况下,使用cow管理来执行这一操作更高效。举例来说,类似类型的数据可作为群组写入,且因此可最终也作为群组在变得失效且经历垃圾收集(包含擦除)之前在其它地方重写。写入与群组相同数据类型的文件因此可最小化垃圾收集且减少写入放大。另外,在一些实施例中,主机操作系统的内核包含装置映射逻辑,所述装置映射逻辑可直接使得将文件写入到个别区的物理地址,且因此将逻辑地址映射到顺序写入区的物理地址,从而绕过对存储器子系统控制器处置这一映射的需要。22.因此,在一个实施例中,例如,文件系统可将第一流标识符(id)指派给由操作系统内的应用程序的执行所产生的第一数据类型。归因于第一文件与第一数据类型相关联,文件系统可进一步使由应用程序所产生的第一文件与第一流id相关联。在一些实施例中,这经由将流id添加到文件名或提供于文件(例如,数据结构文件)内的元数据结构来进行。文件系统可进一步将ic管芯的第一区(例如,存储器单元群组)分配给与第一流id相关联的第一文件。文件系统可接着基于第一流id使得将(从数千文件中识别出的)第一文件顺序写入到ic管芯的第一存储器单元群组。如果例如检测到另一应用程序的与第二流id相关联的具有不同数据类型的第二文件,那么文件系统可使得将第二文件顺序写入到已指派第二流id的第二区。23.在另一实施例中,文件系统可将第三流id指派给归因于操作系统的执行而产生的第三数据类型。文件系统可使由操作系统所产生的系统数据的第三文件与第三流id相关联,其中第三文件与第三数据类型相关联。系统数据可为例如由操作系统所产生的数据或系统元数据的系统超级块。文件系统可进一步将ic管芯的第三区(例如,存储器单元群组)分配给与第三流id相关联的第三文件。文件系统可接着基于第三流id使得将第三文件顺序写入到ic管芯的第三区。第一区、第二区和第三区中的每一个可在zns存储器装置的不同位置处,但仍可各自个别地顺序写入。一旦区(例如,第一区)变得完全写入,文件系统就可分配新区(例如,第四区),特定数据类型(例如,第一数据类型)的文件可继续顺序写入到所述新区。在这样做时,文件系统可将文件(或文件的块群组)指派给已指派给第四区的第四流id,因此现在将第一文件分配给第四区。24.本公开的优点包含但不限于显著最小化垃圾收集(限于元数据)和减少的写入放大,这归因于按区顺序地在群组中写入类似数据类型文件。另外,针对不同数据类型(例如,根据流id)跨多个区进行写入的负载均衡实现可预测写入性能,其中写入通常为当前文件系统中的瓶颈。因为将数据类型文件组织成流且引导待在识别出的区处写入的那些流是在主机的文件系统处进行(包含由主机操作系统的内核进行的zns装置映射能力),所以优点还包含显著映射开销减少以及否则将进行以在电力故障/关机的情况下保持映射数据结构的周期性快照和记录的减少。对于下文中论述的存储器分配和映射到存储器装置的领域的技术人员将显而易见其它优点。25.图1a说明根据本公开的一些实施例的包含存储器子系统110的实例计算环境100。存储器子系统110可包含媒体,例如一或多个易失性存储器装置(例如,存储器装置140)、一或多个非易失性存储器装置(例如,存储器装置130)或这种的组合。每一存储器装置130或140可为一或多个存储器组件。26.存储器子系统110可为存储装置、存储器模块,或存储装置与存储器模块的混合。存储装置的实例包含固态驱动器(ssd)、快闪驱动器、通用串行总线(usb)快闪驱动器、嵌入式多媒体控制器(emmc)驱动器、通用快闪存储器(ufs)驱动器、安全数字(sd)卡和硬盘驱动器(hdd)。存储器模块的实例包含双列直插式存储器模块(dimm)、小型dimm(so-dimm)和各种类型的非易失性双列直插式存储器模块(nvdimm)。27.计算系统100可为计算装置,例如台式计算机、膝上型计算机、网络服务器、移动装置、交通工具(例如,飞机、无人机、火车、汽车或其它运输工具)、具有物联网(iot)功能的装置、嵌入式计算机(例如,交通工具、工业设备或联网商业装置中包含的嵌入式计算机),或nand)和3d交叉点非易失性存储器单元阵列,但存储器装置130可基于任何其它类型的非易失性存储器,例如只读存储器(rom)、相变存储器(pcm)、自选存储器、其它基于硫属化物的存储器、铁电晶体管随机存取存储器(fetram)、铁电随机存取存储器(feram)、磁随机存取存储器(mram)、自旋转移力矩(stt)-mram、导电桥接ram(cbram)、电阻性随机存取存储器(rram)、基于氧化物的rram(oxram)、或非(nor)快闪存储器,和电可擦除可编程只读存储器(eeprom)。35.存储器子系统控制器115(或为简单起见,控制器115)可与存储器装置130通信以进行操作,例如在存储器装置130处读取数据、写入数据或擦除数据和其它这种操作。存储器子系统控制器115可包含硬件,例如一或多个集成电路和/或离散组件、缓冲器存储器,或其组合。硬件可包含具有进行本文中所描述的操作的专用(即,硬译码)逻辑的数字电路系统。存储器子系统控制器115可为微控制器、专用逻辑电路系统(例如,现场可编程门阵列(fpga)、专用集成电路(asic)等)或另一合适处理器。36.存储器子系统控制器115可包含处理装置,其包含配置成执行存储在本地存储器119中的指令的一或多个处理器(例如,处理器117)。在所说明的实例中,存储器子系统控制器115的本地存储器119包含配置成存储指令的嵌入式存储器,所述指令用于进行控制存储器子系统110的操作(包含处置存储器子系统110与主机系统120之间的通信)的各种过程、操作、逻辑流程和例程。37.在一些实施例中,本地存储器119可包含存储器寄存器,所述存储器寄存器存储存储器指针、所提取数据等。本地存储器119还可包含用于存储微码的只读存储器(rom)。虽然图1中的实例存储器子系统110已说明为包含存储器子系统控制器115,但在本公开的另一实施例中,存储器子系统110不包含存储器子系统控制器115,且可改为依赖于(例如,由外部主机或由与存储器子系统分离的处理器或控制器提供的)外部控制。38.一般来说,存储器子系统控制器115可从主机系统120接收命令或操作且可将所述命令或操作转换成指令或适当的命令,以实现对存储器装置130的所需存取。存储器子系统控制器115可负责其它操作,例如耗损均衡操作、垃圾收集操作、错误检测和错误校正码(ecc)操作、加密操作、高速缓存操作和与存储器装置130相关联的逻辑块地址(例如,逻辑块地址(lba)、名字空间)与物理地址(例如,物理块地址)之间的地址转译。存储器子系统控制器115可进一步包含主机接口电路系统以经由物理主机接口与主机系统120通信。主机接口电路系统可将从主机系统接收到的命令转换成命令指令以存取存储器装置130,以及将与存储器装置130相关联的响应转换成用于主机系统120的信息。39.存储器子系统110还可包含未说明的额外电路系统或组件。在一些实施例中,存储器子系统110可包含高速缓存或缓冲器(例如,dram)和地址电路系统(例如,行解码器和列解码器),其可从存储器子系统控制器115接收地址且对地址进行解码以存取存储器装置130。40.在一些实施例中,存储器装置130包含本地媒体控制器135,所述本地媒体控制器135结合存储器子系统控制器115操作以对存储器装置130的一或多个存储器单元执行操作。外部控制器(例如,存储器子系统控制器115)可在外部管理存储器装置130(例如,对存储器装置130进行媒体管理操作)。在一些实施例中,存储器子系统110为受管理存储器装置,其为具有在管芯上的控制逻辑(例如,本地媒体控制器135)和用于同一存储器装置封装内的存储器管理的控制器(例如,存储器子系统控制器115)的原始存储器装置130。受管理存储器装置的实例为受管理nand(mnand)装置。41.计算系统100包含主机系统120中的文件系统124,所述文件系统124配置有贯穿图式在本文中论述的文件组织和存储分配功能性。在一些实施例中,主机系统120包含文件组织和存储分配功能性的至少一部分。在其它实施例中,或组合地,主机系统120的控制器115和/或处理装置包含文件组织和存储分配功能性的至少一部分。举例来说,主机系统120的控制器和处理装置(处理器)可配置成执行存储于存储器中的指令以用于进行本文中所描述的文件组织和存储分配功能性的操作。42.图1b为根据一些实施例的图1a的计算系统100的详细框图。在各种实施例中,主机系统120包含处理装置122、高速缓存123和操作系统150,所述操作系统150具有文件系统124(例如,主机文件系统)、一或多个应用程序126和内核128。内核128可包含装置映射逻辑133。在一些实施例中,文件系统124包含文件应用程序编程接口(api)138、流指派器142、存储分配器146和垃圾收集器(gc)148。垃圾收集器148可进行可擦除和再次写入的存储器的失效物理块的垃圾收集,如cow架构中的客户。在实施例中,处理装置122进行指令以执行内核128,例如操作系统150的内核。文件系统124和应用程序126可在内核128上运行,所述内核128可视为操作系统150的控制器。43.在各种实施例中,计算系统100包含与顺序名字空间(例如,zns)相关联的存储器装置130a和与非顺序名字空间(例如,随机ns)相关联的存储器装置130b。在一个实施例中,存储器装置130a为实施如由nvmexpresstm(nvmetm)组织定义的分区名字空间命令集的分区名字空间(zns)固态装置。存储器装置130a可为先前所提及的包含多个ic管芯的存储装置。顺序写入到区(例如,区0、区1……区n-1)(其在本文中也称为存储器单元群组)通常从ic管芯的顶部(或最小地址)到ic管芯的底部(或最大地址)顺序进行,这由已写入到所说明区的图案化数据块说明。在这些实施例中,内核128通过顺序关系(例如,通过编程以存取存储器装置130a的多个ic管芯内的区(或存储器单元群组)的顺序物理地址)将lba空间的逻辑块编号(或地址)跟踪到存储器装置130a的zns。44.到存储器装置130a的区的写入指针(wp)可存储在高速缓存123中且易于存取以确定将io写入请求引导到wp且因此是顺序的,还是未引导到wp且因此是非顺序的。出于存储器装置130a内的存储空间分配(其同样是顺序的(例如,在每一区的wp之后覆盖物理地址的连续范围))的目的,还可使所述wp可用于文件系统124,且因此在稍后时间不必覆写。45.在各种实施例中,应用程序126包含不同类型的软件程序或架构,所述软件程序或架构相对于计算系统100的硬件和支持软件以不同方式起作用。在一个实施例中,应用程序126包含例如基于日志结构合并(lsm)的架构(例如数据库(例如,apachecassandratm))、分级事件驱动的架构(例如,seda)、分布式存储和复制架构(例如,亚马逊的dynamo)、数据和存储引擎模型(例如,谷歌的bigtable),或设计成处理和组织结构化数据(包含大数据)的其它这种存储引擎。在一些实施例中,使用基于lsm的架构作为实例,应用程序126处置含有不同数据类型的数据和/或元数据的各种文件(参见图2)。每一应用程序126可因此产生、存取和/或管理一或多个数据类型的文件。46.在一些实施例中,文件api138编程以确定关于来自各种来源的不同文件的信息(例如,元数据)(包含来自应用程序126的不同文件的信息(也称为用户数据))、操作系统文件(例如,数据的超级块、系统元数据和其类似物)和文件系统元数据,其将参考图2更详细地论述。通过存取关于不同数据类型的这些各种文件的这种元数据,文件api138能够帮助文件系统124相对于各种文件或块群组进行组织和存储分配(在存储器装置130a中)。47.举例来说,在这些实施例中,流指派器142将不同类型的数据(例如,存储于不同文件或块群组中)指派给不同流(例如,流id),所述不同流中的每一个分配给存储器装置130a的ic管芯中的不同特定系列的物理地址,在所述不同特定系列的物理地址中将写入块群组。块群组(bg)可理解为分配给存储器装置130a的连续区域的文件(例如,一系列lba)的连续部分(或信息块(chunk)),所述连续区域保留用于文件系统124中的文件。这一连续区域可表示为计数键存储器装置上的块编号(例如,物理地址)或轨道的范围。可将较大文件分割成个别地跟踪的块群组,以使得在必要的一系列分配和写入到存储器装置130a的文件的分配和管理可行。48.作为实例,在b树文件系统(btrfs)文件系统中的块群组(bg)内部分配盘区(extent),所述文件系统开发以在linux内核上运行。文件可由零个或更多个盘区组成,例如,文件在足够小且存在于索引节点内部的情况下不由盘区组成。举例来说,假设将10千兆字节(gb)的大文件分块为128兆字节(mb)的片段。可将多个128mb信息块分组在一起作为到链接到较大文件且包含元数据的盘区地图的盘区。文件系统124可构建和保持盘区地图以管理这些盘区或块群组。在一些实施例中,盘区树意图将存储器装置130a的可用存储划分成数个灵活分配策略。每一盘区树可拥有底层ic管芯的区段,且可指派给一系列(或单个)树根、目录或索引节点(inode)。49.索引节点为描述例如文件或目录的文件系统对象的unix式文件系统中的数据结构。每一索引节点存储对象的数据的属性和磁盘块位置。目录为结构化数据,其含有自身、其父级和其子级中的每一个的条目。策略可例如引导给定分配如何跨可用盘区树扩散,从而允许管理员引导文件系统124的哪些部分条带化、成镜像或限制于给定存储器装置。50.在各种实施例中,当分配每一区时,流指派器142还可将流id指派给每一区(例如,存储器单元群组)。为了这样做,内核128可(根据物理地址)将区映射的可见性提供到文件系统124。为了跟踪待分配给特定区(例如,待写入为数据群组或流)的特定数据类型的文件(和/或块群组),流指派器142还可使文件(和块群组)与指派给特定区的特定流id相关联。在一个实施例中,将特定流id添加到文件的文件名称或添加到块群组的元数据。在另一实施例中,将特定流id添加到文件或块群组的结构化部分,例如,添加到构建到每一文件或块群组中的元数据结构。设想流id关联的其它方法。51.如所论述,流指派器142(和/或分配器146)可使用已指派给特定区的特定流id将分配给特定数据类型的块群组与所述区相关联。以这一方式,块群组变得与区相关联,例如经由识别基于zns的存储管理内的区的特定流id。文件系统124可结合将相同数据类型的文件(和/或块群组)分配给特定区的组织结构进行这一功能,其中每一区可包含相同数据类型的一或多个块群组。在一个实施例中,在块群组与所分配区之间存在一对一对应关系。文件可包含例如数据文件、索引节点或树根、目录和能够封装数据/元数据且写入到ic管芯的其它数据结构或对象。在文件分割成块群组的情况下,文件系统124可将流id指派给与识别出的区相关联的这些块群组中的每一个,块群组分配给所述识别出的区。当本文中论述将文件分配给存储器装置130a的ic管芯时,将组成那些文件的任何块群组的分配理解为相同或类似的。52.在各种实施例中,存储分配器146根据与文件相关联的流id将文件(或块群组)分配给区(或存储器单元群组)。举例来说,存储分配器146可将特定(第一)文件分配给已由流指派器142指派第一流id的第一区。为了这样做,文件系统124可使第一文件与第一流id相关联。以这一方式,作为特定流的部分(由流id确定)的文件(或块群组)不断地写入到指派给特定流id的对应区。53.在产生对个别文件(或块群组)的个别写入io请求时,文件系统124可存取文件名内的流id或每一文件的元数据以确定所述文件与哪一区相关联。存储分配器146可接着检查相关联区中是否存在可用的存储空间。如果存在用于文件(或块群组)的足够可用空间,那么存储存储器146可在相关联区或存储器单元群组内分配超出wp的顺序写入文件的物理地址的连续范围(例如,盘区)。在成功地分配空间后,文件系统124即可接着产生针对相关联区中的物理地址的连续范围的io写入请求。将参考图3更详细地论述用于块群组的这一文件分配算法。通过在每一区中的wp之后首先分配物理地址的连续范围,io写入请求可相应地发布为顺序(zns)io写入请求且避免数据的不必要覆写或非顺序io请求的处置。54.图2为说明根据各种实施例的包含流标识符(id)与数据类型的和流id与特定区(或存储器单元群组)的主机文件系统关联的计算系统200的示意图。在各种实施例中,计算系统200包含操作系统250的文件系统224、至少一个应用程序226和内核228,所述文件系统224、至少一个应用程序226和内核228可由例如处理装置122(图1b)的处理装置执行。在一个实施例中,文件系统224为图1b的文件系统124且内核228为图1b的内核128。在一些实施例中,应用程序226为参考图1b所论述的应用程序126中的一个。计算系统200可进一步包含存储器装置230a,所述存储器装置230a可为具有类似于存储器装置130a(图1b)的多个ic管芯的非易失性存储器装置。55.出于解释的目的,应用程序226为基于lsm架构的数据库(例如cassandratm)或类似软件应用程序。因此,在这一实施例中,应用程序226处置数个不同数据类型的文件,包含例如管理文件203、数据文件205、提交日志207和系统日志209。提交日志207可为由数据库应用程序进行的事务的记录。56.在一些实施例中,文件系统224可管理和进行针对数个数据类型的分配,包含但不限于(由操作系统250所产生的)数据和系统元数据215的超级块210、文件系统(fs)元数据218(例如,索引节点、树根、盘区地图和其类似物),和用户数据220(其在这一实例中为不同类型的盘区)。由应用程序226所产生的文件可与用户数据220相关联。57.如图2中所说明,文件系统224可将每一数据类型的文件分割成不同块群组(bg)或块群组的系列,且可将每一块群组分配给存储器装置230a中的不同区(例如,存储器单元群组),从而针对作为单独地写入到所指派区的每一数据类型产生数据流(或元数据)作为群组。如参考图1b所论述,可将流id指派给每一块群组且指派给块群组所分配给的区。所分割文件还可与相同流id相关联,例如,通过以某一方式用流id标记文件。以这一方式,块群组与区之间的映射是传递性且笔直向前的,且顺序写入到区可根据块群组(或文件)跨ic管芯条带化,从而产生增强性能的负载均衡。同时,因为每一块群组具有相同数据类型,所以写入到每一区的数据具有相同类型(或来自相同应用程序且因此具有数据定位)、具有类似寿命,且很可能出于高效垃圾收集的目的以约相同的速率修改。58.虽然超级块210的文件/bg、系统元数据214、(fs元数据218的)索引节点和(fs元数据218的)盘区地图可各自指派给单独的流(例如,不同流id),但用户数据220的文件/bg可包含可单独地指派给不同流id的多个数据类型。表1说明在不同实施例中对与应用程序226相关联的不同类型的用户数据220的可能流id指派。59.数据类型流id管理文件0提交日志1系统日志2数据目录群组基于lsmid,例如,3+60.表161.每一lsmid可与不同数据目录相关联,且因此指派单独流id。设想对不同数据类型的额外类型的流id指派。62.在各种实施例中,文件系统224产生到超出当前wp的物理地址的所分配连续范围的io写入请求。在一些实施例中,内核228可使用装置映射逻辑133拦截和引导这些io写入请求以在当前区wp处开始顺序写入到恰当区,否则将io写入请求处置为非顺序写入请求。在其它实施例中,装置映射逻辑133集成在文件系统224内,所述文件系统224可直接管理到恰当区的装置映射。63.一旦区变得完全写入,例如,不存在用于进一步顺序io写入的空间,文件系统224就可分配特定数据类型的文件/bg可继续顺序写入的新区。假定向变满的区指派第一流id(例如,流id_0),且将第一文件/bg分配给具有第一流id的区。响应于存储器单元群组变得完全写入,文件系统224可将ic管芯的第二存储器单元群组(新区)分配给文件/bg。文件系统224可进一步将指派给新(例如,第二)区的第二流指派给第一文件/bg。文件系统224可进一步基于第二流id使得将文件/bg中的额外文件/bg顺序写入到第二存储器单元群组。64.图3为根据一些实施例的用于将作为文件的连续部分的块群组分配给存储器单元群组(或区)的方法300的流程图。方法300可由处理逻辑进行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法300由图1a至2的主机系统120(例如,经由由处理装置122对文件系统124或224的执行)进行。虽然以特定顺序或次序展示,但除非另外规定,否则所述过程的次序可修改。因此,应理解所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,可在各种实施例中省略一或多个过程。因此,在每一实施例中并非需要全部过程。其它过程流程是可能的。65.在操作310处,处理逻辑检索待写入到存储器装置的(例如,存储器装置130a或230a的)ic管芯的块群组(bg)。块群组可为从待写入到存储器装置的文件分割的连续部分。66.在操作320处,处理逻辑决定是否将块群组分配给数据流。为了这样做,处理逻辑可例如存取与bg相关联的块群组元数据以根据数据类型确定指派给bg的与文件相关联的流标识符(id)。67.响应于检索流id,在操作330处,处理逻辑确定将写入bg的存储器单元群组(区)是否存在可用空间。如果存在空间,那么在操作340处,处理逻辑在块群组元数据内存取与已指派流id的存储器单元群组相关联的写入指针。另外,在操作345处,处理逻辑在存储器单元群组内分配超出写入指针的顺序写入bg的物理地址的连续范围。68.在一些实施例中,处理逻辑还可经由流id与块群组和与存储器单元群组的关联将存储器单元群组指派给与数据类型相关联的文件。处理逻辑可进一步产生将使得在写入指针处开始将块群组顺序写入到存储器单元群组的物理地址的连续范围的输入-输出(io)写入请求。69.返回操作320处,响应于文件的块群组尚未分配给流(例如,块群组元数据不含有流id),或返回操作330处,响应于文件所分配给的存储器单元群组中不存在可用空间,处理逻辑过渡到操作335。在操作335处,处理逻辑确定是否存在可用于新分配(例如,分配新的块群组)的第二存储器单元群组。如果不存在,那么在操作350处,处理逻辑进行旧式块群组分配,以包含垃圾收集、块分段、随机写入和其类似物。70.如果在操作335处,存在具有用于bg分配的空间的可用第二存储器单元群组,那么在操作360处,处理逻辑将bg分配给第二存储器单元群组(例如,可用区)。在操作365处,处理逻辑将与第二存储器单元群组相关联的第二流id指派给块群组。71.方法300接着可循环回到操作330,其中处理逻辑确定第二存储器单元群组(可用区)中存在可用的可分配空间。在操作340处,处理逻辑在块群组元数据内存取与第二存储器单元群组相关联的第二写入指针。并且,在操作345处,处理逻辑在第二存储器单元群组内分配超出第二写入指针的顺序写入块群组的物理地址的连续范围。72.方法300可循环回到操作310,其中处理逻辑检索待写入到存储器装置的ic管芯的第二块群组(bg),所述第二块群组与第二文件相关联。在一个实施例中,在操作320处,处理逻辑存取与第二块群组相关联的块群组元数据以确定第二块群组尚未分配给存储器单元群组,从而使得处理逻辑再次过渡到操作335。在操作335处,处理逻辑确定存在可用于新分配的第二存储器单元群组(例如,其可为可用区)。在操作360处,处理逻辑将第二块群组分配给第二存储器单元群组。在操作365处,处理逻辑将与第二存储器单元群组相关联的第二流id指派给第二块群组。73.方法300可再次循环回到操作330,在操作330处,处理逻辑确定第二存储器单元群组中存在可用的可分配空间。在操作340处,处理逻辑在与第二块群组相关联的块群组元数据内存取与第二存储器单元群组相关联的第二写入指针。在操作345处,处理逻辑在第二存储器单元群组内分配超出第二写入指针的顺序写入第二块群组的物理地址的连续范围。74.图4为根据实施例的用于将流id指派给应用程序数据类型以使得数据类型的文件与指派给顺序写入的存储器装置中的存储器单元群组的流id相关联的方法的流程图。方法400可由处理逻辑进行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法400由图1a至2的主机系统120(例如,经由由处理装置122对文件系统124或224的执行)进行。虽然以特定顺序或次序展示,但除非另外规定,否则所述过程的次序可修改。因此,应理解所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,可在各种实施例中省略一或多个过程。因此,在每一实施例中并非需要全部过程。其它过程流程是可能的。75.在操作410处,处理逻辑将第一流标识符(id)指派给由操作系统内的应用程序的执行所产生的第一数据类型。应用程序可为在操作系统上运行的软件程序。在一个实施例中,应用程序为基于lsm架构的数据库。76.在操作420处,处理逻辑使由应用程序所产生的第一文件(或bg)与第一流id相关联,其中第一文件(或bg)与第一数据类型相关联。参考图1b至2论述可出于指派不同流id的目的而视为不同数据类型的各种用户数据。77.在操作430处,处理逻辑将多个ic管芯的第一存储器单元群组分配给第一文件(或bg),其中向第一存储器单元群组指派第一流id。第一存储器单元群组可为例如存储器装置130a或230a的存储器装置的第一区或连续区域。78.在操作440处,处理逻辑基于第一流id使得将第一文件顺序写入到多个ic管芯的第一存储器单元群组。79.在操作450处,处理逻辑例如在进一步将第一文件分配给另一存储器单元群组已发生之前确定第一存储器单元群组是否变得完全写入。如果答案为否,那么方法400循环回到操作430且继续对第一存储器单元群组的分配和写入,如前所述。80.如果在操作450处,答案为是,那么在操作460处,处理逻辑将多个管芯的第二存储器单元群组分配给第一文件,其中向第二存储器单元群组指派第二流id。在操作470处,处理逻辑使第一文件与第二流id相关联,且在操作480处,处理逻辑基于第二流id使得第一文件中的第一文件顺序写入到第二存储器单元群组。81.在一些实施例中,应用程序为处置多个数据类型的基于日志结构合并(lsm)的架构,所述多个数据类型包含第一数据类型,例如管理数据、特定类型的数据文件的特定数据目录、提交日志或基于系统的日志。在这些实施例中,处理逻辑可进一步将另一(例如,第三)流id指派给多个数据类型中的第三数据类型,且使第三文件与第三流id相关联,其中第三文件对应于第三数据类型。处理逻辑可进一步将多个ic管芯的第三存储器单元群组分配给第三文件,其中向第三存储器单元群组指派第三流id。处理逻辑可进一步基于第三流id使得将第三文件顺序写入到多个ic管芯的第三存储器单元群组。82.在一些实施例中,由处理逻辑进行的操作由操作系统的文件系统执行。处理逻辑可进一步将第四流id指派给文件系统且使由文件系统所产生的文件系统元数据的第四文件与第四流id相关联。处理逻辑可进一步将多个管芯的第四存储器单元群组分配给与第四流id相关联的第四文件,其中向第四存储器单元群组指派第四流id。处理逻辑可进一步基于第四流id使得将第四文件顺序写入到多个ic管芯的第四存储器单元群组。在一些实施例中,文件系统元数据包含索引节点、盘区树或盘区地图中的至少一个。83.在一些实施例中,所进行的操作由操作系统的文件系统执行。处理逻辑可进一步将第五流id指派给由操作系统的执行所产生的系统元数据,且使含有系统元数据的第五文件与第五流id相关联。处理逻辑可进一步将多个ic管芯的第五存储器单元群组分配给第五文件,其中向第五存储器单元群组指派第五流id。处理逻辑可进一步基于第五流id使得将第五文件顺序写入到多个ic管芯的第五存储器单元群组。84.图5为根据实施例的用于将流id指派给操作系统数据以使得系统数据与指派给顺序写入的存储器装置中的存储器单元群组的流id相关联的方法500的流程图。方法500可由处理逻辑进行,所述处理逻辑可包含硬件(例如,处理装置、电路系统、专用逻辑、可编程逻辑、微码、装置的硬件、集成电路等)、软件(例如,在处理装置上运行或执行的指令)或其组合。在一些实施例中,方法500由图1a至2的主机系统120(例如,经由由处理装置122对文件系统124或224的执行)进行。虽然以特定顺序或次序展示,但除非另外规定,否则所述过程的次序可修改。因此,应理解所说明实施例仅为实例,且所说明过程可以不同次序进行,且一些过程可并行地进行。另外,可在各种实施例中省略一或多个过程。因此,在每一实施例中并非需要全部过程。其它过程流程是可能的。85.在操作510处,处理逻辑将第一流标识符(id)指派给归因于操作系统的执行所产生的数据类型。这一数据类型可包含例如系统数据。由处理逻辑进行的操作可由操作系统的文件系统执行,且系统数据可为由操作系统所产生的数据或系统元数据的超级块中的一个。86.在操作520处,处理逻辑使由操作系统所产生的系统数据的第一文件与第一流id相关联,其中第一文件与数据类型相关联。87.在操作530处,处理逻辑将多个ic管芯的第一存储器单元群组分配给第一文件,其中向第一存储器单元群组指派第一流id。88.在操作540处,处理逻辑基于第一流id使得将第一文件顺序写入到多个ic管芯的第一存储器单元群组。89.图6说明计算机系统600的实例机器,可在其内执行用于使得机器进行本文中所论述的方法中的任何一或多种的指令集。在一些实施例中,计算机系统600可对应于主机系统(例如,图1a至1b的主机系统120),其包含、耦合到或利用存储器子系统(例如,图1a的存储器子系统110)。在替代性实施例中,机器可连接(例如,联网)到lan、内联网、外联网和/或互联网中的其它机器。机器可作为对等(或分散式)网络环境中的对等机器或作为云计算基础设施或环境中的服务器或客户端机器而在客户端-服务器网络环境中的服务器或客户端机器的容量中操作。90.机器可为个人计算机(pc)、平板pc、机顶盒(stb)、个人数字助理(pda)、蜂窝式电话、网络器具、服务器、网络路由器、交换机或桥,或能够(顺序或以其它方式)执行指定将由所述机器采取的动作的指令集的任何机器。另外,虽然说明单个机器,但还应认为术语“机器”包含机器的任何集合,所述机器单独地或共同地执行指令集(或多个指令集)以进行本文中所论述的方法中的任何一或多种。91.实例计算机系统600包含处理装置602、主存储器604(例如,只读存储器(rom)、快闪存储器、动态随机存取存储器(dram)(例如同步dram(sdram)或rambusdram(rdram))等)、静态存储器606(例如,快闪存储器、静态随机存取存储器(sram)等)和数据存储系统618,其经由总线630彼此通信。92.处理装置602表示一或多个通用处理装置,例如微处理器、中央处理单元或其类似物。更特定来说,处理装置可为复杂指令集计算(cisc)微处理器、精简指令集计算(risc)微处理器、超长指令字(vliw)微处理器或实施其它指令集的处理器,或实施指令集的组合的处理器。处理装置602还可为一或多个专用处理装置,例如专用集成电路(asic)、现场可编程门阵列(fpga)、数字信号处理器(dsp)、网络处理器或其类似物。处理装置602配置成执行用于进行本文中所论述的操作和步骤的指令626。计算机系统600可进一步包含网络接口装置608以在网络620上通信。93.数据存储系统618可包含机器可读存储媒体624(也称为非暂时性计算机可读媒体),在其上存储有一或多个指令626集或体现本文中所描述的方法或功能中的任何一或多种的软件。指令626还可在其由计算机系统600执行期间完全或至少部分地驻存在主存储器604内和/或处理装置602内,所述主存储器604和处理装置602也构成机器可读存储媒体。机器可读存储媒体624、数据存储系统618和/或主存储器604可对应于图1a的存储器子系统110。94.在一个实施例中,指令626包含用以实施对应于图1a至1b的文件系统124的功能性的指令。虽然在实例实施例中机器可读存储媒体624展示为单个媒体,但应认为术语“非暂时性机器可读存储媒体”包含存储一或多个指令集的单个媒体或多个媒体。还应认为术语“机器可读存储媒体”包含能够存储或编码供机器执行的指令集且使得机器进行本公开的方法中的任何一或多种的任何媒体。因此,应认为术语“机器可读存储媒体”包含但不限于固态存储器、光学媒体和磁性媒体。95.已关于计算机存储器内的数据位的操作的算法和符号表示而呈现先前详细描述的一些部分。这些算法描述和表示是数据处理领域的技术人员用以将其工作的主旨最有效地传达给所属领域的其它技术人员的方式。在这里,且一般来说,将算法构想为产生所需结果的操作的自洽序列。操作是需要对物理量进行物理操纵的操作。通常(但未必),这些量呈能够存储、组合、比较和以其它方式操纵的电或磁信号的形式。有时,主要出于通用的原因,已经证明将这些信号称为位、值、元件、符号、字符、术语、数目或其类似物是方便的。96.然而,应牢记,所有这些和类似术语应与适当物理量相关联,且仅是应用于这些量的方便标签。本公开可指操纵计算机系统的寄存器和存储器内的表示为物理(电子)量的数据且将所述数据变换成计算机系统存储器或寄存器或其它这种信息存储系统内的类似地表示为物理量的其它数据的计算机系统或类似电子计算装置的动作和过程。97.本公开还涉及用于进行本文中的操作的设备。这一设备可出于既定目的而专门构造,或其可包含通过存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这种计算机程序可存储在计算机可读存储媒体中,例如但不限于任何类型的盘,包含软盘、光盘、cd-rom和磁性光盘、只读存储器(rom)、随机存取存储器(ram)、eprom、eeprom、磁卡或光卡,或适合于存储电子指令的任何类型的媒体,其各自耦合到计算机系统总线。98.本文中呈现的算法和显示本质上并不与任何特定计算机或另一设备相关。各种通用系统可与根据本文中的教示的程序一起使用,或可证明构造用以进行所述方法更加专用的设备是方便的。将如下文描述中所阐述而表现用于各种这些系统的结构。另外,不参考任何特定编程语言来描述本公开。应了解,可使用各种编程语言来实施如本文中所描述的本公开的教示。99.本公开可提供为计算机程序产品或软件,其可包含在其上存储有可用于编程计算机系统(或其它电子装置)以进行根据本公开的过程的指令的机器可读媒体。机器可读媒体包含用于以机器(例如,计算机)可读的形式存储信息的任何机构。在一些实施例中,机器可读(例如,非暂时性计算机可读)媒体包含机器(例如,计算机)可读存储媒体,例如只读存储器(“rom”)、随机存取存储器(“ram”)、磁盘存储媒体、光学存储媒体、快闪存储器组件等。100.在前述说明书中,本公开的实施例已经参考其具体实例实施例进行描述。将显而易见的是,可在不脱离如所附权利要求书中所阐述的本公开的实施例的更广精神和范围的情况下对其进行各种修改。因此,应在说明性意义上而非限制性意义上看待本说明书和附图。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1