大容量存储器装置、包括其的系统以及访问其的方法与流程

文档序号:11407064阅读:161来源:国知局
大容量存储器装置、包括其的系统以及访问其的方法与流程

本申请要求于2016年2月24日提交的标题为“针对sr-iovnvmessd的虚拟机感知ftl设计”的第62/299,502号美国临时申请的优先权和权益,所述美国临时申请的全部内容通过引用包含于此。

根据本发明的实施例的一个或多个方面涉及大容量存储器装置,更具体地说,涉及一种用于通过虚拟闪存转换层实例提供对大容量存储器的访问的系统和方法。



背景技术:

在具有固态驱动器的主机运行多个虚拟机的系统中,单根输入/输出虚拟化(sr-iov)可允许每个虚拟机通过模拟针对每个虚拟机的单独的大容量存储器装置的接口与持久性存储器进行交互。然而,如果接口使用固态驱动器中的共享闪存转换层,则与一个虚拟机进行交互的持久性存储器接口的性能可能受其他虚拟机与持久性存储器之间的交互的影响,或被其他虚拟机与持久性存储器之间的交互劣化。

因此,需要在虚拟机各自的持久性存储器访问操作中减少虚拟机的交互的系统和方法。



技术实现要素:

本公开的实施例的多个方面针对作为虚拟机感知的虚拟闪存转换层。

根据本发明的实施例,提供一种大容量存储器装置,包括:闪存,包括多个物理块,所述多个物理块中的每个物理块包括多个物理页,所述多个物理块包括第一组物理块和第二组物理块,第一组物理块和第二组物理块不相交;控制器,被配置为实施第一虚拟闪存转换层实例和第二虚拟闪存转换层实例,第一虚拟闪存转换层实例被配置为接收指向逻辑页码的存储器访问请求,并且产生指向第一组物理块内的物理页码的存储器访问请求,第二虚拟闪存转换层实例被配置为接收指向逻辑页码的存储器访问请求,并且产生指向第二组物理块内的物理页码的存储器访问请求。

在一个实施例中,第一虚拟闪存转换层实例和第二虚拟闪存转换层实例中的每个还被配置为对它各自的组物理块执行垃圾回收操作。

在一个实施例中,第一虚拟闪存转换层实例具有第一权重,第二虚拟闪存转换层实例具有第二权重,第一组物理块包括用于垃圾回收操作的为数据的存储保留的多个第一预留空间块,第二组物理块包括用于垃圾回收操作的为数据的存储保留的多个第二预留空间块,第一比率与第二比率的乘积等于第一权重与第二权重的比率,其中,第一比率是所述多个第一预留空间块中的物理块的数量与第一组物理块中的物理块的数量的比,第二比率是第二组物理块中的物理块的数量与所述多个第二预留空间块中的物理块的数量的比。

在一个实施例中,所述装置还包括一个或多个第一颗粒封装以及一个或多个第二颗粒封装,其中,每个第一颗粒封装包括被分配到第一虚拟闪存转换层实例的页,每个第二颗粒封装不包括被分配到第一虚拟闪存转换层实例的任何页,控制器还包括被配置为响应于存储器访问请求而将页分配到第一虚拟闪存转换层实例的页分配器,将页分配到第一虚拟闪存转换层实例的操作包括:当在所述一个或多个第一颗粒封装中的任意第一颗粒封装中,页是可用的时,分配所述一个或多个第一颗粒封装中的颗粒封装中的页;当在所述一个或多个第一颗粒封装中的任意第一颗粒封装中,没有页是可用的时,分配所述一个或多个第二颗粒封装中的颗粒封装中的页。

根据本发明的实施例,提供一种系统,包括:大容量存储器装置;主机,被配置为连接到大容量存储器装置,主机包括:第一虚拟机,与第一命名空间相关联,并且被配置为将存储器访问请求发送到在大容量存储器装置中被实例化的第一虚拟闪存转换层实例;第二虚拟机,与第二命名空间相关联,并且被配置为将存储器访问请求发送到在大容量存储器装置中被实例化的第二虚拟闪存转换层实例。

在一个实施例中,主机还包括:第三虚拟机,与第二命名空间相关联,并且被配置为将存储器访问请求发送到第二虚拟闪存转换层实例。

