用于硬盘驱动器的逻辑块地址映射的制作方法

文档序号:10488881阅读:218来源:国知局
用于硬盘驱动器的逻辑块地址映射的制作方法
【专利摘要】一种方法可以包括将数据写入到硬驱动器。在一些示例中,所述方法可以包括:由范围分配器模块接收用于写入数据的命令。该命令可以包括由主机所指定的逻辑块地址(LBA)和数据。所述方法还可以包括:由范围分配器模块将主机所指定的LBA映射为驱动器LBA。所述方法还可以包括:从范围分配器模块发送用于在驱动器LBA处写入数据的命令。
【专利说明】用于硬盘驱动器的逻辑块地址映射
[0001 ]本申请要求2015年2月2日提交的第62/110,892号美国临时申请的优先权,通过引用将其全部内容并入本文。
技术领域
[0002]本公开涉及叠瓦式(shingled)磁记录硬盘驱动器。
【背景技术】
[0003]硬盘驱动器(HDD)的叠瓦式磁记录(SMR)区域限制了将数据写入到其当前位置的能力。这种限制归因于SMR区域的大小以及将数据读取和写入到SMR区域的轨道中的磁头。磁头比其写入的目标轨道宽度更宽,这导致了HDD中的SMR区的重写性能的问题。对区(zone)内的轨道进行重写,使得磁头经过相邻轨道,这可能使得相邻轨道中的数据被覆写(overwrite)。重写在前的轨道可能使得HDD为了重写单个区段或轨道而对区的大部分进行重写。因此,与其它类型的HDD相比,SMR HDD可能具有降低的写入性能。

【发明内容】

