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

固态驱动器中的自适应备用块使用的制作方法

2022-07-14 05:06:16 来源:中国专利 TAG:

固态驱动器中的自适应备用块使用


背景技术:

1.由nand闪存构建的固态驱动器(ssd)包含多个nand封装,这些nand封装包含多个nand闪存裸片。nand闪存裸片包含多个块,该多个块用于保存数据,并且可以被擦除、编程和读取。nand闪存裸片被设计为具有固定数目的总块。尽管裸片上的块的总数目是固定的,但当它们在ssd中被实现时,裸片上可用的好块的实际数目从一个裸片到另一个裸片变化。这是由于在产品开发过程期间标记出的坏块。该过程可能会在ssd中使用的裸片中留下不均匀数目的总好块。
2.ssd控制器中的闪存转换层(ftl)用于管理从原始nand闪存侧对其可用的所有块。通常,nand闪存裸片将具有比满足ssd容量要求所需的块更多的块。这些额外的块被称为备用块。备用块用于在好块故障时替换容量块集合内的好块。块可能由于编程、擦除或读取失败而故障。这可能导致ftl将这些块标记为坏块,并且用备用块列表中可用的块替换它们。
3.正是关于这种一般技术环境,考虑了本文公开的本技术的方面。此外,虽然已经讨论了一般环境,但是应当理解,本文描述的示例不应当限于在背景中标识的一般环境。


技术实现要素:

4.提供本发明内容来以简化形式介绍概念的选择,这些概念将在下面的具体实施方式部分中进一步被描述。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用作确定所要求保护的主题的范围的帮助。示例的附加方面、特征和/或优点将部分地在随后的描述中被阐述,并且部分地将从描述变得明显或者可以通过本公开的实践来了解。
5.本公开的非限制性示例描述了用于基于备用块和工作负载预期对非易失性存储介质中的存储裸片进行划分的系统、方法和设备。数据存储设备中包括的裸片的数目可以被确定。可以对这些裸片中的每个裸片中包括的备用块的数目做出附加确定。备用块的数目可以是每个裸片中高于满足存储设备的容量要求的所需数目的块数目。
6.数据存储设备可以为在与数据存储设备相关联的主机处理系统中执行的多个工作负载提供存储。每个工作负载可以对应于虚拟机和/或应用。工作负载可以被分类为写入密集型或读取密集型。在一些示例中,分类可以与数据存储设备为其提供存储的每个工作负载相关。例如,第一工作负载可以被预期需要比第二工作负载高的写入数目。在另一个示例中,第一工作负载可以被预期需要比第二工作负载高的写入与读取比率。
7.数据存储设备的裸片可以被划分为两个以上集合以及一个或多个耐久性组。集合可以基于每个裸片具有的备用块的数目来进行划分。即,可以基于每个裸片具有相对较高数目的备用块和每个裸片具有相对较低数目的备用块来划分集合。被确定具有较高写入强度的工作负载可以被分配给每个裸片具有相对较高数目的备用块的那些集合,并且被确定具有较低写入强度的工作负载可以被分配给每个裸片具有相对较低数目的备用块的那些集合。
附图说明
8.参考以下附图描述非限制性和非穷举性示例:
9.图1图示了用于基于备用块和工作负载规范来划分存储裸片的示例性计算环境。
10.图2图示了包括固态存储的示例性计算环境,该固态存储已被划分为用于由第一虚拟机使用的第一下行通道集合和耐久性组以及用于由第二虚拟机使用的第二下行通道集合和耐久性组。
11.图3图示了包括固态存储的示例性计算环境,该固态存储已被划分为四个下行通道集合和对应的耐久性组,以用于由四个虚拟机及其对应的工作负载使用。
12.图4图示了包括固态存储的示例性计算环境,该固态存储已被划分为两个跨通道集合和对应的耐久性组,以用于由两个虚拟机及其对应的工作负载使用。
13.图5图示了包括固态存储的示例性计算环境,该固态存储已被划分为两个通道不可知集合和对应的耐久性组,以用于由两个虚拟机及其对应的工作负载使用。
14.图6是用于跨固态存储中的裸片集合和耐久性组分配存储工作负载的示例性方法。
15.图7是用于基于应用工作负载将数据写入固态存储中的不同裸片集合的示例性方法。
具体实施方式
16.将参考附图详细描述各种实施例,其中贯穿若干视图,相同的附图标记表示相同的部件和组件。对各种实施例的引用不限制所附权利要求的范围。此外,本说明书中阐述的任何示例不旨在进行限制,并且仅旨在阐述所附权利要求的许多可能实施例中的一些实施例。
17.本公开的示例提供了用于基于备用块和工作负载预期对非易失性存储介质中的存储裸片进行划分的系统、方法和设备。在示例中,非易失性存储介质可以包括ssd。ssd可以包括nand存储设备。在一些示例中,非易失性存储介质可以具有容量要求(例如,1/2tb、1tb)。非易失性存储介质的每个裸片可以具有满足非易失性存储介质的容量要求所需的块的基本数目,并且高于该基本数目的每个块可以被分类为备用块。
18.根据示例,非易失性存储介质中的裸片可以被划分为两个以上集合。如本文所使用的,“集合”、“裸片的集合”或“裸片集合”是指存储介质中的一个或多个裸片。裸片的集合可以被分配给特定的工作负载(例如,虚拟机、在虚拟机上执行的应用)。一个或多个集合可以与磨损均衡策略和/或垃圾收集策略相关联。如本文所使用的,“垃圾收集”是指后台进程,该后台进程允许存储设备通过在后台执行某些任务来减轻编程/擦除循环的性能影响。具体地,垃圾收集是如下过程:通过将有效数据从这些块写入“新”空闲块并且擦除旧块来释放“旧的”、部分或完全填充的块。因此,在垃圾收集之后,来自旧块的陈旧数据不再被包括在新块中。可以在各种阈值下执行垃圾收集(例如,当阈值数目的块已满或几乎已满时,当块的阈值数目的页面已满时,当阈值数目或百分比的块的阈值数目的页面已满时,当有阈值百分比的空闲备用块剩余时,当有阈值数目的空闲备用块剩余时)。垃圾收集可以基于落在对应管理策略下的给定区域(例如,集合、耐久性组)中的数据有效性的量而被执行。例如,无效逻辑块地址(lba)总数与可用lba总数的比率。垃圾收集策略可以跨不同的集合和
耐久性组变化,如下文更全面地描述的。作为示例,写入密集型裸片集合可以具有向其应用的第一垃圾收集策略,并且读取密集型裸片集合可以具有向其应用的第二不同的垃圾收集策略。
19.磨损均衡策略和/或垃圾收集策略与一个或多个集合的关联在本文中被称为“耐久性组”。每个耐久性组是用于磨损均衡和垃圾收集目的的单独存储池。可以针对每个耐久性组报告单独的磨损统计数据。在具有一个以上耐久性组的驱动器上,可能会完全耗尽一个耐久性组并且使其变为只读,而其他耐久性组仍然可用。
20.由与非易失性存储介质相关联的主机处理的工作负载可以被单独分配给非易失性存储介质的裸片集合。在示例中,具有较高数目的备用块的裸片集合可以被利用以处理具有较高写入强度的工作负载。备选地,具有较低数目的备用块的裸片集合可以被利用,以处理具有较低写入强度的工作负载。即,在一段时间上需要较高写入数目的工作负载可以被分配给每个裸片具有更多块的裸片集合,并且在一段时间上需要较低写入数目的工作负载可以被分配给每个裸片具有较低数目的块的裸片集合。
21.根据示例,非易失性存储介质可以连接到主机处理系统,并且经由非易失性存储器主机控制器接口规范(nvmhcis)或nvm express(nvme)进行通信。在一些示例中,本文描述的裸片集合可以被划分为nvm集合和/或nvm耐久性组。其他规范和通信接口也可以应用于实现本文描述的系统、方法和设备,如下文更全面描述的。
22.本文描述的系统、方法和设备为存储数据和延长存储介质的寿命提供了技术优势。通过将高写入强度工作负载分配给具有包括相对较高数目备用块的裸片的裸片集合,并且将具有较低写入强度的工作负载分配给具有包括相对较低数目备用块的裸片的裸片集合,驱动器作为整体不太可能由于裸片中空间不足(其中相对较低数目的备用块被写入密集型工作负载利用),而需要变为只读。此外,在基于实际块空间和/或页面空间分配垃圾收集策略时,本文描述的系统、方法和设备更有效,因为垃圾收集可以基于对应的耐久性组中包括的特定集合而启动,而不是将单个策略应用于存储设备中的所有裸片。
23.图1图示了用于基于备用块和工作负载规范来划分存储裸片的示例性计算环境100。计算环境100包括主机处理系统102和数据存储设备104,其中数据存储设备104还包括与存储介质108可操作地耦合的存储控制器106。主机处理系统102经由通信链路103与数据存储设备104通信,其中通信链路103可以包括外围组件互连高速(pcie)总线、小型计算机系统接口(scsi)总线、串行附接scsi(sas)总线、串行高级技术附件(sata)总线、光纤通道或一些其他类似接口或总线。
24.存储介质108代表非易失性存储介质,诸如固态存储介质和闪存介质,存储介质108被用作静态存储器的一种形式,其数据在计算机关闭或失去其外部电源时被保存。存储介质108包括多个裸片、平面、块和页面。裸片是可以独立执行命令或报告状态的存储介质108的最小单位。nand闪存封装内的nand闪存裸片通过通道连接到存储控制器106。在所示示例中,存在三个分开的通道-通道109、通道111和通道113。应当理解,当前公开的方面可以基于后端通道的数目(例如,四个通道、8个通道、16个通道或它们的任意组合)而被应用于各种ssd控制器。所示通道中的每个通道包括四个裸片。出于示例性目的,来自通道109的裸片110被更详细地图示为裸片x 110*,来自通道111的裸片112被更详细地图示为裸片y 112*,来自通道113的裸片114被更详细地图示为裸片z 114*。每个裸片包含一个或多个平
面。相同的并发操作可以发生在每个平面上。每个平面包含许多块,这些块是可以被擦除的最小单位。每个块包含许多页面,页面是可以被写入的最小单位。每个页面包含许多单元。这些单元可以被配置为单级单元(slc)、多级单元(mlc)、三级单元(tlc)、四级单元(qlc)和/或五级单元(plc)。
25.在维护存储介质108的存储时,存储介质108耦合到存储控制器106。控制器可以以硬件、固件、软件或其组合来实现,并且将设备的存储器组件桥接到主机。在硬件实现中,控制器包括耦合到存储介质的控制电路装置。控制电路装置包括接收来自主机的写入请求的接收电路。每个写入请求包括作为写入请求的主题的数据,以及数据的目标地址。目标地址可以是逻辑块地址(lba)、物理块地址(pba)或描述在何处存储数据的其他这种标识符。存储控制器106还包括控制器模块124,控制器模块124可以以硬件、固件、软件或其组合来实现。控制器模块124包括块分析引擎126、集合划分引擎128和工作负载分配引擎130。
26.存储控制器106可以包括可操作地耦合到存储系统的处理系统。处理系统可以包括微处理器和从存储系统检索和执行操作软件的其他电路装置。存储系统可以包括以用于存储信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质,信息诸如是计算机可读指令、数据结构、程序模块或其他数据。存储系统可以被实现为单个存储设备,但也可以跨多个存储设备或子系统实现。存储系统可以包括附加元件,诸如用于从存储系统读取操作软件的控制器。存储介质的示例包括随机存取存储器、只读存储器、磁盘、光盘和闪存,以及它们的任何组合或变型,或任何其他类型的存储介质。应当理解,存储介质在任何情况下都不是传播信号。
27.处理系统通常被安装在也可以保持存储系统的电路板上。存储系统的操作软件包括计算机程序、固件或一些其他形式的机器可读程序指令。存储系统的操作软件能够为存储控制器提供本文描述的擦除操作。存储系统上的操作软件还可以包括操作系统、实用程序、驱动程序、网络接口、应用或一些其他类型的软件或固件。当由处理系统读取和执行时,存储系统上的操作软件指导控制器如本文所述那样操作。
28.在当前示例中,每个裸片可以具有1200个块以满足数据存储设备104的容量要求,并且备用块是超过那些1200个块以外的块。在该示例中,裸片z 114*有1210个块,所以它有10个备用块。在该示例中,在存储介质108中包括的所有裸片中,裸片z 114*具有最少数目的块。裸片x 110*具有1240个块,因此它具有10个备用块和30个额外备用块(即,高于具有最低数目的备用块的裸片中的块数目的块数目)。裸片y 112*有1220个块,因此它有10个备用块和10个额外备用块。尽管这些块相同,但为了便于说明,它们被指示为容量块、备用块或额外备用块。它们的名称由符号说明122表示。
29.存储介质108可以将数据从每个裸片发送到存储控制器106。数据可以包括标识存储介质108中包括的裸片中的每个裸片的信息,以及那些裸片中的每个裸片中包括的块的数目。该数据可以附加地包括裸片中的每个裸片和对应块的位置数据。在一些示例中,数据可以在ssd初始化过程期间由存储控制器106发送到主机处理系统102。在示例中,利用该信息,块分析引擎126可以确定存储介质108中包括的每个裸片中包括的备用块(备用块和额外备用块)的数目。
30.主机处理系统102可以标识与主机处理系统102执行的虚拟机和/或应用相关联的工作负载类型。例如,主机处理系统102可以标识由主机处理系统102执行的每个虚拟机和/
或应用是读取密集型还是写入密集型。读取和/或写入强度可以基于由主机处理系统102执行的虚拟机和/或应用相对于彼此的比例来进行确定。在其他示例中,读取和/或写入强度可以在得分绝对值的基础上进行确定。在一些示例中,主机处理系统102可以简单地接收指定虚拟机和/或应用的工作负载类型的数据。在其他示例中,主机处理系统102可以分析与虚拟机和/或应用相关联的历史和/或实时数据,并且基于该数据确定工作负载类型。工作负载类型可以基于在一段时间上执行的读取和/或写入的数目来进行确定。在其他示例中,工作负载类型可以基于特定量的数据在一段时间上的写入数目来进行确定。在针对给定虚拟机和/或应用进行工作负载类型确定时,可以考虑其他变量。
31.利用在主机处理系统102上执行的每个虚拟机和/或应用的工作负载类型信息,以及由块分析引擎126确定的备用块信息,集合划分引擎128可以将存储介质108的裸片划分为集合和子集。在示例中,划分可以是基于软件和/或固件(例如,不是物理划分)。在附加示例中,划分可以至少部分地基于硬件(例如,按通道、按行)。在示例中,裸片可以基于它们具有的块的数目被划分为集合。例如,具有相对较高数目的块并且因此具有相对较高数目的备用块的裸片可以被划分为一个或多个集合,该集合将由写入密集型虚拟机和/或应用利用。备选地,具有相对较低数目的块的裸片可以被划分为一个或多个集合,该集合将由读取密集型虚拟机和/或应用利用。在一些示例中,这些集合可以与基于耐久性的策略相关联。例如,裸片的一个集合可以具有对其应用的第一垃圾收集策略(例如,当集合中剩余x个空闲块时执行垃圾收集,当集合中有y个无效页面时执行垃圾收集),并且裸片的另一集合可以具有对其应用的第二垃圾收集策略(例如,当集合中剩余x 10个空闲块时执行垃圾收集,当集合中有y 50个无效页面时执行垃圾收集)。在一些示例中,基于耐久性的策略可以全部或部分地由闪存转换层(ftl)实施。在其他示例中,基于耐久性的策略可以全部或部分由存储控制器106实施。
32.根据示例,集合划分引擎128可以不仅基于块的数目而且还基于物理位置来划分裸片。在一些示例中,划分引擎128可以在下游通道的基础上划分裸片。例如,集合划分引擎128可以划分包括通道109中的每个裸片的裸片的第一集合、包括通道111中的每个裸片的裸片的第二集合,以及包括通道113中的每个裸片的裸片的第三集合。在一些示例中,集合可以包括一个以上的裸片通道(例如,裸片的集合包括通道109和通道111)。在附加示例中,划分引擎128可以在跨流通道的基础上划分裸片。例如,集合划分引擎128可以划分裸片的第一集合,该第一集合包括通道109中的第一裸片、通道111中的第一裸片和通道113中的第一裸片,并且划分引擎128可以划分裸片的第二集合,该第二集合包括每个通道中的第二裸片,依此类推。在又一些其他示例中,集合划分引擎128可以在不管裸片的通道位置的情况下划分裸片。即,集合划分引擎128可以仅基于每个裸片中包括的块的数目或备用块的数目来划分裸片。
33.工作负载分配引擎130可以执行与集合划分引擎128相关联的操作。工作负载分配引擎130可以利用如主机处理系统102指示的虚拟机和/或应用的工作负载类型,并且将那些工作负载分配给划分的集合。例如,工作负载分配引擎130可以将具有写入密集型工作负载的虚拟机和/或应用分配给每个裸片具有较高数目的块的集合,而将具有读取密集型工作负载(或换句话说,较少密集写入工作负载)的虚拟机和/或应用分配给每个裸片具有较低数目的块的集合。因此,在该特定示例中,裸片x 110*可以被划分为具有相对较高块数目
的裸片集合,并且该集合可以被用于处理写入密集型工作负载;裸片y 112*可以被划分为具有相对中等块数目的裸片集合,并且该集合可以被用于处理中等工作负载(例如,既不是写入密集型也不是读取密集型);并且裸片z 114*可以被划分为具有相对较低块数目的裸片集合,并且该集合可以被用于处理读取密集型工作负载。
34.图2图示了包括固态存储的示例性计算环境200,该固态存储已被划分为用于由第一虚拟机使用的第一下行通道集合和耐久性组以及用于由第二虚拟机使用的第二下行通道集合和耐久性组。计算环境200包括虚拟机1(vm1 218)、虚拟机2(vm2 224)、主机处理系统202和数据存储设备204。数据存储设备204包括存储控制器206和存储介质208。
35.在该示例中,存储介质208包括经由三个分离通道连接到存储控制器206的多个裸片。裸片已被划分以基于下游通道划分来处理工作负载。具体地,通道209中的每个裸片已被划分为第一集合210和第一耐久性组212。此外,第二通道211和第三通道213中的每个裸片已被划分为第二集合214和第二耐久性组216。
36.vm1 218执行具有读/写规范a 222的应用a 220。读/写规范a 222可以包括预期在设定的持续时间上执行应用a所需的读和/或写的数目。在附加示例中,读/写规范a222可以包括比预期在设定的持续时间上执行应用a所需的阈值数据量多的读和/或写的数目。在示例中,读/写规范a222可以被直接提供给主机处理系统202。在一些示例中,应用a 220可以先前已经在一个或多个其他处理系统上运行并且利用了一个或多个其他存储设备,并且来自执行应用a 220的该历史数据可以被利用来确定读/写规范a 222。在一些示例中,已被训练以标识读写模式的一个或多个机器学习模型可以被应用于历史数据以确定读/写规范a 222。
37.类似地,vm2 224执行具有读/写规范b 228的应用b 226。读/写规范b 228可以包括预期在设定的持续时间上执行应用b所需的读和/或写的数目。在附加示例中,读/写规范b 228可以包括比预期在设定的持续时间上执行应用b 226所需的阈值数据量多的读和/或写的数目。在一些示例中,应用b 226可以先前已在一个或多个其他处理系统上运行并且利用了一个或多个其他存储设备,并且来自执行应用b 226的该历史数据可以被利用来确定读/写规范b 228。在一些示例中,已被训练来标识读写模式的一个或多个机器学习模型可以被应用于历史数据以确定读/写规范b 228。
38.在该示例中,当vm1 218和vm2 224被分配给主机处理系统202和数据存储设备204时,可以做出关于每个相应虚拟机的存储需求的确定。在该示例中,做出如下确定:vm2 224需要两倍于vm1 218的存储带宽。此外,做出如下确定:vm2 224具有比vm1 218相对较少的写入密集型工作负载规范/要求。如此,与vm2 224和应用226相关联的数据被分配给第二集合214,第二集合214包括两倍于第一集合210的裸片数目,但那些裸片具有比第一集合210的裸片中包括的平均备用块数目小的平均备用块数目。在其他示例中,与第二集合214中具有最低数目的块的裸片相比,第一集合210中的每个裸片可以具有更高的备用块数目。
39.部分因为vm1 218需要vm2 224的存储带宽的一半,并且部分因为vm1 218具有比vm2 224相对更高的写入密集型工作负载规范/要求,与vm1 218和应用220相关联的数据被分配给第一集合212,第一集合212包括第二集合214的一半数目的裸片,但那些裸片具有比第二集合214的裸片中包括的平均备用块数目多的平均备用块数目。因此,集合1 210中包括的裸片能够更好地适应vm1 218,因为这些裸片出现与vm1 218所需的较高写入密集型工
作负载有关的故障的可能性较小。
40.在该示例中,集合1 210中包括的裸片中的每个裸片具有应用到它们的第一垃圾收集策略,如由耐久性组212所指示的。类似地,集合2 214中包括的裸片中的每个裸片具有应用到它们的第二垃圾收集策略,如由耐久性组216所指示的。
41.图3图示了包括固态存储的示例性计算环境300,固态存储已被划分为四个下行通道集合和对应的耐久性组,以用于由四个虚拟机及其对应的工作负载使用。计算环境300包括虚拟机1(vm1 312)、虚拟机2(vm2 314)、虚拟机3(vm3 316)和虚拟机4(vm4 318)。计算环境300还包括主机处理系统202和数据存储设备304,主机处理系统202执行虚拟机(vm1-vm4)中的每个虚拟机。数据存储设备304包括存储控制器306和存储介质308。
42.针对vm1 312、vm2 314、vm3 316和vm4 318中的每个的读/写规范可能已经被确定。那些读/写规范可以至少包括在阈值时间段上预期的写入操作的数目的指示。在一些示例中,读/写规范可以包括在阈值时间段上每个写入操作预期要写入的数据量的指示。在附加示例中,读/写规范可以包括预期将在阈值时间段上执行的读取操作的数目。在又一些其他示例中,读/写规范可以包括对一定量数据的读取操作的数目,预期在阈值时间段上执行这些读取操作。
43.在该示例中,vm1 312、vm2 314、vm3 316和vm4 318被分配给主机处理系统302和数据存储设备304。可以做出关于每个相应虚拟机的存储需求的确定。在该示例中,做出如下确定:每个虚拟机需要大致相同的存储量。此外,做出如下确定:出于存储的目的,vm1312、vm2 314、vm3 316和vm4 318需要大致相同数目的裸片。做出如下附加确定:vm1 312具有比vm2 314高的写入强度工作负载,vm2 314具有比vm3 316高的写入强度工作负载,vm3 316具有比vm4 318高的写入强度工作负载。如此,与vm1 312相关联的数据被分配给第一集合s1,与vm2 314相关联的数据被分配给第二集合s2,与vm3 316相关联的数据被分配给第三集合s3,并且与vm4 318相关联的数据被分配给第四集合s4。集合s1中的每个裸片具有大于x个块。集合s2中的每个裸片具有大于x减y个块。集合s3中的每个裸片具有大于x减y*个块,其中y*大于y。集合s4中的每个裸片具有大于x减y**个块,其中y**大于y**。在其他示例中,集合s1的裸片中的平均块数目可以高于集合s2的裸片中的平均块数目,集合s2的裸片中的平均块数目可以高于集合s3的裸片中的平均块数目,集合s3的裸片中的平均块数目可以高于集合s4的裸片中的平均块数目。因此,具有较高写入强度工作负载的虚拟机被分配给具有较高块数目的裸片集合。
44.在该示例中,裸片的每个集合(s1,s2,s3,s4)也与不同的垃圾收集策略相关联,如由不同的耐久性组所指示的。即,集合s1具有第一垃圾收集策略,如由耐久性组1(e1)所指示的,集合s2具有第二垃圾收集策略,如由耐久性组2(e2)所指示的,集合s3具有第三垃圾收集策略,如由耐久性组3(e3)所指示的,并且集合s4具有第四垃圾收集策略,如由耐久性组4(e4)所指示的。针对写入密集度较高的集合的垃圾收集策略可以在与写入密集度较低的集合不同的阈值下提供垃圾收集。
45.作为示例,针对耐久性组1(e1)的垃圾收集策略可以提供要在集合中剩余x数目的备用块时执行的垃圾收集,并且针对耐久性组4(e4)的垃圾收集策略可以提供要在集合中剩余x y或x-y数目的备用块时执行的垃圾收集。在附加示例中,针对耐久性组1(e1)的垃圾收集策略可以提供要在集合中存在x数目的完整块(或几乎完整块)时执行的垃圾收集,并
且针对耐久性组4(e4)的垃圾收集策略可以提供要在集合中存在x-y或x y数目的完整块(或几乎完整块)时执行的垃圾收集。在其他示例中,针对耐久性组1(e1)的垃圾收集策略可以提供要在集合中剩余x%的备用块时执行的垃圾收集,并且针对耐久性组4(e4)的垃圾收集策略可以提供要在集合中剩余y%的备用块时执行的垃圾收集。
46.尽管在该示例中,裸片的每个集合被指示为具有其自己的垃圾收集策略,但应当理解,单个垃圾收集策略可以被应用于集合中的每个集合,第一垃圾收集策略可以被应用于集合中的两个集合,并且第二垃圾收集策略可以被应用于剩余的两个集合,或者第一垃圾收集策略可以被应用于集合中的三个集合,并且第二垃圾收集策略可以被应用于剩余的集合。
47.图4图示了包括固态存储的示例性计算环境400,该固态存储已被划分为两个跨通道集合和对应的耐久性组,以用于由两个虚拟机及其对应的工作负载使用。计算环境400包括虚拟机410,虚拟机410包括虚拟机1(vm1 412)和虚拟机2(vm2 414)。计算环境400还包括执行虚拟机410的主机处理系统402和数据存储设备404。数据存储设备404包括存储控制器406和存储介质408。
48.针对vm1 412和vm2 414中的每个的读/写规范可以已经被确定。那些读/写规范可以至少包括在阈值时间段上预期的写入操作的数目的指示。在一些示例中,读/写规范可以包括在阈值时间段上每个写入操作预期要写入的数据量的指示。在附加示例中,读/写规范可以包括预期将在阈值时间段上执行的读取操作的数目。在又一些其他示例中,读/写规范可以包括对一定量数据的读取操作的数目,预期在阈值时间段上执行这些读取操作。
49.在该示例中,vm1 412和vm2 414被分配给主机处理系统402和数据存储设备404。可以做出关于每个相应虚拟机的存储需求的确定。在该示例中,做出如下确定:vm1 412需要vm2 414的储存量的大约三分之一。可以做出如下附加确定:尽管vm1 412需要比vm2414少的存储量,但vm1 412具有比vm2 414高的写入强度工作负载。在该示例中,可以为vm1 412选择平均比第二多个裸片高的备用块数目的第一多个裸片。该第一多个裸片被分配给vm1 412作为集合s1,集合s1具有比集合s2少的裸片,因为vm1 412具有较低的存储要求。然而,由于vm1 412具有比vm2 414更写密集的工作负载,因此集合s1具有更高的平均备用块数目。如此,vm2 414被分配给集合s2。
50.在该示例中,裸片的每个集合(s1,s2)也与不同的垃圾收集策略相关联,如有不同的耐久性组所指示的。即,集合s1具有第一垃圾收集策略,如有耐久性组1(e1)所指示的,并且集合s2具有第二垃圾收集策略,如由耐久性组2(e2)所指示的。垃圾收集策略中的每个垃圾收集策略可以与不同的阈值相关联,该阈值用于为对应的裸片集合启动垃圾收集。
51.图5图示了包括固态存储的示例性计算环境500,该固态存储已被划分为两个通道不可知集合和对应的耐久性组,以用于由两个虚拟机及其对应的工作负载使用。计算环境500包括虚拟机1(vm1 510)和虚拟机2(vm2 512)。计算环境500还包括执行虚拟机vm1 510和vm2 512中的每个虚拟机的主机处理系统502和数据存储设备504。数据存储设备504包括存储控制器506和存储介质508。符号说明514指示第一集合s1(利用对角线指示的裸片)具有比第二集合s2(指示为填充的裸片)高的备用块数目。
52.针对vm1 510和vm2 512中的每个的读/写规范可以已经被确定。那些读/写规范可以至少包括在阈值时间段上预期的写入操作的数目的指示。在一些示例中,读/写规范可以
包括在阈值时间段上每个写入操作预期要写入的数据量的指示。在附加示例中,读/写规范可以包括预期将在阈值时间段上执行的读取操作的数目。在又一些其他示例中,读/写规范可以包括对一定量数据的读取操作的数目,预期在阈值时间段上执行这些读取操作。
53.在该示例中,vm1 510和vm2 512被分配给主机处理系统502和数据存储设备504。可以做出关于每个相应虚拟机的存储需求的确定。在该示例中,做出如下确定:每个虚拟机需要大致相同的存储量。此外,做出如下确定:vm1 510和vm2 512需要大致相同数目的裸片以用于存储。做出如下附加确定:vm1 510具有比vm2 512更高写入强度的工作负载。如此,与vm1 510相关联的数据被分配给第一集合s1,并且与vm2 512相关联的数据被分配给第二集合s2。在一些示例中,集合s1中的每个裸片可以具有比集合s2中的每个裸片更高的块数目。在其他示例中,集合s1中包括的裸片中的平均块数目可以具有比集合s2中包括的裸片中的平均块数目更高的块数目。在该示例中,集合s1和集合s2中的裸片分布在存储介质508的各个通道和行中间。如此,可以基于那些裸片中的每个裸片中包括的块(或备用块)的数目单独地选择裸片,而不是基于给定通道和/或行中的平均块数目来分配集合。因此,单独选择裸片以分配到特定集合中提供了更大的能力来定制针对个体工作负载的磨损均衡。
54.在该示例中,集合s1和s2被图示为与相同的垃圾收集策略相关联。然而,应当理解,第一垃圾收集策略可以被应用于集合s1,并且不同的垃圾收集策略可以被应用于集合s2。
55.图6是用于跨固态存储中的裸片集合和耐久性组分配存储工作负载的示例性方法600。方法600在开始操作处开始,并且流程移动到操作602。
56.在操作602处,从非易失性存储介质接收数据。该数据可以包括标识非易失性存储介质中包括的多个裸片中的每个裸片的信息,并且可以包括多个裸片中的每个裸片中包括的块的数目。在示例中,该数据可以包括针对多个裸片的位置信息。
57.流程从操作602继续到操作604,在操作604中,做出关于多个裸片中的每个裸片中包括的备用块的数目的确定。非易失性存储介质可能具有容量要求(例如,1/2tb、1tb)。每个裸片可以具有满足非易失性存储介质的容量要求所需的块的基本数目,并且高于该基本数目以外的每个块可以被分类为备用块。
58.流程从操作604继续到操作606,在操作606中,多个裸片的第一集合和第二集合被标识。裸片的第一集合可以被标识为具有比裸片的第二集合更高的备用块数目。在示例中,标识第一集合和第二集合可以包括基于它们的备用块来划分裸片。例如,可以做出关于将要利用非易失性存储介质的多个工作负载的确定(例如,与第一应用相关联的第一工作负载、与第二应用相关联的第二工作负载),并且那些相应工作负载的预期写入强度可以被标识。在预期的工作负载被标识之后,裸片可以基于裸片中的备用块的数目而被划分为集合。具有较高备用块数目的裸片可以被划分为将被分配给更加写入密集型工作负载的集合,并且具有较低备用块数目的裸片可以被划分为将被分配给较少写入密集型工作负载的集合。
59.流程从操作606继续到操作608,在操作608中,第一工作负载被分配给裸片的第一集合,第一工作负载被分类为写入密集型。在一些示例中,分类可以与将由非易失性存储介质处理的一个或多个附加工作负载的读取和/或写入强度有关。在其他示例中,分类可以是独立的分类(例如,与其他工作负载无关)。在一些示例中,第一工作负载可以与一个或多个应用相关联,该一个或多个应用在与非易失性存储介质相关联的主机设备上被执行。在附
加示例中,第一工作负载可以与执行一个或多个应用的虚拟机相关联,该一个或多个应用在与非易失性存储介质相关联的主机设备上被执行。
60.流程从操作608继续到操作610,在操作610中,第二工作负载被分配给裸片的第二集合,第二工作负载被分类为读取密集型。在一些示例中,分类可以与将由非易失性存储介质处理的一个或多个附加工作负载的读取和/或写入强度有关。在其他示例中,分类可以是独立的分类(例如,与其他工作负载无关)。在一些示例中,第二工作负载可以与一个或多个应用相关联,该一个或多个应用在与非易失性存储介质相关联的主机设备上被执行。在附加示例中,第二工作负载可以与执行一个或多个应用的虚拟机相关联,该一个或多个应用在与非易失性存储介质相关联的主机设备上被执行。
61.从操作610,方法600移动到结束操作并且方法600结束。
62.图7是用于基于应用工作负载将数据写入固态存储中的不同裸片集合的示例性方法700。方法700在开始操作处开始,并且流程移动到操作702。
63.在操作702处,对存储系统中包括的多个裸片进行划分的命令被接收。该命令可以指定裸片将被划分为裸片的第一集合和裸片的第二集合,其中裸片的第一集合具有比裸片的第二集合更高数目的备用块。可以基于每个裸片满足存储系统的容量要求(例如,1/2tb、1tb)所需的最小块数目,来确定裸片中的备用块的数目。
64.流程从操作702继续到操作704,在操作704中,多个裸片被划分为裸片的第一集合和裸片的第二集合。划分可以包括软件划分、固件划分、硬件划分或它们的组合。划分可以包括将每个集合分配给与存储系统相关联的分离工作负载。例如,第一工作负载可以包括将被分配给裸片的第一集合的第一应用的执行,并且第二工作负载可以包括将被分配给裸片的第二集合的第二应用的执行。
65.流程从操作704继续到操作706,在操作706中,来自在主机处理系统的第一虚拟机上执行的第一应用的数据被写入到裸片的第一集合。第一应用可以被分类为写入密集型应用。在一些示例中,写入强度可以是相对于在主机处理系统的第二虚拟机上执行的第二应用。在其他示例中,写入强度可以是绝对的(例如,不相对于任何其他应用)。
66.流程从操作706继续到操作708,在操作708中,来自在主机处理系统的第二虚拟机上执行的第二应用的数据被写入到裸片的第二集合。第二应用可以被分类为读取密集型应用。在一些示例中,读取强度可以是相对于第一应用。在其他示例中,读取强度可以是绝对的(例如,不相对于任何其他应用)。在该示例中,第一应用被确定为在一段时间上需要比第二应用更高的写入数目。因此,第一应用比第二应用更写入密集。
67.流程从操作708移动到结束操作并且方法700结束。
68.例如,上面参考根据本公开的方面的方法、系统和计算机程序产品的框图和/或操作说明描述了本公开的方面。框中标注的功能/行为可以不按在任何流程图中所示的顺序发生。例如,取决于所涉及的功能/行为,连续示出的两个框实际上可以基本上同时执行,或者框有时可以以相反的顺序执行。
69.本技术中提供的一个或多个方面的描述和图示不旨在以任何方式限制或约束要求保护的本公开的范围。本技术中提供的方面、示例和细节被认为足以传达所有权并且足以使其他人能够制作和使用要求保护的公开的最佳模式。所要求保护的公开不应当被解释为限于本技术中提供的任何方面、示例或细节。无论是组合地还是单独地示出和描述,各种
(结构和方法两者的)特征旨在选择性地被包括或被省略以产生具有特定特征集的实施例。在已经被提供了本技术的描述和图示的情况下,本领域技术人员可以预期落入本技术中体现的总体发明构思的更宽泛方面的精神内的、不脱离要求保护的公开的广义范围的变型、修改和备选方面。
70.上述各种实施例仅作为说明被提供,并且不应当被解释为限制所附权利要求。本领域的技术人员将容易认识到,可以在不遵循本文图示和描述的示例实施例和应用的情况下并且在不脱离所附权利要求的真实精神和范围的情况下,进行各种修改和改变。
再多了解一些

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

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

相关文献