在一个实施例中,主机还包括:管理程序,被配置为将与虚拟机的预期写入活动等级成比例的权重分配给第一虚拟机和第二虚拟机中的每个。

在一个实施例中,主机还包括:管理程序,被配置为将与虚拟机的服务的持久性存储质量成比例的权重分配给第一虚拟机和第二虚拟机中的每个。

在一个实施例中,大容量存储器装置包括:闪存,包括多个物理块,所述多个物理块中的每个物理块包括多个物理页,所述多个物理块包括第一组物理块和第二组物理块,第一组物理块和第二组物理块不相交;控制器,被配置为实施第一虚拟闪存转换层实例和第二虚拟闪存转换层实例,第一虚拟闪存转换层实例和第二虚拟闪存转换层实例中的每个还被配置为对它各自的组物理块执行垃圾回收操作。

在一个实施例中,第一虚拟闪存转换层实例具有第一权重,第二虚拟闪存转换层实例具有第二权重,第一组物理块包括用于垃圾回收操作的为数据的存储保留的多个第一预留空间块,第二组物理块包括用于垃圾回收操作的为数据的存储保留的多个第二预留空间块,第二值与第一值的比率等于第一权重与第二权重的比率,第一值是所述多个第二预留空间块中的物理块的数量与第二组物理块中的物理块的数量的比率,第二值是所述多个第一预留空间块中的物理块的数量与第一组物理块中的物理块的数量的比率。

在一个实施例中,大容量存储器装置还包括:一个或多个第一颗粒封装以及一个或多个第二颗粒封装,其中,每个第一颗粒封装包括被分配到第一虚拟闪存转换层实例的页,每个第二颗粒封装不包括被分配到第一虚拟闪存转换层实例的任何页,其中,第一颗粒封装和第二颗粒封装一起包括装置的全部颗粒封装,并包括所述多个物理块,装置还包括被配置为响应于存储器访问请求而将页分配到第一虚拟闪存转换层实例的页分配器,将页分配到第一虚拟闪存转换层实例的操作包括:当在所述一个或多个第一颗粒封装中的任意第一颗粒封装中,页是可用的时,分配所述一个或多个第一颗粒封装中的颗粒封装中的页;当在所述一个或多个第一颗粒封装中的任意第一颗粒封装中,没有页是可用的时,分配所述一个或多个第二颗粒封装中的颗粒封装中的页。

根据本发明的示例实施例,提供一种方法,包括:由包括多个物理块的大容量存储器装置中的第一虚拟闪存转换层实例接收指向第一逻辑页码的第一存储器访问请求;由第一虚拟闪存转换层实例产生指向所述多个物理块的第一子集内的物理页码的存储器访问请求;由大容量存储器装置中的第二虚拟闪存转换层实例接收指向第二逻辑页码的第二存储器访问请求;由第二虚拟闪存转换层实例产生指向所述多个物理块的第二子集内的物理页码的存储器访问请求,第一子集和第二子集不相交。

在一个实施例中,所述方法还包括:由主机创建第一命名空间和第二命名空间;由主机使第一命名空间附属于被配置为与第一虚拟闪存转换层实例交互的第一虚拟功能;由主机使第二命名空间附属于被配置为与第二虚拟闪存转换层实例交互的第二虚拟功能。

在一个实施例中,所述方法还包括:由主机创建第一虚拟机和第二虚拟机,由主机将第一虚拟功能分配到第一虚拟机,由主机将第二虚拟功能分配到第二虚拟机。

在一个实施例中,所述方法还包括:由主机上的客户装置驱动器生成包括第一命名空间的读取请求;由大容量存储器装置通过第一虚拟功能接收读取请求;由第一虚拟闪存转换层实例处理读取请求;通过第一虚拟功能返回读取请求的结果。

在一个实施例中,所述方法还包括:由主机上的客户装置驱动器生成包括将被写入的数据和用于第一命名空间的标识符的写入请求;由大容量存储器装置通过第一虚拟功能接收写入请求;由第一虚拟闪存转换层实例处理写入请求;由第一虚拟闪存转换层实例向大容量存储器装置的页分配器请求与可用于写入的物理页对应的一个或多个物理页码;从页分配器接收一个或多个物理页码;将数据写入到与接收的一个或多个物理页码对应的一个或多个物理页。