[0004]在一个示例中,本公开针对一种方法,其可以包括:由在主机设备处运行的范围(extent)分配器模块接收用于写入数据的命令。所述命令可以包括主机所指定的逻辑块地址(LBA)和数据。所述方法还可以包括:由范围分配器模块将主机所指定的LBA映射为驱动器LBA。所述方法还可以包括:将用于在驱动器LBA处写入数据的命令从范围分配器模块发送到硬驱动器(hard drive) ο
[0005]在另一示例中,本公开针对一种方法,其可以包括:由在硬驱动器处运行的范围分配器模块接收用于写入数据的命令。所述命令可以包括主机所指定的逻辑块地址(LBA)和数据。所述方法还可以包括:由范围分配器模块将主机所指定的LBA映射为驱动器物理块地址(PBA)。驱动器PBA可以对应于当前与写入指针相关联的地址。所述方法还可以包括:将用于在驱动器PBA处写入数据的命令从范围分配器模块发送到硬驱动器的硬件引擎。
[0006]在一个示例中,本公开针对一种设备,其可以包括:至少一个处理器;以及范围分配器模块,其可由所述至少一个处理器操作。范围分配器模块可以接收用于写入数据的命令。所述命令可以包括主机所指定的逻辑块地址(LBA)和数据。范围分配器模块可以将主机所指定的LBA映射为驱动器LBA。范围分配器模块也可以将用于在驱动器LBA处写入数据的命令发送到硬驱动器。
[0007]在另一示例中,本公开针对一种设备,其可以包括接口、硬件引擎和控制器。所述控制器可以包括:至少一个处理器;以及范围分配器模块,其可由所述至少一个处理器操作。范围分配器模块可以经由接口接收用于写入数据的命令。所述命令可以包括主机所指定的逻辑块地址(LBA)和数据。范围分配器模块可以将主机所指定的LBA映射为驱动器物理块地址(PBA)。驱动器PBA对应于当前与写入指针相关联的地址。范围分配器模块也可以将用于在驱动器PBA处写入数据的命令发送到硬件引擎。
[0008]在附图和以下描述中阐述本公开的一个或多个示例的细节。根据描述和附图以及根据权利要求,本公开的其它特征、目的和优点将显而易见。
【附图说明】
[0009]图1是示出根据本公开的一个或多个技术的、硬驱动器可以充当主机设备的存储设备的示例存储环境的概念性和示意性框图。
[0010]图2是示出根据本公开的一个或多个技术的、示例范围分配器系统的概念性和示意性框图。
[0011]图3是示出根据本公开的一个或多个技术的、SMRHDD的示例区的概念性和示意性框图。
[0012]图4是示出根据本公开的一个或多个技术的、用于将数据存储到SMRHDD的示例技术的流程图。
[0013]图5是示出根据本公开的一个或多个技术的、用于从SMRHDD读取数据的示例技术的流程图。
【具体实施方式】
[0014]本公开描述了用于管理叠瓦式磁记录(SMR)硬盘设备(HDD)中的写入的技术。例如,SMR HDD可以被配置为循序地将数据写入到SMR HDD的各个区中,使得SMR HDD将区看作好像区是“仅附接的(append-only)”,并且典型地在将数据重写到特定逻辑块地址(LBA)时不覆写现有的数据轨道。SMR HDD可以维持与每个区相关联的写入指针,写入指针对应于用于下一写入的区内的位置,不管下一写入是到先前使用的LBA(即先前写入的)还是新的LBA(即先前未写入的)。此外,主机、SMR HDD或二者可以维持当将数据写入到SMR HDD时由主机所使用的LBA与数据实际写入的物理块地址(PBA)之间的映射。如果将数据写入到先前使用的LBA,则可以更新LBA,以映射到由写入指针所指示的下一PBA,而不是映射到对于先前写入操作所使用的PBA。以此方式,本公开的技术可以在从操作系统(OS)隐藏提供提高的写入性能的SMR HDD的“仅附接的”写入特性的同时,提高SMR HDD的写入性能。
[0015]图1是示出根据本公开的一个或多个技术的硬驱动器可以充当主机设备的存储设备的示例存储环境的概念性和示意性框图。例如,主机设备4可以利用在硬驱动器6中所包含的非易失性存储器设备来存储和取回(retrieve)数据。在一些示例中,存储环境2可以包括可以操作为存储阵列的多个存储设备,诸如硬驱动器6。例如,存储环境2可以包括被配置作为廉价/独立盘冗余阵列(RAID)的多个硬驱动器6,该多个硬驱动器6集体充当主机设备4的大容量存储设备。虽然本公开的技术一般地涉及存储环境2和硬驱动器6,但可以在利用数据的轨道的任何存储环境中执行在此所描述的技术。
[0016]存储环境2可以包括主机设备4,该主机设备4可以向和/或从一个或多个存储设备(诸如硬驱动器6)存储和/或取回数据。如图1所示,主机设备4可以经由接口 14与硬驱动器6进行通信。主机设备4可以包括任何各种各样的设备,包括计算机服务器、网络附连存储(NAS)单元、台式计算机、笔记本(S卩,膝上型)计算机、平板计算机、机顶盒、电话手机(诸如,所谓的“智能”电话、所谓的“智能”板)、电视、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备等。典型地,主机设备4包括具有处理单元的任何设备,该处理单元可以指代任何形式的能够处理数据的硬件,并且可以包括通用处理单元(诸如,中央处理单元(CPU))、专用硬件(诸如,专用集成电路(ASIC))、可配置硬件(诸如,现场可编程门阵列(FPGA))或通过软件指令、微代码、固件等方式配置的任何其它形式的处理单元。为了执行本公开的技术的目的,主机设备4可以经由范围分配器模块16和接口 14,将读取命令和写入命令发送到控制器8,以便对存储到SMR区域的数据进行读取和重写。仅为了易于说明,下面将范围分配器模块16描述为被包含在主机4上。然而,硬驱动器6可以包括范围分配器模块
17。在一些示例中,主机4和硬驱动器6可以各自包括范围分配器模块16、17。
[0017]如图1所示,硬驱动器6可以包括控制器8、高速缓存(cache)9、硬件引擎10、数据存储设备12和接口 14。在一些示例中,为了易于说明的目的,硬驱动器6可以包括在图1中未示出的附加组件。例如,硬驱动器6可以包括:功率传送组件,例如包括电容器、超级电容器或电池;硬驱动器6的组件机械地附连(attached)到其上的印制电路板(PCB),并且所述印制电路板(PCB)包括将硬驱动器6的组件进行电气互连的导电迹线(trace);等等。在一些示例中,硬驱动器6的物理尺寸和连接器配置可以符合一个或多个标准外形因素。一些示例标准外形因素包括但不限于3.5”HDD,2.5”HDD或I.8”HDD。
[0018]在一些示例中,高速缓存9可以存储用于在硬驱动器6的操作期间进行处理的信息。在一些示例中,高速缓存9是临时存储器,这意味着高速缓存9的主要目的不是长期存储。硬驱动器6上的高速缓存9可以作为易失性存储器被配置用于信息的短期存储,并且因而如果断电的话不保留所存储的内容。易失性存储器的示例包括随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)以及其它形式的本领域公知的易失性存储器。
[0019]数据存储装置12可以被配置为存储比高速缓存9更大量的信息。数据存储装置12可以作为非易失性存储器空间进一步被配置用于信息的长期存储,并且在通电/断电周期之后保留信息。非易失性存储器的示例包括磁硬盘、光盘、软盘、闪存或电可编程存储器(EPROM)或电可擦除可编程存储器(EEPROM)的形式。数据存储装置12可以是硬驱动器6中的一个或多个磁碟盘(platter),每个碟盘包含数据的一个或多个轨道的一个或多个区域。
[0020]硬驱动器6包括控制器8,该控制器8可以管理硬驱动器6的一个或多个操作。控制器8可以经由接口 14和范围分配器模块16与主机设备4进行接口连接(interface)。控制器8可以对将数据存储到可经由硬件引擎10访问的数据存储装置12以及从所述数据存储装置12取回数据进行管理。作为一个示例,控制器8可以管理去往和来自存储器设备(例如,硬盘驱动器碟盘)的写入和读取。在一些示例中,控制器8可以是硬件控制器。在其它示例中,可以将控制器8作为软件控制器实现到硬驱动器6中。
[0021]在这方面,主机4可以与各种硬件引擎(诸如硬件引擎10)进行接口连接,以与各种传感器进行交互。主机4可以执行诸如上述的操作系统之类的软件,以管理主机4与硬件引擎10之间的交互。操作系统可以在其中的每个核有效地表示不同CPU的多核CPU的背景下执行仲裁,以确定哪些CPU可以访问硬件引擎10。操作系统还可以在单个CPU的背景下执行队列管理,以解决硬驱动器6的硬件引擎10应当如何处理由主机4发出的各种事件(诸如,硬驱动器6的示例中的读取命令和写入命令)。
[0022]在图1的示例中,硬驱动器6包括硬件引擎10,该硬件引擎10可以表示负责与存储介质进行接口连接的硬件。在基于碟盘的硬驱动器的背景下,硬件引擎10可以表示磁读取/写入头以及用于配置、驱动和处理由磁读取/写入头所感测到的信号的附随硬件。
[0023]硬驱动器6可以包括接口 14,以用于与主机设备4进行接口连接。接口 14可以包括以下的一个或两个:用于与主机设备4交换数据的数据总线,用于与主机设备4交换命令的控制总线。接口 14可以根据任何合适的协议进行运作。例如,接口 14可以根据以下协议中的一个或多个来运作:高级技术附件(ATA)(例如,串行ATA(SATA)和并行ATA(PATA))、光纤通道、小型计算机系统接口(SCSI)、串行附连SCSI (SAS)、外围组件互连(PCI)和PCI高速(PCIe)。将接口 14的电连接体(例如,数据总线、控制总线或二者)电连接到控制器8,以提供主机设备4与控制器8之间的电连接,使得数据得以在主机设备4与控制器8之间进行交换。在一些示例中,接口 14的电连接体还可以允许硬驱动器6从主机设备4接收功率。
[0024]在一些示例中,硬驱动器6可以是SMR HDD。在SMR中,HDD数据轨道可以部分地重叠先前写入的数据轨道,通过将轨道更靠近地封装在一起来增加硬驱动器6的存储容量。在一些示例中,硬驱动器6可以分区为多个区。每个区可以包括若干数据轨道,并且每个轨道可以包括若干扇区。在一些示例中,硬驱动器6可以尝试将数据写入到已经被写入的数据轨道。由于写入头(write head)可能比轨道更宽,因此写入头也可能覆写相邻轨道,这样可能使得硬驱动器6对区的大部分进行重写。因此,硬驱动器6的写入性能可能受损。
[0025]为了改进写入性能,硬驱动器6可以被配置为将写入到硬盘6的任何数据附接到最新近(recently)写入的数据的结尾,这样可以使得硬驱动器6表现为“仅附接的”。不管数据是重写到驱动器还是第一次写入到驱动器,通过将数据附接到先前所写入的数据的结尾,本公开的技术可以使能提高的写入性能,这是因为硬驱动器6可以花费更少的时间来重写大量数据。然而,通过使得每个区作为用于写入数据的“仅附接的”区来运作,硬驱动器6和/或主机4可能不能重写到同一 LBA,这是因为写入到同一 LBA典型地造成数据将被写入在同一物理块地址处,这在SMR HDD中一般导致覆写其它先前所写入的轨道。主机4可以经由接口 14将写入命令发送到控制器8。在一些示例中,主机4可以将数据块和LBA发送到控制器8。控制器8可以解译LBA,并且使用映射函数将LBA转换为PBA。控制器8可以使得数据在硬驱动器6上写入在与主机4所发送的LBA相关联的PBA处。在一些示例中,主机4可以将命令发送到控制器8,以便控制器8使得写入头将数据写入到数据已经写入的LBA(例如,以覆写该LBA处的数据)。在一些示例中,控制器8可以使得硬驱动器6重写与主机4所利用的LBA相关联的数据。因为在SMR中写入头典型地比轨道更宽,所以控制器8可以命令写入头覆写邻近轨道,这覆写了邻近轨道中所存储的数据,并且可能导致数据丢失。为了缓解数据丢失,邻近轨道中所存储的数据可以首先被读取并且然后写入到碟盘的另一区块,使得在写入新的数据之后,被移动的数据可以被读取并且写入回到先前存储数据的轨道。
[0026]为了减少SMR硬驱动器中典型要求的附加读取和写入操作,本公开的技术可以使得主机4和/或硬驱动器6能够管理数据存储装置12中的数据的轨道上的写入命令。例如,硬驱动器6可以被配置为以顺序方式将数据写入到轨道,使得硬驱动器6可以被配置为写入到新的PBA,而不是重用与主机4所利用的LBA相关联的先前PBA。然而,写入到下一可用PBA可能导致由主机4所利用的LBA与由硬驱动器6所写入的PBA之间的映射方案的不匹配。
[0027]范围分配器模块16、17可以被配置为管理由主机4所利用的LBA以及由控制器8所利用的LBA。范围分配器模块16可以包括映射表,以将由主机4所利用的LBA( “主机LBA”)映射为由控制器8所利用的LBA( “驱动器LBA”),或反之亦然。例如,范围分配器模块16可以从主机4接收写入命令,并且检查映射表,以确定对于在前的(pr1r)写入是否已经被写入到主机LBA 4上。范围分配器模块16可以确定与写入指针相关联的驱动器LBA,并且将主机LBA映射为驱动器LBA。范围分配器模块16可以发出用于在驱动器LBA处写入数据的写入命令。
[0028]范围分配器模块17可以包括映射表,以将由主机4所利用的LBA(“主机LBA”)映射为由硬驱动器6所写入的PBA(“驱动器PBA”)。例如,范围分配器模块17可以从主机4接收写入命令,并且检查映射表,以确定硬驱动器6先前是否写入到主机LBA。范围分配器模块17可以确定与写入指针相关联的驱动器PBA,并且将主机LBA映射为驱动器PBA。范围分配器模块17可以发出使得写入头在与主机LBA相关联的驱动器PBA处写入数据的写入命令。
[0029]通过循序地写入数据并且将硬驱动器6看作“仅附接的”,本公开的技术与其它SMRHDD相比,可以提高硬驱动器6的性能。通过将硬驱动器6看作“仅附接的”,硬驱动器6不覆写硬驱动器6上所存储的有效数据。如果硬驱动器6在原始PBA处而不是由范围分配器模块16、17所映射的PBA处写入数据,则硬驱动器6可以避免必须重写另外会被覆写的数据。因此,硬驱动器6可以执行比传统SMR HDD更快的写入。此外,通过管理由主机4所利用的LBA与驱动器LBA或驱动器PBA之间的映射,范围分配器模块16、17可以从OS中隐藏硬驱动器6的“仅附接的”性质。因为范围分配器模块16可以管理对于将数据写入到硬驱动器6以及从硬驱动器6读取数据所需的信息,所以本公开的技术可以使得主机4能够在使用传统SMR HDD的同时受益于提高的SMR HDD写入速度。
[0030]图2是示出根据本公开的一个或多个技术的示例范围分配器系统的概念性和示意性框图。范围分配器系统24可以包括范围分配器管理模块25和范围分配器模块20A-20N(统称为“范围分配器模块20” ) ο可以在主机4和/或硬驱动器6上包含范围分配器管理模块25。类似地,可以在主机4和/或硬驱动器6上包含范围分配器模块20。在一些示例中,范围分配器系统24包括一个范围分配器模块20。然而,在一些示例中,范围分配器系统24包括一个以上范围分配器模块20。例如,对于硬驱动器6的每一个区,主机4和/或硬驱动器6可以包含一个范围分配器模块20。
[0031]范围分配器管理模块25可以管理一个或多个范围分配器模块20,其中的每一个与硬驱动器6的至少一个相应区相关联。例如,如果主机4发送用于在特定主机LBA处写入数据的命令,则范围分配器管理模块25可以询问指明哪个主机LBA对应于哪个区的查找表,以便确定将数据写入到哪个区。在确定特定主机LBA对应于硬驱动器6的哪个区之后,范围分配器管理模块25可以将写入命令从主机4转发到对于相应区的相应范围分配器模块20。
[0032]在一些示例中,范围分配器管理模块25可以跨越多个硬驱动器6管理各个区。例如,范围分配器管理模块25可以包括查找表,该查找表包括每个硬驱动器6以及对于每个相应硬驱动器6的每个区。如果主机4发送用于将数据写入到特定主机LBA的命令,则范围分配器管理模块25可以询问查找表,以标识硬驱动器6以及对应于该特定主机LBA的区。在标识硬驱动器6以及对应于该特定主机LBA的区之后,范围分配器管理模块25可以将写入命令从主机4转发到被配置为管理所标识的硬驱动器6和区的数据的相应范围分配器模块20。
[0033]图2的范围分配器模块20可以对应于图1的范围分配器模块16或范围分配器模块17。每个范围分配器模块20A-20N可以包括相应映射表22A-22N(统称为“映射表22”)。虽然映射表22在图2中被不出为包括用于各个主机LBA的多个行,但在实现方式中,映射表22典型地包括用于每个主机LBA的单个行,并且根据需要来更新驱动器LBA值,而不是在映射表22中添加新的行。为了说明的目的并且为了简化本公开的技术的描述,映射表22包括用于各个主机LBA和驱动器LBA的多个行。范围分配器模块20可以通过从主机4接收读取命令和写入命令并且向硬驱动器6发出读取命令和写入命令,来促进主机4与硬驱动器6之间的数据的写入和读取。正如将参照图3所描述的,范围分配器模块20还可以使得元数据被写入到硬驱动器6。
[0034]为了易于说明,将参照范围分配器模块20A描述范围分配器模块20。在一些示例中,范围分配器模块20A可以被包含在主机4上(例如,在范围分配器模块20A对应于图1的范围分配器模块16的示例中)。主机4可以发出用于在由主机所利用的特定LBA(例如,块1)(又被称为主机LBA)处写入数据的写入命令。主机4可以通过调用“PUT”函数来发送写入命令,该函数的参数可以包括将要被写入到硬驱动器6的数据以及主机LBA。范围分配器模块20A可以从主机4接收写入命令。范围分配器模块20A可以基于在映射表22A中存储的数据,确定数据是否先前已经写入到主机LBA。
[0035]映射表22A可以包括多个行和列。在一些示例中,映射表22A可以包括列“主机LBA”和“驱动器LBA”。主机LBA可以表示由主机4所利用的LBA,而驱动器LBA可以表示由硬驱动器6上的控制器8所利用的LBA。基于映射表22A,范围分配器模块20A可以将主机LBA转译(translate)为驱动器LBA。因此,主机4可以发送写入命令,范围分配器模块20A可以将主机LBA映射为驱动器LBA,并且范围分配器模块20A可以发出写入命令,使得硬驱动器6可以以顺序方式写入数据。由范围分配器模块20A所发出的写入命令可以包括将要写入的数据、指定将要在硬驱动器6上的何处写入数据的驱动器LBA以及将要写入的数据的长度。
[0036]控制器8可以从范围分配器模块20A接收写入命令,使得写入头在区中的下一PBA处写入数据,并且返回与PBA相关联的驱动器LBA。例如,在主机4第一次发送用于在主机LBAI处写入数据的写入命令时,范围分配器模块20A可以从主机4接收用于在主机LBA I处写入数据的写入命令,并且确定对应的驱动器LBA。范围分配器模块20A可以通过确定当前与区的写入指针相关联的地址,来确定下一可用的驱动器LBA。当前与给定区的写入指针相关联的地址还可以被称为下一写入地址。
[0037]在示出的示例中,区的写入指针指向驱动器LBAI。范围分配器模块20A可以更新映射表22A,以记录对应的主机LBA和驱动器LBA,并且可以将命令发送到控制器8,以将数据写入到驱动器LBA I。在一些示例中,范围分配器模块20A可能确定映射表22A不包括与主机LBA对应的项,并且可能在映射表22A中创建新的项,以记录对应的主机LBA和驱动器LBAt^U如,范围分配器模块20A可以询问映射表22A,以确定映射表22A是否包括主机LBA I的项。如果映射表22A不包括与主机LBA I对应的项,则范围分配器模块20A可以在映射表22A中创建对于主机LBA I和对应的驱动器LBA的新项。在一些示例中,范围分配器模块20A可以将写入命令发送到控制器8,然后更新映射表22A,并且响应于接收到在其处控制器8实际写入数据的驱动器LBA的指示而更新映射表22A,以将主机LBA映射为由控制器8所指示的驱动器LBA。控制器8可以将驱动器LBA I转换为驱动器PBA,并且命令写入头在对应的PBA处写入数据。
[0038]主机4可以第一次发送用于在主机LBA2处写入数据的命令。基于当前与区写入指针相关联的地址,范围分配器模块20A可以将主机LBA 2映射为驱动器LBA 2。范围分配器模块20A可以发出使得在驱动器LBA 2处写入数据的写入命令。在写入数据之后,可以更新区写入指针,以指向硬驱动器6上的下一可用的驱动器LBA(例如,驱动器LBA 3)。类似地,范围分配器模块20A可以从主机4接收用于在LBA 3处写入数据的命令。范围分配器模块20A可以检查映射表22A,确定主机LBA 3还未被写入,并且将主机LBA 3映射为与区写入指针相关联的驱动器LBA(例如,驱动器LBA3)。范围分配器模块20A可以将命令发送到控制器8,以便控制器8使得写入头在相关联驱动器LBA处写入数据。对于控制器8所接收的每个写入命令,控制器8可以将驱动器LBA转译为PBA,并且使得硬驱动器6在特定PBA处写入数据。例如,控制器8可以向硬件引擎发送使得写入头写入数据的命令。
[0039]主机4可以第二次发送用于将数据写入到主机LBA I的命令。然而,因为硬驱动器6被配置为将数据附接到最新近写入的数据的结尾,所以范围分配器模块20A可以被配置为将主机LBA重新映射为与当前与写入指针相关联的地址对应的新的驱动器LBA。在示出的示例中,在主机4第二次发送用于在主机LBA I处写入数据的写入命令时,范围分配器模块20A可以确定写入指针对应于驱动器LBA4。因此,范围分配器模块20A可以将主机LBAl重新映射为驱动器LBA4。在一些示例中,范围分配器模块20A可以确定映射表22A已经包括与主机LBA对应的项,并且可以更新映射表22A中的现有项,以将主机LBA映射为新的驱动器LBA。例如,范围分配器模块20A可以询问映射表22A,以确定映射表22A是否包括主机LBAl的项。如果映射表22A包括主机LBAl的项,则范围分配器模块20A可以将主机LBAl的现有映射从驱动器LBAl更新为驱动器LBA 4。在一些示例中,范围分配器模块20A可以在映射表22A中创建新的项,以用于主机LBA与驱动器LBA之间的更新的映射。例如,范围分配器模块20A可以在映射表22A中创建将主机LBA I映射为驱动器LBA 4的新的行,并且删除在前的映射或者将在前的映射标记为无效。
[0040]范围分配器模块20A可以将用于在更新的驱动器LBA4处写入数据的命令发送到控制器8。控制器8可以向硬件引擎发送命令,使得硬驱动器6在与驱动器LBA 4相关联的PBA处写入数据。通过在当前与写入指针相关联的地址处附接数据,硬驱动器6的性能对于其它SMR HDD可以得到提高,这是因为,由于邻近轨道不包含有效数据,因此在当前与写入指针相关联的地址处写入数据不会覆写硬驱动器6上所存储的其它有效数据,使得硬驱动器6能够避免必须重写在硬驱动器6在原始PBA处而不是更新的PBA处写入数据的情况下会被覆写的数据。此外,范围分配器模块20A可以通过管理主机LBA与驱动器LBA之间的映射,从OS隐藏硬驱动器6的“仅附接的”写入。
[0041]在第二次尝试写入到主机LBA块I之后,主机4可以发送用于在主机LBA 4处写入数据的写入命令。范围分配器模块20A可以检查映射表22A,并且确定:由于映射表22A中不存在对于主机LBA 4的现有项,因此主机LBA 4先前未被写入。范围分配器模块20A可以执行查找,以确定与写入指针相关联的当前驱动器LBA,以基于所述查找而确定区的写入指针与驱动器LBA 5对应,并且将主机LBA 4映射为驱动器LBA 5。范围分配器模块20A可以发出使得控制器8在驱动器LBA 5处写入数据的写入命令。在写入数据之后,范围分配器模块20A可以将写入指针的值更新为下一可用的驱动器LBA的值(例如,驱动器LBA 6)。
[0042]主机4可以发送用于将数据写入到先前已经写入数据的主机LBA的附加命令。例如,在尝试写入主机LBA 1-6之后,主机4可以发送用于在主机LBA 2处重写数据的命令。范围分配器模块20A可以检查映射表22A,并且确定主机LBA 2过去已经被写入(S卩,因为映射表22A内存在主机LBA 2的项,并且该项并未被标记为无效)。范围分配器模块20A并不是将数据写入到驱动器LBA 2,而是可以确定当前与写入指针相关联的地址(S卩,由写入指针所存储的LBA),并且将主机LBA 2映射为当前与写入指针相关联的地址(例如,映射表22A所示的驱动器LBA 8)。在该示例中,范围分配器模块20A可以确定下一可用的驱动器LBA是驱动器LBA 8,并且可以更新映射表22A,以示出主机LBA 2在驱动器LBA 8处写入到硬驱动器6。
[0043]范围分配器模块20A可以继续从主机4接收写入命令,并且确定每个命令的主机LBA是否为第一次写入或者主机LBA过去是否已被使用。范围分配器模块20A可以确定与写入指针相关联的驱动器LBA,并且将主机LBA映射为与写入指针相关联的驱动器LBA。范围分配器模块20A可以发出写入命令,并且将数据和更新的驱动器LBA传递到控制器8,使得能够在所确定的驱动器LBA处将数据写入到硬驱动器6。
[0044]在一些示例中,范围分配器模块20A管理相应区30的写入指针。在一些示例中,范围分配器模块20A可以通过询问映射表22A来确定写入指针的值,以确定映射表22A中所记录的最大主机LBA,并且将写入指针设定为下一可用的(S卩,下一未使用的)驱动器LBA。例如,范围分配器模块20A可以询问映射表22A,确定映射表22A中所记录的最末的驱动器LBA是驱动器LBA 13,并且将写入指针设定为下一未使用的驱动器LBA(S卩,驱动器LBA 14)。在一些示例中,写入指针包括由主机4或硬驱动器6所管理的存储器中所存储的整数。例如,在范围分配器模块20A将主机LBA映射为特定驱动器LBA并且硬驱动器6将数据写入到该特定驱动器LBA之后,范围分配器模块20A可以将存储器中所存储的整数更新为与硬驱动器6上的下一未使用的驱动器LBA对应的数字。
[0045]主机4可以发送用于读取在给定的主机LBA处存储的数据的读取命令。范围分配器模块20A可以接收命令,并且可以基于映射表22A来确定与主机LBA相关联的当前驱动器LBA。范围分配器模块20A可以将具有最新近的驱动器LBA的读取命令发送到控制器8。控制器8可以从范围分配器模块20A接收该读取命令,并且使得与该驱动器LBA相关联的数据得以读取。
[0046]在一些示例中,范围分配器模块20A可以被包含在硬驱动器6内而不是主机4内,诸如在控制器8包含范围分配器模块17的示例中,如图1所示。在该示例中,范围分配器模块20A可以从主机4接收主机LBA,并且将主机LBA映射为驱动器I3BA。在该示例中,映射表22将包括列“主机LBA”和“驱动器PBA”。例如,范围分配器模块20A可以询问映射表22A,以确定映射表22A是否包括对于特定主机LBA的项。如果主机4发送用于将数据写入到已经被写入的特定主机LBA的命令,则范围分配器模块20A可以将主机LBA重新映射为新的PBA,该新的PBA对应于当前与写入数据的特定区的区写入指针相关联的地址。范围分配器模块20A可以通过更新映射表22A中的现有项或者通过在映射表22A中创建新的项并且将现有映射标记为陈旧或无效的,来将主机LBA重新映射为新的PBA。范围分配器模块20A可以发送包括该新的PBA的写入命令,以便控制器8使得数据在该新的PBA处被写入到硬驱动器6。类似地,主机4可以将包括主机LBA的读取命令发送到范围分配器模块20A。范围分配器模块20A可以确定与主机4所指定的特定LBA相关联的PBA,并且发出使得数据从该PBA被读取的读取命令。硬驱动器6上的范围分配器模块20A还可以维持硬驱动器6上的相应区的写入指针。例如,范围分配器模块20A可以通过以下操作来确定写入指针:询问映射表22A,确定在映射表22A中所记录的最大驱动器PBA,并且将写入指针设定为下一写入的PBA。在一些示例中,范围分配器模块20A可以通过在存储器中存储与硬驱动器6上的下一未使用的PBA对应的整数来维持写入指针。
[0047]图3是示出根据本公开的一个或多个技术的SMRHDD的示例区的概念性和示意性框图。虽然图3中仅示出单个区,但硬盘6可以包括任何数量的区30。在一些示例中,硬驱动器6的每个区30可以存在一个范围分配器模块20。每个区30与对应于区30内用于下一写入的位置的相应写入指针相关联。在一些示例中,主机4或硬驱动器6可以包括范围分配器管理模块25,该范围分配器管理模块25确定哪个范围分配器模块20将从主机4接收写入命令。范围分配器管理模块25可以包括查找表,该查找表包括每个硬驱动器6、范围分配器模块20以及与每个硬驱动器6和范围分配器模块20相关联的主机LBA的区间(range)。范围分配器管理模块25可以从主机4接收写入命令,确定哪个范围分配器模块20应当接收写入命令,并且将写入命令转发到相应范围分配器模块20。当特定范围分配器模块20从主机4接收到用于在其相应区30中的主机LBA处写入数据的命令时,范围分配器模块20可以使用如参照图2所描述的映射表22,将从主机4接收到的主机LBA转译为驱动器LBA。
[0048]在一些示例中,区30包括多个范围32、多个元数据34以及概要元数据35。每个范围32包括来自主机4的与相应写入命令对应的数据。元数据34的每个区段(sect1n)提供关于相应范围32的信息。在一些示例中,元数据34包括相关联的范围32的驱动器LBA 36(例如,由范围分配器模块20所映射的LBA)、范围的长度或大小37(例如,位的数量)以及一个或多个后向指针38。一个或多个后向指针38可以指定与不同数据相关联的元数据34的集合的位置。在一些示例中,元数据34可以包括在范围32内所包含的数据的校验和。元数据34可以包括更多或更少类别的信息。元数据34可以是固定大小。然而,元数据34在大小方面可以是可变的。
[0049]概要元数据35可以包括在被指明为存储多个元数据34集合的硬驱动器6的特定部分内所存储的元数据集合。概要元数据35可以包括关于区30中的每个范围32的信息,诸如相应驱动器LBA 36,PBA 39和数据长度37。数据长度37指定数据的大小(例如,数据的字节的数量、用于存储数据的块的数量等)。
[0050]在操作中,范围分配器模块20可以向控制器8发送包含数据和驱动器LBA的写入命令,以便控制器8使得数据被写入到区30中的范围32。范围分配器模块20还可以命令控制器8将元数据34写入到相应区。控制器8可以使写入头在每一范围32之后写入元数据34,使得每一范围32具有对应区段的元数据34。在一些示例中,范围分配器模块20使元数据34被附接到区30,从而使得元数据34可以紧接地位于其相应范围32之后。
[0051]元数据34可以允许硬驱动器6和/或主机4确定在硬驱动器6上何处写入范围32。如图3所示,在一些示例中,每个元数据34为固定大小,并且元数据包括范围32的驱动器LBA36和大小37。因此,主机4和/或硬驱动器6可以计算范围32的开始位置以及在前的元数据34的位置。在一些示例中,一个或多个后向指针38可以加速发现更早的元数据34。一个或多个后向指针38可以指向先前写入的元数据34或范围32,这可以允许主机4或控制器8确定元数据34的先前一个区段(或多个区段)位于何处,而无需计算位置。因此,主机4或控制器8可以更高效地确定在前的范围32位于何处。
[0052]控制器8可以在预定数量的范围32之后写入概要元数据35。在一些示例中,控制器8可以在被指明为存储多个元数据36集合的硬驱动器6的部分中(诸如,在相应区30的结尾处)写入概要元数据35。概要元数据35可以使得主机4或硬驱动器6能够确定区30上的每一范围32的驱动器LBA、PBA和大小,而无需读取整个区30。
[0053]在一些示例中,可能需要重建映射表22,并且范围分配器模块20可以基于元数据来确定哪个驱动器LBA对应于给定的主机LBA。由于典型地循序写入元数据,因此当前与特定主机LBA对应的元数据可以是对于在该特定主机LBA处存储的数据的最新近写入的元数据。范围分配器模块20可以至少通过确定哪个驱动器LBA被包含在对于在特定主机LBA处写入的数据的最新近写入的元数据中,来确定哪个驱动器LBA对应于该特定主机LBA。例如,如果范围分配器模块20将主机LBA I映射为驱动器LBA I,并且稍后将主机LBA I重新映射为驱动器LBA 4,则范围分配器模块20可以通过确定哪个元数据集合是最新近写入的、询问对应于主机LBA I的当前元数据,来确定与主机LBA I相关联的哪个元数据集合是与主机LBAI相关联的当前元数据,并且确定该元数据包含驱动器LBA 4。
[0054]范围分配器模块20可以辅助硬驱动器6的垃圾收集。例如,对特定主机LBA进行重写数据,可以使得硬驱动器6上的数据变为陈旧或无效的。此外,映射表22可能包括陈旧或无效的项。例如,如果特定主机LBA被写入超过一次,则仅仅该主机LBA与驱动器LBA(或驱动器PBA)之间的最新近映射是有效的。主机4和/或控制器8可以通过以下操作来执行垃圾收集:将映射表22中的主机LBA的至少一部分重新映射为驱动器LBA(或驱动器I3BA)的连续区段,并且使硬驱动器6的写入头在区30内的连续块中重写相应数据。
[0055]图4是示出根据本公开的一个或多个技术的用于将数据存储到SMRHDD的示例技术的流程图。为了说明的目的,将参考图1的硬驱动器6、图2的范围分配器模块20和图3的区30来描述图4所示的示例性技术,但可以通过硬件或软件的任何组合来使用所述技术。
[0056]在一些示例中,范围分配器模块20可以从主机4接收写入命令(42)。写入命令可以包括数据块和主机LBA。在一些示例中,主机4可以发送对于已经被写入的主机LBA的写入命令。范围分配器模块20可以检查映射表22,以确定主机LBA是否已经被写入。
[0057]范围分配器模块20可以将从主机4接收到的主机LBA映射为驱动器LBA(44)。例如,范围分配器模块20可以询问映射表22,并且确定映射表22是否包括对于由主机4所指定的特定主机LBA的项。如果映射表22包括对于由主机4所指定的特定主机LBA的项,则范围分配器模块20可以将主机LBA与驱动器LBA之间的映射更新为当前与写入指针相关联的地址。如果映射表22不包括对于由主机4所指定的特定主机LBA的项,则范围分配器模块20可以在映射表22中创建将由主机4所指定的主机LBA映射为当前与写入指针相关联的地址的项。在一些示例中,范围分配器模块20可以基于硬驱动器6的相应区的写入指针,确定哪个驱动器LBA将映射为主机LBA。
[0058]范围分配器模块20可以通过询问映射表22来确定当前与写入指针相关联的地址,以确定下一未使用的驱动器LBA(S卩,尚未被写入的最小驱动器LBA)。在一些示例中,写入指针可以包括存储器中所存储的整数,并且范围分配器模块20可以在每一个写入之后增加该整数,使得该整数对应于下一未使用的驱动器LBA。在一些示例中,写入指针对应于下一未使用的驱动器PBA(即,尚未写入的最小驱动器PBA)。
[0059]在一些示例中,范围分配器模块20可以将从主机4接收到的主机LBA映射为驱动器PBAt^U如,范围分配器模块20可以询问映射表22,并且确定映射表22是否包括对于由主机4所指定的特定主机LBA的项。如果映射表22包括对于由主机4所指定的特定主机LBA的项,则范围分配器模块20可以将特定主机LBA重新映射为当前与写入指针相关联的地址。如果映射表22不包括对于由主机4所指定的特定主机LBA的项,则范围分配器模块20可以创建将由主机4所指定的特定主机LBA映射为由写入指针所指示的PBA的项。
[0060]范围分配器模块20可以向硬驱动器6发送包括由主机4所指定的数据以及被映射为主机4所指定的主机LBA的驱动器LBA的写入命令(46)。写入命令可以使得硬驱动器6将数据写入到由范围分配器模块20所确定的驱动器LBA。在硬驱动器6包括范围分配器模块20的实例中,控制器8可以从主机4接收写入命令。范围分配器模块20可以将主机LBA映射为对应的驱动器LBA或驱动器PBA,可以维持指示下一未使用的块地址的写入指针,并且可以将主机LBA映射为当前与写入指针相关联的地址。由于写入指针指向下一未使用的块,所以范围分配器模块20以顺序方式将主机LBA映射为对应的驱动器LBA或驱动器PBA。因此,硬驱动器6可以循序地写入数据,这样可以减少必须重写的数据量,并且提高硬驱动器6的写入性能。
[0061]范围分配器模块20可以向控制器8发送用于将元数据34写入到硬驱动器6的命令
(48)。在一些示例中,控制器8可以使得写入头在紧随数据的位置中在每一范围32之后将元数据34写入到硬驱动器6。元数据34可以包括与数据对应的驱动器LBA、数据长度和对元数据34的至少一个在前区段的一个或多个后向指针,以及被写入到范围32的数据的校验和。元数据34可以使得硬驱动器6和/或主机4能够确定在硬驱动器6上何处写入范围32。在一些示例中,主机4和/或硬驱动器6可以基于元数据34的大小、驱动器LBA 36和范围32的大小37,确定范围32的开始位置和在前的元数据34的位置。
[0062]范围分配器模块20可以向控制器8发送用于将概要元数据写入到硬驱动器6的命令(50)。在一些示例中,概要元数据可以包括对于每个数据的范围的驱动器LBA、PBA以及数据长度。在一些示例中,范围分配器模块20可以使得概要元数据被写入在区30的结尾处。概要元数据可以使得主机4和/或硬驱动器6能够在未读取整个区30的情况下确定区30上的每一个范围32的驱动器LBA、PBA和大小。
[0063]图5是示出根据本公开的一个或多个技术的用于从SMRHDD读取数据的示例方法的流程图。为了说明的目的,将参考图1的硬驱动器6、图2的范围分配器模块20和图3的区30来描述图5所示的示例性技术,但可以通过硬件或软件的任何组合来使用所述技术。
[0064]在一些示例中,主机4可以发送用于从特定主机LBA读取数据的读取命令。范围分配器模块20可以从主机4接收该读取命令(62)。读取命令可以包括指定主机4想要接收哪个数据块的主机LBA。
[0065]范围分配器模块20可以确定与主机4所指定的LBA相关联的驱动器LBA(64)。例如,范围分配器模块20可以询问映射表22,以确定哪个驱动器LBA先前被映射为主机LBA。在一些示例中,映射表22可以包括对于由主机4所指定的LBA的多个项。范围分配器模块20可以通过确定项是否已经被标记为无效或陈旧或者通过确定哪个项将主机LBA映射为最大驱动器LBA,来确定哪个项包括当前映射。在一些示例中,范围分配器模块20可以确定与主机4所指定的LBA相关联的驱动器PBA。例如,范围分配器模块20可以询问映射表22,以确定哪个驱动器PBA先前被映射为主机LBA。如果映射表22包括对于主机LBA的多个项,则范围分配器模块20可以通过确定项是否已经被标记为陈旧或无效或者通过确定哪个项将主机LBA映射为最大驱动器PBA,来确定哪个项包括当前映射。
[0066]范围分配器模块20可以向硬驱动器6发送用于在与主机LBA相关联的驱动器LBA处读取数据的读取命令(66)。在一些示例中,该读取命令可以包括驱动器LBA。在一些示例中,该读取命令可以包括驱动器PBA。硬驱动器6可以接收用于从特定驱动器LBA或驱动器PBA读取数据的命令,并且将该数据返回给主机4。
[0067]可以至少部分地以硬件、软件、固件或其任何组合来实现本公开中所描述的技术。例如,所描述的技术的各个方面可以被实现在一个或多个处理单元内,包括一个或多个微处理器单元、数字信号处理单元(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或任何其它等同集成电路或分立式逻辑电路以及这些组件的任何组合。术语“处理单元”或“处理电路”一般可以单独地指代任何前述逻辑电路、或者指代与其它逻辑电路组合的任何前述逻辑电路、或者指代任何其它等同电路。包括硬件的控制单元也可以执行本公开的技术中的一个或多个。
[0068]可以在同一设备内或在分离的设备内实现这样的硬件、软件和固件,以支持本公开中所描述的各种技术。此外,可以将任何所描述的单元、模块或组件实现在一起,或者将其分离地实现为分立式但可协作的逻辑器件。将不同特征描述为模块或单元意图强调不同的功能方面,并不一定暗指这些模块或单元必须实现为分离的硬件、固件或软件组件。相反,与一个或多个模块或单元相关联的功能可以由分离的硬件、固件或软件组件执行,或集成在公共的或分离的硬件、固件或软件组件内。
[0069]还可以在包含用指令编码的计算机可读存储介质的制造物(articleofmanufacture)中体现或编码本公开中所描述的技术。例如在由一个或多个处理单元执行计算机可读存储介质中所包含或编码的指令时,嵌入或编码在包含编码的计算机可读存储介质的制造物中的指令,可以使得一个或多个可编程处理单元或其它处理单元实现在此所描述的技术中的一个或多个。计算机可读存储介质可以包括随机存取存储器(RAM)、只读存储器(R0M)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存、硬盘、压缩盘ROM(CD-ROM)、软盘、盒带、磁介质、光学介质或其它计算机可读介质。在一些示例中,制造物可以包括一个或多个计算机可读存储介质。
[0070]在一些示例中,计算机可读存储介质可以包括非瞬时介质。术语“非瞬时”可以指示存储介质未被体现在载波或传播的信号中。在某些示例中,非瞬时存储介质可以(例如,在RAM或高速缓存中)存储能够随时间改变的数据。
[0071]已经描述了本公开的各个示例。考虑所描述的系统、操作或功能的任何组合。这些和其它示例处于所附权利要求的范围内。
【主权项】
1.一种方法,包括: 由在主机设备处运行的范围分配器模块接收用于写入数据的命令,其中该命令包含主机所指定的逻辑块地址LBA和数据; 由范围分配器模块将主机所指定的LBA映射为驱动器LBA;以及 将用于在驱动器LBA处写入数据的命令从范围分配器模块发送到硬驱动器。2.如权利要求1所述的方法,还包括: 由范围分配器模块确定先前是否已经写入主机所指定的LBA;以及响应于确定先前已经写入主机所指定的LBA,由范围分配器模块更新现有的映射,使得主机所指定的LBA与更新的驱动器LBA对应。3.如权利要求1所述的方法,还包括: 由范围分配器模块确定先前是否已经写入主机所指定的LBA;以及响应于确定先前尚未写入主机所指定的LBA,由范围分配器模块创建新的映射,使得主机所指定的LBA与驱动器LBA对应。4.如权利要求1所述的方法,其中,将主机所指定的LBA映射为驱动器LBA包括: 基于写入指针,确定下一写入地址; 由范围分配器模块确定映射表是否包含主机所指定的LBA以及与主机所指定的LBA相关联的驱动器LBA;以及 由范围分配器模块更新映射表,使得映射表包含主机所指定的LBA以及对应的驱动器LBA,其中对应的驱动器LBA与下一写入地址相关联。5.如权利要求1所述的方法,还包括: 由范围分配器模块将用于写入与数据相关联的元数据集合的命令发送到控制器,其中元数据集合包含与主机所指定的LBA相关联的驱动器LBA、数据的长度以及至少一个后向指针,其中所述至少一个后向指针中的每一个后向指针指定与不同数据相关联的元数据集合的相应位置。6.如权利要求1所述的方法,还包括: 由范围分配器管理模块接收用于写入数据的命令; 由范围分配器管理模块基于主机所指定的LBA,标识多个范围分配器模块之中的一个范围分配器模块,其中多个范围分配器模块之中的每一个范围分配器模块管理在硬驱动器的多个区中的相应区处所存储的数据;以及 将用于写入数据的命令从范围分配器管理模块发送到所述一个范围分配器模块。7.如权利要求1所述的方法,还包括: 由范围分配器模块将用于写入与数据相关联的元数据集合的命令发送到控制器,其中元数据集合包含与主机所指定的LBA相关联的驱动器LBA以及数据的长度,其中将元数据集合存储在被指明为存储多个元数据集合的硬驱动器的特定部分内,并且其中将多个元数据集合循序地存储在驱动器的特定部分内。8.如权利要求1所述的方法,还包括: 由范围分配器模块将用于读取与数据相关联的元数据集合的命令发送到控制器,其中元数据包含与主机所指定的LBA相关联的驱动器LBA; 由范围分配器模块确定与数据相关联的哪个元数据集合是相应数据的当前元数据集合;以及 由范围分配器模块基于确定哪个元数据集合是相应数据的当前元数据集合,来更新主机所指定的LBA与驱动器LBA的映射。9.一种方法,包括: 由在硬驱动器处运行的范围分配器模块接收用于写入数据的命令,其中该命令包含主机所指定的逻辑块地址LBA和数据; 由范围分配器模块将主机所指定的LBA映射为驱动器物理块地址PBA,其中驱动器PBA对应于当前与写入指针相关联的地址;以及 将用于在驱动器PBA处写入数据的命令从范围分配器模块发送到硬驱动器的硬件引擎。10.如权利要求9所述的方法,还包括: 由范围分配器模块确定先前是否已经写入主机所指定的LBA;以及响应于确定先前已经写入主机所指定的LBA,由范围分配器模块更新现有的映射,使得主机所指定的LBA与更新的驱动器PBA对应。11.如权利要求9所述的方法,还包括: 由范围分配器模块确定先前是否已经写入主机所指定的LBA;以及响应于确定先前尚未写入主机所指定的LBA,由范围分配器模块创建新的映射,使得主机所指定的LBA对应于驱动器PBA。12.如权利要求9所述的方法,其中,将主机所指定的LBA映射为驱动器PBA包括: 基于写入指针,确定下一写入地址; 由范围分配器模块确定映射表是否包含主机所指定的LBA以及与主机所指定的LBA相关联的驱动器PBA;以及 由范围分配器模块更新映射表,使得映射表包含主机所指定的LBA以及对应的驱动器PBA,其中对应的驱动器PBA与下一写入地址相关联。13.如权利要求9所述的方法,还包括: 由范围分配器模块将用于写入与数据相关联的元数据集合的命令发送到控制器,其中元数据集合包含与主机所指定的LBA相关联的驱动器PBA、数据的长度以及至少一个后向指针,其中所述至少一个后向指针中的每一个后向指针指定与不同数据相关联的元数据集合的相应位置。14.如权利要求9所述的方法,还包括: 由范围分配器管理模块接收用于写入数据的命令; 由范围分配器管理模块基于主机所指定的LBA,标识多个范围分配器模块之中的一个范围分配器模块,其中多个范围分配器模块之中的每一个范围分配器模块管理在硬驱动器的多个区中的相应区处所存储的数据;以及 将用于写入数据的命令从范围分配器管理模块发送到所述一个相应范围分配器模块。15.如权利要求9所述的方法,还包括: 由范围分配器模块将用于写入与数据相关联的元数据集合的命令发送到控制器,其中元数据集合包含与主机所指定的LBA相关联的驱动器PBA以及数据的长度,其中将元数据集合存储在被指明为存储多个元数据集合的驱动器的特定部分内,并且其中将多个元数据集合循序地存储在驱动器的特定部分内。16.如权利要求9所述的方法,还包括: 由范围分配器模块将用于读取与数据相关联的元数据集合的命令发送到控制器,其中元数据包含与主机所指定的LBA相关联的驱动器PBA; 由范围分配器模块确定与数据相关联的哪个元数据集合是相应数据的当前元数据集合;以及 由范围分配器模块基于确定哪个元数据集合是相应数据的当前元数据集合,来更新主机所指定的LBA与驱动器PBA的映射。17.—种设备,包括: 至少一个处理器;以及 范围分配器模块,其可由至少一个处理器操作,并且被配置为: 接收用于写入数据的命令,其中该命令包含主机所指定的逻辑块地址LBA和数据; 将主机所指定的LBA映射为驱动器LBA;以及 将用于在驱动器LBA处写入数据的命令发送到硬驱动器。18.如权利要求17所述的设备,其中,范围分配器模块进一步被配置为: 基于写入指针,确定下一写入地址; 确定映射表是否包含主机所指定的LBA以及与主机所指定的LBA相关联的驱动器LBA;以及 更新映射表以包含主机所指定的LBA以及对应的驱动器LBA,其中对应的驱动器LBA与下一写入地址相关联。19.一种设备,包括: 接口; 硬件引擎;以及 控制器,包括: 至少一个处理器;以及 范围分配器模块,其可由至少一个处理器操作,并且被配置为: 经由接口接收用于写入数据的命令,其中该命令包含主机所指定的逻辑块地址LBA和数据; 将主机所指定的LBA映射为驱动器物理块地址PBA,其中驱动器PBA对应于当前与写入指针相关联的地址;以及 将用于在驱动器PBA处写入数据的命令发送到硬件引擎。20.如权利要求19所述的设备,其中,范围分配器模块进一步被配置为通过至少被配置为进行以下操作来将主机所指定的LBA映射为驱动器PBA: 基于写入指针,确定下一写入地址; 确定映射表是否包含主机所指定的LBA以及与主机所指定的LBA相关联的驱动器PBA;以及 更新映射表以包含主机所指定的LBA以及对应的驱动器I3BA,其中对应的驱动器PBA与下一写入地址相关联。
【文档编号】G06F12/10GK105843753SQ201610074218
【公开日】2016年8月10日
【申请日】2016年2月2日
【发明人】Z.Z.班迪克, C.盖约特, A.C.曼扎内尔斯, N.沃特金斯
【申请人】Hgst荷兰公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1