在一个实施例中,所述方法还包括:由第一虚拟闪存转换层实例对第一子集执行垃圾回收操作。

在一个实施例中,第一虚拟闪存转换层实例具有第一权重,第二虚拟闪存转换层实例具有第二权重,第一子集包括用于垃圾回收操作的为数据的存储保留的多个第一预留空间块,第二子集包括用于垃圾回收操作的为数据的存储保留的多个第二预留空间块,以下两个比率的乘积等于第一权重与第二权重的比率:所述多个第一预留空间中的物理块的数量与第一子集中的物理块的数量的比率,第二子集中的物理块的数量与所述多个第二预留空间块中的物理块的数量的比率。

附图说明

参照说明书、权利要求和附图,本发明的这些以及其他特征和优点将会被了解和理解,其中:

图1a是根据本发明的实施例的连接到大容量存储装置器的主机的框图;

图1b是与包括现有技术的闪存转换层的大容量存储器装置交互的多个虚拟机的框图;

图2是根据本发明的实施例的与包括多个虚拟闪存转换层实例的大容量存储器装置交互的多个虚拟机的框图;

图3是根据本发明的实施例的通过多个虚拟闪存转换层实例和虚拟机感知nand页分配器与大容量存储器装置交互的多个虚拟机的框图;

图4a是现有技术的闪存转换层、nand页分配器和闪存的多个物理块的框图;

图4b是根据本发明的实施例的与包括多个虚拟闪存转换层实例和虚拟机感知nand页分配器的大容量存储器装置交互的多个虚拟机的框图;

图4c是根据本发明的实施例的与包括多个虚拟闪存转换层实例和虚拟机感知nand页分配器的大容量存储器装置交互的多个虚拟机的框图;

图4d是示出根据本发明的实施例的大容量存储器装置中的颗粒封装和闪存颗粒封装中的闪存块的组织的框图;

图5a是示出根据本发明的实施例的与多个闪存块交互的多个虚拟闪存转换层实例的框图;

图5b是示出根据本发明的实施例的数据移动到预留空间块的数据流图和混合框;

图6a是根据本发明的实施例的装置初始化的流程图;

图6b是根据本发明的实施例的处理读取请求的流程图;

图6c是根据本发明的实施例的处理写入请求的流程图。

具体实施方式

下面阐述的与附图有关的具体实施方式意图作为针对依照本发明提供的固态驱动器(ssd)的虚拟机感知(vm-aware)闪存转换层(ftl)设计的示例实施例的描述,并不意图仅呈现本发明可被构造和利用的形式。该描述阐述与示出的实施例有关的本发明的特征。然而,将理解,可通过同样意图包含在本发明的精神和范围内的不同实施例来实现相同或等同的功能和结构。如本文其他位置所示,相同的元件编号意图指示相同的元件或特征。

图1a示出连接到固态驱动器103的主机102。图1b示出采用单根输入/输出虚拟化非易失性存储器标准固态驱动器(sr-iovnvmessd)的现有技术系统的架构。多个虚拟机100在主机102上运行。主机102可包括处理器(例如,微处理器)和存储器。虚拟机100调用各种虚拟功能105以与持久性存储器交互。虚拟功能105可通过主机102中的客户装置驱动器来提供。如这里所使用的“主机”是连接到并使用一个或多个大容量存储器装置的计算机(例如,服务器)。每个虚拟机可做出存储器访问请求(例如,从持久性存储器读取数据的请求、将数据写入到持久性存储器的请求或在持久性存储器中擦除数据的请求)。可通过调用虚拟功能来做出每个存储器访问请求。持久性存储器可被实现在大容量存储器装置(例如,硬盘驱动器和/或固态驱动器(ssd)和/或usb“棒”或“拇指驱动器”和/或存储卡)上。单根输入/输出虚拟化可用于允许大容量存储器装置在各种外围组件互连标准(pcie)硬件功能之中单独访问它的资源。这些功能可包括pcie物理功能(pf)107和一个或多个pcie虚拟功能105(vf)。每个物理功能107和虚拟功能105可被分配允许输入/输出存储器管理单元(iommu)104区分不同的通信流(trafficstream)的唯一的pciexpress请求者标识符(rid)。因此,将虚拟功能105分配到不同的虚拟机100(vm)可在虚拟机100与大容量存储器装置之间传送数据的同时防止不同的虚拟机100的输入/输出流彼此干扰。

固态驱动器103中的闪存可被组织成物理块110(或“闪存块”)和物理页120。物理块110可以是存储器的一次操作中可擦除的最小单元,物理页120可以是存储器的一次操作中可写入的最小单元。每个物理块110可包括多个物理页120,物理页120的大小可基于实施方式而变化。可通过nand页分配器130来分配闪存中的页。主机102可使用指向逻辑页码的存储器访问请求与大容量存储器装置进行交互(例如,请求在逻辑页码的页中存储的数据、请求向逻辑页码的页写入数据或请求擦除在逻辑页码的页中存储的数据)。因为使用新数据代替先前在相同的位置的数据而将新数据写入到物理页120中可能要求:包括物理页120的全部物理块110的内容被保存在其他位置,物理块110被擦除,以及保存的内容被再次写入到块,所以将逻辑页码直接或静态地映射到物理页码可能是低效的。如这里所使用的“物理页码”是唯一地标识大容量存储器装置内的页的标识符(例如,数字)。

为避免这些繁冗的操作,闪存转换层125可将逻辑页码动态地转换或映射为物理页码。当新数据将被覆写在逻辑页码的页中的数据之上时,闪存转换层125可随后将当前对应于逻辑页码的物理页120标记为无效(而不是擦除包括该物理页120的物理块110),更新从逻辑页码到物理页120的映射以将逻辑页码映射到新的物理页120,并将新数据写入到新的物理页120中。闪存转换层125偶尔可执行被称为“垃圾回收”的操作。在这个操作中,在物理页120的有效内容已经被移动到一个或多个其他物理块110中的其他物理页120之后,包含大比例(例如,超过设置阈值的比例)的已经被标记为无效的物理页120的任意物理块110可被擦除,使得新擦除的物理块110可用于写入新数据。可以以运行在固态驱动器103中的控制器(例如,微控制器)上的软件来实现闪存转换层125。

在一些实施例中,虚拟功能105被分配到不同的虚拟机100,每个虚拟功能与保留在大容量存储器装置上的命名空间(namespace)(例如,图1b中的被称为命名空间a(nsa)和命名空间b(nsb)的命名空间)相关联。在图1b的示例系统中,两个虚拟功能(诸如,虚拟功能1(vf1)和虚拟功能2(vf2))共享一个命名空间(nsb)。可通过调用不同的虚拟功能105来处理来自不同虚拟机100的存储器访问请求。这可导致主机的虚拟机100与大容量存储器装置的主机接口层(hil)之间的输入/输出路径被分开。

然而,被分配到不同的虚拟机100的物理页120可共享物理块110。来自不同的虚拟机100的存储器访问请求可被映射到大容量存储器装置中的由逻辑页码标识的逻辑页,并以指向逻辑页码的存储器访问请求的格式被转发到闪存转换层125。因此,闪存转换层125的输入会缺少链接特定存储器访问请求与它起源于的虚拟机的语义信息。作为这样的结果,例如,来自第一虚拟机(例如,vm1)的写入请求可导致物理页120的无效,这导致影响物理块110的垃圾回收。这可延迟对存储器访问请求(例如,由第二虚拟机(例如,vm2)发送的对逻辑页的读取请求,其中,逻辑页被映射到同一物理块110中的物理页120)的处理。如此,提供到任意虚拟机100的服务的质量可能受由其他虚拟机100发送的存储器访问请求影响(例如,被劣化),并呈现较少的可预测性。

为实现单根输入/输出虚拟化(sr-iov)特征的更好的装置虚拟化,闪存转换层125可被虚拟化。例如,闪存转换层125可被多个虚拟闪存转换层(vftl)实例210代替,使得输入/输出路径针对不同的虚拟机100而在多个虚拟闪存转换层实例210被分开。

参照图2,在一个实施例中,针对每个分配的虚拟功能或命名空间来创建虚拟闪存转换层实例210。来自特定虚拟功能的存储器访问请求与该虚拟功能的命名空间相关联,并被相应地转发到与命名空间相关联的虚拟闪存转换层实例210。与图1b的系统中的情况不同,图2的实施例中的命名空间不被映射到逻辑页码的范围或集合,而是被映射到虚拟闪存转换层实例210。结果,来自不同的虚拟机100的存储器访问请求在虚拟闪存转换层被分开,降低由一个虚拟机提交的存储器访问请求可能对由另一虚拟机接收的服务的质量造成的影响。可通过虚拟机感知nand页分配器230来分配物理页120。

参照图3,在一个实施例中,如上所述,每个虚拟闪存转换层实例210是在运行在大容量存储器装置(例如,固态驱动器103的大容量存储器装置)的控制器上的固件的闪存转换层的软件组件。虚拟闪存转换层实例210可具有现有技术的闪存转换层软件的全部功能,但与这样的闪存转换层软件不同,它可根据虚拟机或虚拟功能命名空间或者根据大容量存储器装置命名空间而被建立或组织。在图3中,存在两个虚拟机100(第一虚拟机vm1和第二虚拟机vm2),每个虚拟机100通过命名空间管理器106被分配单独的装置命名空间。如果第一虚拟机vm1发出存储器访问请求(例如,写入请求),则大容量存储器装置可将访问请求路由到第一虚拟闪存转换层实例210a。写入请求可要求分配可具有8个扇区的大小的逻辑页(和对应的物理页);物理页可通过物理页码来标识。然后,第一虚拟闪存转换层实例210a可对nand页分配器230做出相应存储器的访问请求,其中,nand页分配器230提供与执行写入请求所需的存储器的数量(例如,8个扇区)对应的多个物理页120,然后将写入数据刷新到分配的物理页。存储访问请求还可包括请求分配的物理页的物理页码(ppn)。最后,虚拟闪存转换层实例210a可更新逻辑-物理映射(例如,虚拟机逻辑块地址或逻辑页码到诸如nand闪存页码的物理页码的映射)。另一方面,由第二虚拟机vm2做出的存储器访问请求可被路由到第二虚拟闪存转换层实例210b以作进一步处理。虚拟闪存转换层实例(例如,第一虚拟闪存转换层实例210a和第二虚拟闪存转换层实例210b)可彼此独立,并“感知不到”彼此,就这个意义而言,这些软件元件不需要交换信息或请求。以这种方式,该系统可避免由第一虚拟机vm1做出的存储器访问请求与第二虚拟机vm2做出的存储器访问请求之间的干扰。

参照图4a,如上所述,不可根据到来的存储器访问请求的源而区分现有技术的闪存转换层125和nand页分配器130,例如,来自三个不同的虚拟机100的数据可被写入到同一物理块110。在图4a中,包括来自三个虚拟机100(第一虚拟机vm1、第二虚拟机vm2和第三虚拟机vm3)的数据的页被分别标注为d1、d2和d3,如图所示,在每个物理块110中,来自几个不同的虚拟机100的数据被混合。

参照图4b,相比之下,在本发明的一些实施例中,通过三个分开的各个虚拟闪存转换层实例vftl1、虚拟闪存转换层实例vftl2和虚拟闪存转换层实例vftl3来处理来自三个虚拟机100(第一虚拟机vm1、第二虚拟机vm2和第三虚拟机vm3)的存储器访问请求,其中,虚拟闪存转换层实例vftl1、虚拟闪存转换层实例vftl2和虚拟闪存转换层实例vftl3中的每个向nand页分配器230请求已与它们各自的命名空间(和虚拟机100)相关联的块中的页,或者如果可用的这样的页太少,则向nand页分配器230请求当前不与任何命名空间或虚拟机相关联的块中的页。以这种方式,nand页分配器230被实现为虚拟机感知,结果,在图4b中,来自第一虚拟机vm1、第二虚拟机vm2和第三虚拟机vm3的被分别标注为d1、d2和d3的数据不被混合,并被写入到有区别的物理块110。

参照图4c,在一个实施例中,虚拟机感知nand页分配器230针对每个虚拟闪存转换层实例210保持包括“开放闪存块”(ofb)的列表,其中,ofb是包括空闲页的物理块110。当任意虚拟闪存转换层实例210请求新的物理页码时,虚拟机感知nand页分配器230返回针对该虚拟闪存转换层实例210列出的开放闪存块110内的下一可用的物理页码。如果从虚拟闪存转换层实例210接收到写入请求,并且针对虚拟闪存转换层实例210列出的开放闪存块110没有充足空间,或者如果写入请求的执行导致当前开放闪存块110填满,则虚拟机感知nand页分配器230可分配新的物理块110,以适应写入请求;如果新的物理块110在完成写入请求后仍然部分是空的,则虚拟机感知nand页分配器230可将新的物理块110的地址添加到开放闪存块110的列表。例如,如果图4c的与第二虚拟闪存转换层实例vftl2相关联的开放闪存块110被写入请求填满,使得全部的页被使用,则虚拟机感知nand页分配器230将分配新的物理块110',并将它标识为第二虚拟闪存转换层实例vftl2的开放闪存块。

参照图4d,虚拟机感知nand页分配器230可被配置为分配新的闪存块110以便将不同的虚拟闪存转换层实例210的物理块110优先分配到不同的闪存颗粒封装(package)、颗粒(die)或片(plane)。颗粒封装可被组织成通道(例如,示出的通道#0、通道#1等)。例如,当特定的虚拟闪存转换层实例210请求新的块时,可通过在已包括被分配到虚拟闪存转换层实例210的其他物理块110的包中分配物理块110来完成这样的操作,或者如果没有这样的包具有任何空闲物理块110,则通过在还没有被分配物理块110的包中分配物理块110来完成这样的操作。因此,例如,被分配到第一虚拟闪存转换层实例的第一物理块(图4d中标记为“闪存块1”)可与被分配到第一虚拟闪存转换层实例的其他物理块110一起在大容量存储器装置中的颗粒封装号为0的颗粒封装(pkg#0)中被分配,被分配到第二虚拟闪存转换层实例的第二物理块(图4d中标记为“闪存块2”)可与被分配到第二虚拟闪存转换层实例的其他物理块110一起在大容量存储器装置中的颗粒封装号为1的颗粒封装(pkg#1)中被分配。例如,这些颗粒封装可以是大容量存储器装置(例如,固态驱动器103)中的焊接到印刷电路板(或“印刷线路板)的集成电路。

参照图5a,在一些实施例中,每当空闲闪存块的数量下降到针对大容量存储器装置定义的阈值时,垃圾回收(gc)被触发。每个虚拟闪存转换层实例210通过它自己来管理垃圾回收。在初始化虚拟闪存转换层实例210的同时,针对每个虚拟闪存转换层实例210来分配特定数量的预留空间(overprovision)闪存块110。在垃圾回收操作期间,具有超出设置阈值的无效物理页的比例的物理块可在它们的有效物理页的内容已经首先被移动到其他物理块(即,预留空间块)之后被擦除,并可用于写入。如此,在包括无效的物理页120的物理块110被擦除和再次可用于存储之前,预留空间块可被用于在保留一些存储空间(例如,已经被无效的物理页120中的空间)不使用的同时提供特定的存储量。例如,如图5b中所示,当执行垃圾回收以释放包括若干无效的物理页120的物理块110时,每个虚拟闪存转换层实例210可首先将有效的数据移动到空闲闪存块110,然后擦除被释放的物理块110。预留空间块可在擦除包括无效的页的物理块110之前从包括无效的页的物理块110提供额外的空闲闪存块110,其中,垃圾回收可将有效的数据移动到额外的空闲闪存块110。

在默认情况下,提供给每个闪存转换层实例210的预留空间闪存块110与分配到每个闪存转换层实例210的物理块110的数量成比例。然而,在一些实施例中,可根据分配到每个虚拟闪存转换层实例210的权重来自定义预留空间闪存块100的数量与分配的块的数量的比率(例如,该比率被自定义为与分配到每个虚拟闪存转换层实例210的权重成比例)。例如,第一闪存转换层实例vftl1可具有第一权重,第二闪存转换层实例vftl2可具有第二权重,则第一权重和第二权重的比率可被自定义为等于第一比率与第二比率的乘积,其中,第一比率是第一闪存转换层实例vftl1的预留空间闪存块100的数量与分配到第一闪存转换层实例vftl1的物理块的数量的比率,第二比率是第二闪存转换层实例vftl2的预留空间闪存块100的数量与分配到第二闪存转换层实例vftl2的物理块的数量的比率。例如,每个虚拟闪存转换层实例210的权重可被用户定义。在一些实施例中,每个虚拟机具有权重(例如,用户定义的权重或管理程序(hypervisor)分配的权重),每个虚拟闪存转换层实例210的权重是连接到虚拟闪存转换层实例210的虚拟机的权重,或者,如果多个虚拟机共享虚拟闪存转换层实例210,则每个虚拟闪存转换层实例210的权重是这些虚拟机的权重的总数。

例如,虚拟机的权重可以与虚拟机的预期写入活动等级(例如,期望虚拟机请求写入操作的频率,或者虚拟机所期望的每单位时间写入数据的量)成比例,或与适于虚拟机的服务的质量成比例。

当大容量存储器装置分别针对第一虚拟机vm1和第二虚拟机vm2建立虚拟闪存转换层实例210时,主机102可配置第一虚拟机vm1和第二虚拟机vm2的各自的权重。然后,固件(例如,与第一虚拟机vm1和第二虚拟机vm2分别对应的第一虚拟闪存转换层实例和第二虚拟闪存转换层实例)可基于被分配到第一虚拟闪存转换层实例和第二虚拟闪存转换层实例的物理容量,来分配预留空间块的数量。

在一个实施例中,如图6a中所示地进行装置初始化。在步骤600中,主机102针对大容量存储器装置启用sr-iov并建立包括第一虚拟功能vf0的虚拟功能105。在步骤602中,主机102启用虚拟闪存转换层特征。在步骤604中,主机102创建命名空间并使命名空间附属于第一虚拟功能vf0。在步骤606中,大容量存储器装置根据第一虚拟功能vf0的命名空间的逻辑块地址范围来创建虚拟闪存转换层实例。在步骤608中,主机102将第一虚拟功能vf0分配给第一虚拟机并启用第一虚拟功能vf0。可针对其他虚拟机和命名空间重复该处理。

在一个实施例中,可如图6b中所示地进行读取请求处理。在步骤610中,虚拟机发出具有例如0的起始逻辑块地址和8个扇区的大小的读取请求。在步骤612中,主机102上的客户装置驱动器生成具有请求信息的对应的非易失性存储器标准(nvme)读取请求;nvme读取请求还包括命名空间标识符(nsid)。在步骤614中,大容量存储器装置经由附属于请求的虚拟机的虚拟功能来接收读取请求。在步骤616中,大容量存储器装置处理读取请求,并将它传递到请求的虚拟机所附属于的虚拟闪存转换层实例。在步骤618中,虚拟闪存转换层实例读取读取请求所要求的闪存页,并将完成响应发布到相应的虚拟功能的完成队列(cq);然后,客户装置驱动器可通知提交队列(sq)。在步骤620中,客户装置驱动器处理中断,并更新提交队列。通过虚拟功能可将读取操作的结果返回到虚拟机。

在一个实施例中,如图6c中所示地进行写入请求处理。在步骤622中,虚拟机发出具有例如0的起始逻辑块地址和8个扇区的大小的写入请求。在步骤624中,主机102上的客户装置驱动器生成具有请求信息的对应的nvme写入请求;nvme写入请求包括将被写入的数据和命名空间标识符(nsid)。在步骤626中,大容量存储器装置经由附属于请求的虚拟机的虚拟功能来接收写入请求。在步骤628中,大容量存储器装置处理写入请求,并将它传递给请求的vm所附属于的虚拟闪存转换层实例。在步骤630中,虚拟闪存转换层实例向nand页分配器要求新的物理页码(例如,虚拟闪存转换层实例向nand页分配器请求新的物理页码),并且将数据写入到那些闪存页并更新映射条目。在步骤632中,虚拟闪存转换层实例将写入完成发布到相应的虚拟功能的完成队列(cq)。在步骤634中,主机102上的客户装置驱动器处理中断并更新提交队列(sq)。

如此,一些实施例提供虚拟机感知的虚拟闪存转换层,得到提高的系统性能。

术语“控制器”在此用于包括用于处理数据或数字信号的硬件、固件和软件的任意组合。例如,控制器硬件可包括专用集成电路(asic)、通用或专用中央处理器(cpu)、数字信号处理器(dsp)、图形处理器(gpu)和诸如现场可编程门阵列(fpga)的可编程逻辑装置。在如这里所使用的控制器中,每个功能由被配置为(即,硬连线的)执行该功能的硬件来执行,或由被配置为执行存储在非暂时性存储介质中的指令的更加通用的硬件(诸如,cpu)来执行。控制器可被制造在单个印刷线路板(pwb)上或分布在几个内连的pwb上。控制器可包括其他控制器;例如,控制器可包括pwb上内连的两个控制器(诸如,fpga和cpu)。

可利用任何合适的硬件、固件(例如,专用集成电路)、软件或它们的组合来实现根据这里描述的本发明的实施例的大容量存储器装置和/或其他相关的装置或组件。例如,可将大容量存储器装置的各种组件形成在一个集成电路(ic)芯片上或形成在分开的ic芯片上。此外,可将大容量存储器装置的各种组件实现在柔性印刷电路薄膜、带状媒介封装(tcp)和印刷电路板(pcb)上,或形成在一个基板上。此外,大容量存储器装置的各种组件可以是运行在一个或多个计算装置中的一个或多个处理器上并执行计算机程序指令以及与用于执行这里描述的各种功能的系统组件进行交互的进程或线程。计算机程序指令被存储在存储器中,其中,可使用标准存储器装置(诸如,例如,随机存取存储器(ram))将存储器实现在计算装置中。计算机程序指令还可被存储在其他非暂时性计算机可读介质(诸如,cd-rom,闪存驱动器等)中。此外,本领域技术人员应认识到,在不脱离本发明的示例实施例的范围的情况下,各种计算装置的功能可被组合或集成到单个计算装置中,或者特定的计算装置的功能可被分布在一个或多个其他计算装置中。

将理解,尽管在这里可使用术语“第一”、“第二”、“第三”等描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应该被这些术语限制。这些术语仅用于将一个元件、组件、区域、层或部分与另一个元件、组件、区域、层或部分进行区分。因此,在不脱离本发明构思的精神和范围的情况下,第一元件、组件、区域、层或部分可被称为第二元件、组件、区域、层或部分。

这里使用的术语仅用于描述特定的实施例的目的,而不意图限制本发明构思。如这里所使用,术语“基本上”、“大约”和类似术语用作近似的术语,而不用作程度的术语,并且意图对本领域普通技术人员所认识到的测量或计算的值中的固有偏差做出解释。

除非上下文另外明确地指示,否则如在这里使用的单数形式也意图包括复数形式。还将理解,当在本说明书中使用术语“包括”和/或“包含”时,说明存在叙述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。如这里所使用,术语“和/或”包括一个或多个相关所列项的任何和全部组合。当诸如“中的至少一个”的表述出现在一列元素之后时,其修饰整列元素,而不是修饰列中的单个元素。此外,当描述本发明构思的实施例时,“可”的使用表示“本发明构思的一个或多个实施例”。此外,术语“示例性”意图表示示例或示出。如这里所使用,术语“使用”可被认为与术语“利用”同义。

将理解,当元件被称为“在”另一元件上、“连接”或者“结合”到另一元件时,该元件可直接地在另一元件上、被直接地连接到或者结合到该另一元件,或者可存在一个或多个中间元件。相反,当元件被称为“直接在另一元件上、“直接地连接到”或者“直接地结合到”另一元件时,不存在中间元件。

这里列举的任何数值范围意图包括包含在列举的范围内的相同数值精度的全部子范围。例如,“1.0至10.0”的范围意图包括列举的最小值1.0与列举的最大值10.0之间(包括)的全部子范围,也就是说,具有等于或大于1.0的最小值并且等于或小于10.0的最大值的范围(诸如,例如,2.4至7.6)。这里列举的任何最大数值限制意图包括包含其中的全部更低的低数值限制,并且在该说明书中列举的任何最小数值限制意图包括包含其中的全部更高的数值范围。

虽然这里已经具体描述和示出了大容量存储器装置、包括其的系统以及访问其的方法(即,针对sr-iovnvmessd的vm-awareftl设计)的示例实施例,但是很多修改和变化对本领域技术人员来说将是清楚的。因此,将理解,根据本发明的原理构建的大容量存储器装置、包括其的系统以及访问其的方法可被实现为除了这里具体描述的形式之外的形式。还在权利要求及其等同物中定义本发明。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1