用于操作叠瓦式磁记录设备的方法和装置与流程

文档序号:17690731发布日期:2019-05-17 21:01阅读:180来源:国知局
用于操作叠瓦式磁记录设备的方法和装置与流程

本申请实施例涉及计算机存储技术领域,更具体地涉及用于操作叠瓦式磁记录(SMR,Shingled Magnetic Recording)设备的方法和装置。



背景技术:

在计算机存储技术领域中,当前普遍使用垂直磁记录(PMR,Perpendicular Magnetic Recording)技术。如公知的那样,PMR使用并行磁道布局。随着大数据时代对硬盘存储容量的不断增加的需求,当前正在努力改善在当前记录介质的固有物理限制下的PMR存储容量。

例如,通过增加磁盘上的磁道数量和相应减小写磁头大小来提高存储容量。在这种情况下,随着在磁盘上磁道区域密度的增加,在介质上的比特的大小降低。为了维持充足的信噪比(SNR)以便于读取,制造商们必须使介质上的粒度大小降低。这又由于保持比特的材料的容积被减小而使得用于使比特反转的能量势垒减小。较低的能量势垒意味着周围热能更可能地使比特反转,从而降低了数据完整性。

为了增强能量势垒,必须增加材料的矫顽磁性以减少反转磁化的风险。然而这随着制造商们试图减小写磁头的大小以在磁盘上实现更多磁道而成为问题,因为越小的写磁头意味着越小的写区域(对应的矫顽磁性越小),而越小的写区域就会越来越不足以改变介质上的磁化,从而导致无法写入。

在这种情况下,出现了一种新的硬盘驱动技术——叠瓦式磁记录SMR。与PMR中的并行磁道布局不同,SMR允许磁盘上的磁道像房顶上的瓦片那样彼此叠置,从而增加磁盘密度或每英寸磁道数(TPI,tracks per inch)。通过利用SMR技术增加TPI和减小磁道间距,而无需缩小写磁头,SMR提供了对于增加整体硬盘驱动容量的巨大潜力。实际上,在SMR驱动中特意使写磁头较大,因为较大的写磁头意味着它可以更有效地使介质磁化(即进行写入),而无需折衷读取性能或稳定性(保持性)。

然而在这样的SMR布局中,写磁头比单个磁道宽,所以当向SMR硬盘写入数据时,必须顺序地写入数据,以使得写磁头不会损坏重叠磁道上的数据。

应明白的是,不可能将操作系统和文件系统都仅限于顺序地写入硬盘而使用。因为通常操作系统和文件系统都是需要对硬盘进行随机访问操作的。因此,需要创建一种针对SMR设备的管理或转换机制,来将随机访问转换成顺序访问。



技术实现要素:

本申请实施例的目的就在于提供一种针对SMR设备的操作机制,使得克服上述现有技术中的问题。

根据本申请实施例的一个方面,提供一种用于操作叠瓦式磁记录设备的方法,所述叠瓦式磁记录设备包括随机访问区和顺序访问区,在所述随机访问区中数据能够被随机读写,在所述顺序访问区中数据仅能够被顺序读写,并且所述顺序访问区在逻辑上被划分成在操作上相互独立的多个存储体,所述方法包括:在所述随机访问区中存储逻辑区块地址至物理区块地址映射关系;在所述顺序访问区中的所述多个存储体的每个存储体中分别存储相应部分的物理区块地址至逻辑区块地址映射关系;以及基于所述逻辑区块地址至物理区块地址映射关系以及所述物理区块地址至逻辑区块地址映射关系,对所述叠瓦式磁记录设备进行操作。

根据本申请实施例的另一方面,提供一种用于操作叠瓦式磁记录设备的装置,所述叠瓦式磁记录设备包括随机访问区和顺序访问区,在所述随机访问区中数据能够被随机读写,在所述顺序访问区中数据仅能够被顺序读写,并且所述顺序访问区在逻辑上被划分成在操作上相互独立的多个存储体,所述装置包括:第一存储控制模块,用于使得在所述随机访问区中存储逻辑区块地址至物理区块地址映射关系;第二存储控制模块,用于使得在所述顺序访问区中的所述多个存储体的每个存储体中分别存储相应部分的物理区块地址至逻辑区块地址映射关系;以及操作模块,用于使得基于所述逻辑区块地址至物理区块地址映射关系以及所述物理区块地址至逻辑区块地址映射关系来对所述叠瓦式磁记录设备进行操作。

根据本申请实施例的技术方案,能够提供一种针对SMR设备的操作或驱动机制,使得可以支持SMR设备所不能直接支持的随机访问操作,从而允许SMR设备与操作系统或文件系统的向后兼容性,进而方便用户的使用。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1示出了根据本申请实施例的用于操作SMR设备的方法的流程图;

图2示出了根据本申请实施例的用于操作SMR设备的SMR驱动布局架构的示意图;

图3示出了根据本申请实施例的用于针对SMR设备的写入操作的处理流程图;

图4示出了根据本申请实施例的用于针对SMR设备的读取操作的处理流程图;

图5示出了根据本申请实施例的用于更新针对SMR设备的存储体维护的计数器的操作的处理流程图;

图6示出了根据本申请实施例的用于针对SMR设备的垃圾回收操作的处理流程图;

图7示出了根据本申请实施例的用于针对SMR设备的LBA至PBA映射恢复操作的处理流程图;以及

图8示出了根据本申请实施例的用于操作SMR设备的装置的示意框图。

具体实施方式

如上面提到的,新的叠瓦式磁道布局大大地增加了磁盘密度或TPI,并且增加了整体驱动容量。但与此同时,在新的架构下原位更新将损坏之前写入的数据。于是引入针对SMR设备的逻辑区块地址(LBA,logic block address)转换层,以将逻辑上的随机访问重新排序为物理上的顺序写入。

类似于固态硬盘SSD的闪存转换层(FTL),SMR设备可以使用SMR(或叠瓦式)转换层(STL)。针对STL所处位置的不同,可以存在以下三种类型的SMR设备。

1.驱动管理类型

第一种类型被称为驱动管理,也被称为透明的。简单而言,SMR设备管理来自主机的所有请求,就像传统的HDD那样。驱动管理具有不需要主机感知SMR的优势。驱动管理的SMR设备可与几乎所有系统兼容。

驱动管理的缺陷在于,性能是不可预测的,因为驱动在其需要时操控其背景处理,而不管IO请求如何。附加地,由于入站的随机写入在主机侧上并不会被合并成顺序写入,所以与主机感知SMR的情况下相比,驱动承受更大压力,因而降低了所维持工作负载的执行。驱动管理的SMR设备通过利用多种“着陆区”来应对这些缺陷,在该着陆区中随机写入可以在被写入磁盘之前进行管理。将这一着陆区空间引入SMR设备的方式可以广泛地变化,但取决于每个SMR设备和制造商的目标市场,会导致明显不同的性能分布。

2.主机管理类型

第二种类型被称为主机管理。在这种主机管理下,主机使用命令和区域信息来通过管理IO使SMR设备的行为最优化,从而确保写入在区域内始终是顺序的。如果主机发送在区域内的非顺序写入,则SMR设备将拒绝它并返回错误。这给予SMR设备更高的可预测性能,并且将更可能地最初在企业和超大规模应用中看到。

主机管理的缺陷在于,SMR设备与对SMR不感知的主机系统(例如设备驱动器、文件系统、数据库等)不兼容。这意味着需要诸如文件系统之类的主机系统被适配成支持SMR设备。这首先在超大规模空间中出现,在超大规模空间中最大的世界玩家有能力修改其存储堆栈以考虑SMR,并且现在也在主流开放源空间中出现。

3.主机感知类型

最后一种类型被称为主机感知。总体而言,主机感知是前两种管理类型的组合。SMR设备是自我管理的,但它也允许使SMR设备行为最优化。在这种情况下,如果SMR设备接收到来自主机的非顺序写入,则它将接受该请求,但之后来自该请求的性能将是不可预测的。主机感知具有向后兼容的优势并且给予主机一些控制。

根据本申请实施例的用于操作SMR设备的机制适用于以上三种情况中的任意情况。换言之,根据本申请实施例的用于操作SMR设备的机制可以被用于集成有SMR转换层STL的SMR设备的实现中,也可以被用于主机系统中以与主机系统配合来实现对SMR设备的操控和使用。

为使本申请的目的、技术方案和优点更加清楚,以下结合附图及具体实施例,对本申请作进一步的详细说明。

在本申请实施例的上下文中,假设所有SMR设备都支持以下特征:

1.提供两种类型的区域:随机访问区和顺序访问区。随机访问区是并列磁道布局,类似传统PMR中那样,在其中数据是可以被随机访问的,即可以被原位更新。顺序访问区是叠瓦式磁道布局,在其中数据仅能够被顺序访问。

2.顺序访问区在逻辑上可以被划分成多个存储体。这些存储体之间存在间隙。对一个存储体更新数据将不会损坏在其它存储体上的数据。

在上述这样的假设下,下面结合图1描述根据本申请实施例的用于操作SMR设备的基本机制。图1示出了根据本申请实施例的用于操作SMR设备的方法100的流程图。

如图1所示,在步骤S101中,在随机访问区中存储LBA(逻辑区块地址)至PBA(物理区块地址)映射关系。

逻辑区块地址LBA可以被包含在针对SMR设备的数据访问请求中,例如数据读写请求,LBA可以表示随机访问数据的逻辑地址。物理区块地址可以对应于SMR设备中的数据存储的物理地址。

本申请实施例的核心点的一个方面就在于,在随机访问区中集中地保存LBA至PBA映射关系。

在一个实施例中,可以使用每个逻辑区块的LBA作为索引来查找该映射以获得对应的PBA。考虑到PBA和LBA都是64比特并且在区块层级上记录LBA至PBA映射,映射将针对1TB用户数据而占用4GB空间。为了加快对LBA至PBA映射关系的访问速度,在一个实施例中,可以在针对随机访问区的缓存(buffer)中存储LBA至PBA映射关系。例如,可以针对随机访问区设置高速缓存存储器(cache),以存储LBA至PBA映射关系,由此可以加快对LBA至PBA映射关系的访问速度。当然这里也可以使用已有或未来开发的任意合适类型的其它缓存方式来存储LBA至PBA映射关系。

在步骤S102中,在顺序访问区的每个存储体中存储相应部分的PBA至LBA映射关系。

这是本申请实施例的核心点的另一方面,即,在顺序访问区中将PBA至LBA映射关系分散地保存到各个存储体中。在一个实施例中,在顺序访问区的每一个存储体中分别存储与该存储体的物理地址对应的部分的PBA至LBA映射关系。

基于上述步骤S101和S102中的存储操作,接下来可以实现对SMR设备的各种操作处理。如图1所示,在步骤S103中,基于上述LBA至PBA映射关系和PBA至LBA映射关系,对SMR设备进行操作。

在一个实施例中,可以对SMR设备进行数据访问操作,例如数据写入/读取。在一个实施例中,也可以对SMR设备进行管理操作,例如磁盘空间整理(垃圾回收)、系统恢复等。稍后将对此进行更详细描述。

概况而言,本申请实施例的核心点在于对SMR设备的磁盘空间的组织方式,即对SMR设备的随机访问区和顺序访问区的使用方式。如前面提到的,在随机访问区中集中地保存LBA至PBA映射关系,以及在顺序访问区中将PBA至LBA映射关系分散地保存到各个存储体中。

这样的组织方式旨在于支持对SMR设备的随机访问操作,以实现SMR设备与主机系统或文件系统的兼容性。下面将结合图2至图7对此进行更详细描述。

图2示出了根据本申请实施例的用于操作SMR设备的SMR驱动布局架构的示意图。

1.随机访问区

根据本申请的实施例,在TB驱动容量下,随机访问区至少在GB量级上。

如前面提及的,在随机访问区中可以存储LBA至PBA映射关系。除此之外,在一个实施例中,在随机访问区中还可以存储SMR设备操作(SMR驱动转换层)的元数据。元数据至少可以包括下列中的一项或多项:空闲存储体列表、已用存储体列表、针对每个存储体分别维护的多个计数器、当前工作的存储体中的下一可用段、持久化写标签等。

在一个实施例中,在随机访问区中还可以直接存储预期被频繁修改的用户数据。例如,可以使用随机访问区中除了存储LBA至PBA映射关系以及元数据之外的剩余空间来保存一些预期被频繁修改的用户数据,例如当前正在编辑的文件等等。例如,如果预先知道特定LBA范围中的数据将被频繁修改,则可以将这种数据保存在随机访问区的直接映射区域中。这种方式可以大大减少顺序访问区中的碎片,方便SMR设备的管理。但是直接映射区域资源有限,用户在决定将哪部分数据放入该区域中时需要进行折衷考虑。

2.顺序访问区

根据本申请的实施例,对顺序访问区的空间进行了层级划分,其中多个存储体中的每个存储体被划分成多个段,每个段包括段头部和多个区块,段头部包括相应部分的PBA至LBA映射关系,多个区块中的每个区块用作数据读写的最小单位。为方便理解,参照图2,下面对其中的术语描述如下:

(1)区(Zone,ZN)

存在两种区:随机访问区和顺序访问区。随机访问区可以存储LBA至PBA映射关系、元数据和直接映射用户数据。顺序访问区可以存储其它用户数据以及PBA至LBA映射关系。这两个区域的比例可以是任意合适比例,例如随机访问区占1%,而顺序访问区占99%。如前面提及的,在TB驱动容量下,随机访问区至少在GB量级上。顺序访问区通常在TB量级上。

(2)存储体(Bank,BK)

顺序访问区可以在逻辑上被划分成多个存储体。这些存储体在操作上相互独立,也就是,在一个存储体上的访问操作不会影响到另一存储体,在存储体层面上可以进行随机操作。另外,可以在存储体层面上进行垃圾回收处理。存储体的大小可以在GB量级上。根据本申请的一个实施例,存储体的大小为1GB。

(3)段(Segment,SEG)

每个存储体可以包括多个段。段的大小可以在MB量级上。根据本申请的一个实施例,段的大小为4MB。

根据本申请的实施例,每个段包括段头部SEG HDR和多个区块BLK。在每个段的开头具有SEG HDR。根据段头部,可以追踪PBA至LBA映射关系。根据本申请的实施例,在SEG HDR中存储相应部分的PBA至LBA映射关系。根据本申请的实施例,在SEG HDR中还存储写标签Writestamp。写标签Writestamp是一个时间戳,用于记录当前段被写操作的时间。

(4)区块(Block,BLK)

区块是数据读写访问的最小单位。所有提到的区、存储体、段、段头部的大小都应是基于区块大小的。根据本申请的一个实施例,区块的大小为4k。

从图2的顺序访问区可见,根据本申请的实施例,可以将顺序访问区中的一系列存储体按照使用情况进行管理。例如,可以分为空闲存储体、已用存储体和当前工作的存储体。在一个实施例中,可以在随机访问区中存储相应的空闲存储体列表、已用存储体列表、当前工作的存储体中的下一段等信息,以实现对这些存储体的访问操作和处理。

下面结合图3至图7描述根据本申请实施例的用于操作SMR设备的各种处理过程,包括写入操作、读取操作、垃圾回收处理、系统恢复等。

图3示出了根据本申请实施例的用于针对SMR设备的写入操作300的处理流程图。

如图3所示,在步骤S301,接收包含目标LBA和用户数据的数据写请求。

在一个实施例中,可以接收来自主机系统的数据写请求,该请求中可以包括目标LBA以及想要写入的用户数据。目标LBA可以是单个LBA,也可以是一个LBA范围。

响应于接收到这样的数据写请求,接下来在步骤S302,判断当前工作的存储体是否已满。

根据本申请的一个实施例,可以针对当前工作的存储体设置存储体缓存,以及针对当前工作的存储体中的当前段设置段缓存。在一个实施例中,当判断当前工作的存储体是否已满时,可以先判断段缓存是否已满。在段缓存未满时,判定当前工作的存储体未满。在段缓存已满时,将该当前段持久化到磁盘上(写入磁盘),并且判断存储体缓存是否已满,在存储体缓存已满时,判定当前工作的存储体已满。在存储体缓存未满时,判定当前工作的存储体未满。

在当前工作的存储体已满时,进入步骤S303,将所述当前工作的存储体置于已用存储体列表中,并从空闲存储体列表中取出一个新的存储体作为新的当前工作的存储体。

沿用上例,根据本申请的一个实施例,在存储体缓存已满时,将该存储体置于已用存储体列表中,例如可以在元数据中将该存储体标记为已用并将整个存储体移至已用存储体列表中,然后从空闲存储体列表中分配一个新的存储体给存储体缓存,并将新的存储体的第一段分配给段缓存。

然后,在步骤S304,将用户数据附加到当前工作的存储体的末尾。

沿用上例,根据本申请的一个实施例,可以将用户数据附加到段缓存的末尾。

返回步骤S302,当在步骤S302处判定当前工作的存储体未满时,进入上述步骤S304。

沿用上例,在一个实施例中,在段缓存未满时,将用户数据附加到段缓存的末尾。在另一实施例中,在段缓存已满但存储体缓存未满时,将当前段持久化到磁盘,并将当前工作的存储体中的下一段分配给段缓存,然后将用户数据附加到段缓存的末尾。

接下来,在步骤S305,更新LBA至PBA映射关系以及相应部分的PBA至LBA映射关系。

在一个实施例中,可以在更新随机访问区中的LBA至PBA映射关系的同时,更新在相应段头部SEG HDR中的PBA至LBA映射关系。在其它实施例中,可以以任意顺序来完成这二者的更新。

以上结合图3示例性地描述了根据本申请实施例的用于针对SMR设备的写入操作的处理。下面结合图4描述根据本申请实施例的用于针对SMR设备的读取操作的处理。

图4示出了根据本申请实施例的用于针对SMR设备的读取操作400的处理流程图。

如图4所示,在步骤S401,接收包含目标LBA的数据读请求。

在一个实施例中,可以接收来自主机系统的数据读请求,该请求中可以包括与想要读取的数据对应的目标LBA。目标LBA可以是单个LBA,也可以是一个LBA范围。

响应于接收到这样的数据读请求,接下来在步骤S402,基于LBA至PBA映射关系,确定与目标LBA对应的多个PBA范围。

根据本申请的一个实施例,响应于接收到针对SMR设备的数据读请求,从LBA至PBA映射关系中以目标LBA为索引查找到与目标LBA对应的一个或多个PBA映射结果。目标LBA可以是单个LBA或一个连续LBA范围,但对应的PBA很可能是不连续的,因而目标LBA可以对应一个或多个PBA范围。

在确定了与目标LBA对应的多个PBA范围之后,进入步骤S403,针对所述多个物理区块地址范围中的每一个,完成相应的数据读取。

根据本申请的一个实施例,可以将数据读请求划分成与多个PBA范围中的每一个范围对应的数据读取子请求,使得针对每个数据读取子请求逐个地进行处理。当完成所有子请求时,原始读请求完成处理。

在一个实施例中,针对每个PBA范围,可以先查看所请求的PBA范围的数据是否存在于当前工作的段缓存中。如果存在,则从段缓存中复制该数据,以作为对于数据读请求的响应而输出。如果不存在,则向磁盘发出数据读请求以获取到相应数据而输出。

以上结合图3和图4示例性地描述了根据本申请实施例的针对SMR设备的数据访问操作。应理解到,为了更好地支持数据访问操作,SMR设备的磁盘空间管理是必不可少的。下面将结合图5和图6示例性地描述根据本申请实施例的针对SMR设备的垃圾回收操作的过程。

根据本申请的实施例,垃圾回收操作可以在存储体层面上实施。这就涉及到回收哪些存储体来获得更多自由空间的问题。对此,本申请发明人想到,可以针对每个存储体维护一个计数器(也可称为存储体凌乱计数器),在存储体中的区块被修改时递增与该存储体对应的计数器。值越大的计数器表明对应的存储体包括越多的无效或者废弃的用户数据。如此,就可以对那些具有较大计数器值的存储体进行回收以再利用。

图5示出了根据本申请实施例的用于更新针对SMR设备的存储体维护的计数器的操作500的处理流程图。

如图5所示,在步骤S501,接收包含目标LBA和用户数据的数据写请求。

由于仅数据写入时涉及到对于存储体中的区块的修改,因此这里存储体凌乱计数器的更新操作就可以响应于数据写请求而进行。该步骤与之前结合图3描述的步骤S301的处理是一致的,这里不再赘述。

响应于接收到数据写请求,可以进入步骤S502,基于随机访问区中存储的LBA至PBA映射关系,确定与目标LBA对应的PBA。

如前面的实施例中提到的,可以在高速缓存存储器中存储LBA至PBA映射关系,以加速LBA至PBA的查找和更新操作。在一个实施例中,由于将稍后更新LBA至PBA映射关系,所以可以使高速缓存存储器模块将映射结果粘贴到系统内存中,直到稍后更新LBA至PBA映射关系为止。

在一个实施例中,所确定的PBA可以是单个的,也可以是一个或多个PBA范围。

在从随机访问区中存储的原LBA至PBA映射关系中确定出原与目标LBA对应的PBA之后,在步骤S503,确定与该PBA对应的存储体。

在一个实施例中,所确定的存储体可以是一个存储体,也可以是多个存储体。

然后在步骤S504,更新针对在步骤S503处确定的存储体所维护的计数器。在一个实施例中,可以针对在步骤S503处确定的一个或多个存储体中的每一个分别递增各自的计数器。计数器的值就代表存储体的凌乱程度。值越大,存储体包含的无效用户数据越多。

以上结合图5描述了如何确定存储体的凌乱程度。下面结合图6描述如何基于存储体的凌乱程度来对存储体进行回收处理。

图6示出了根据本申请实施例的用于针对SMR设备的垃圾回收操作600的处理流程图。

如图6所示,在步骤S601,确定与具有最大值的计数器对应的存储体。根据本申请的实施例,将具有最大计数器值的存储体确定为将回收的存储体。

在步骤S602,识别所确定的所述存储体中的有效数据区块和无效数据区块。

可以理解到,计数器值最大的存储体包含最多无效的用户数据。然而,该存储体中也包含有效的用户数据。这就涉及到如何识别包括有效用户数据的区块和包括无效用户数据的区块。

如前面提及的,在本申请的实施例中,在随机访问区中集中地保存LBA至PBA映射关系,这便于查找LBA至PBA映射的操作。另一方面,将PBA至LBA映射关系分散存储到每个段头部。根据本申请的实施例,在更新区块之后,除了更新随机访问区中的LBA至PBA映射关系之外,将更新与具有更新的用户数据的新PBA相关联的段头部中的PBA至LBA映射,而并不更新与包括旧用户数据的旧PBA相关联的段头部中的PBA至LBA映射。因而,如果在段头部中记录的LBA和PBA与随机访问区中的LBA至PBA映射中记录的LBA和PBA不相同,则表明对应段中的区块具有无效的用户数据。本申请发明人的一个构思就在于,通过比较在段头部中记录的LBA和PBA与随机访问区中的LBA至PBA映射中记录的LBA和PBA来识别数据区块是有效还是无效,由此完成存储体回收处理。

根据本申请的一个实施例,可以通过以下步骤来识别待回收存储体中的有效数据区块和无效数据区块:

读取所确定的待回收存储体中包括的各个段的段头部;

将段头部中的PBA至LBA映射关系分别转换成相应的LBA至PBA映射关系(版本1);

将针对段头部转换后的LBA至PBA映射关系(版本1)分别与随机访问区中的LBA至PBA映射关系(版本2)进行比较;以及

若版本1和版本2相同,则识别段头部对应的段中的区块为有效数据区块;否则识别段头部对应的段中的区块为无效数据区块。

在识别出待回收存储体中的有效数据区块和无效数据区块之后,进入步骤S603,读取所述有效数据区块中的用户数据并将其重新写入到当前存储体中。这里的写入操作类似于前面结合图3所描述的处理,不再赘述。

然后,在步骤S604,将所确定的待回收存储体移至空闲存储体列表中。例如,可以将待回收存储体移至空闲存储体列表中并将其标记为空闲。

根据本申请的实施例,可以在预定时间或按照预定间隔来反复执行以上回收处理的步骤S601至S604,以确保SMR设备的磁盘空间始终被最大化地利用,同时可以加快针对SMR设备的数据访问操作。

至此已经结合图2至图6描述了根据本申请实施例的针对SMR设备的数据访问操作和垃圾回收操作的处理过程。从以上针对SMR设备的数据访问操作和垃圾回收操作的处理可见,LBA至PBA映射关系的访问是进行数据读写和垃圾回收的至关重要的途径。尤其是,LBA至PBA映射关系的访问对最终的IO性能具有显著影响,另外垃圾回收处理将利用LBA至PBA映射来识别区块是包含有效用户数据还是无效用户数据。因此,根据本申请的实施例,可以设置缓存以保存LBA至PBA映射关系,以便于提高映射访问性能。然而,在系统崩溃或断电时缓存中的内容可能会丢失,这就涉及到需要对LBA至PBA映射关系进行恢复。

针对这一问题,可以简单地实现工作在写通(write-through)模式下的缓存,或者针对缓存使用持久化内存。然而,写通模式的缺点在于较差的映射更新性能。而系统中的持久化内存是有限的资源,增加持久化内存的使用代表增加系统的总体成本。

在这种情况下,本申请发明人的构思在于,在系统崩溃或断电时,可以基于顺序访问区中存储的PBA至LBA映射关系,来恢复随机访问区中的LBA至PBA映射关系。

根据本申请的一个实施例,可以基于顺序访问区中的段头部中的写标签以及元数据中的持久化写标签,获取与比持久化写标签更大的写标签对应的各段头部中包括的PBA至LBA映射关系,然后基于所获取的PBA至LBA映射关系,恢复随机访问区中的LBA至PBA映射关系。

具体而言,在本申请的实施例中,在每个段头部中可以维护一个写标签(时间戳),用于记录针对该段的写入操作的时间。该写标签单调增加。另一方面,可以针对每个零散(dirty)映射LBA范围在缓存中维护一个写标签(时间戳)。在(通常通过背景冲洗处理(background flushing process))将零散映射LBA范围持久化到磁盘之后,需要检查是否具有比该写标签小的写标签的所有零散映射LBA范围都已经被持久化到磁盘。如果是,则将该写标签持久化到元数据,此时该写标签也称为持久化写标签。因此,元数据中的写标签(持久化写标签)代表在已经被持久化到磁盘之前的所有LBA至PBA映射变化。所以在系统从断电或崩溃中恢复之后,可以获取元数据中的写标签,然后找出其段头部中的写标签大于元数据中的写标签的所有段,并使用在这些段头部中记录的PBA至LBA映射关系来恢复LBA至PBA映射关系。下面将结合图7对此进行更详细描述。

图7示出了根据本申请实施例的用于针对SMR设备的LBA至PBA映射恢复操作700的处理流程图。

如图7所示,在步骤S701,从随机访问区中的元数据读取持久化写标签。

在步骤S702,读取每个存储体中的第一个段头部和最后一个段头部。

为了找出具有比元数据中的写标签更大的写标签的段,不需要扫描磁盘中的所有段头部。为了优化该过程,仅需要读取每个存储体中的第一个段头部和最后一个段头部,如果这二者中的写标签都低于元数据中的写标签,则可以跳过该存储体,由此可以快速找到所有感兴趣的存储体。

在步骤S703,确定该存储体是否可用。在本申请的实施例中,可以分别针对每个存储体读取其第一个和最后一个段头部,然后根据这二者中的写标签是否低于元数据中的写标签,来确定该存储体是否可用于恢复LBA至PBA映射关系。如果这二者中的写标签都低于元数据中的写标签,则确定该存储体不可用于恢复LBA至PBA映射关系,否则确定该存储体可用于恢复LBA至PBA映射关系。

如果在步骤S703确定存储体可用,则进入步骤S704,获取该存储体中的段头部中的PBA至LBA映射关系。

如果在步骤S703确定存储体不可用,则跳过该存储体,进入步骤S705,判断是否已扫描所有存储体。如果否,则针对下一存储体执行步骤S702至S705,直到获取到所有可用于恢复LBA至PBA映射关系的存储体中的段头部中的PBA至LBA映射关系。

接下来进入步骤S706,基于获取到的PBA至LBA映射关系,来恢复LBA至PBA映射关系。

根据上面结合图7描述的LBA至PBA映射恢复操作,可以在系统断电或崩溃之后快速地恢复LBA至PBA映射关系,从而确保该映射关系的一致性和正确性。

至此已结合图1至图7描述了根据本申请实施例的用于操作SMR设备的方法。与该方法类似,本申请实施例还提供一种用于操作SMR设备的装置。

图8示出了根据本申请实施例的用于操作SMR设备的装置800的示意框图。在本申请的实施例中,该装置可以实现在主机系统中,也可以与SMR设备集成在一起。

这里如前面所提及的,SMR设备可以包括随机访问区和顺序访问区,在随机访问区中数据能够被随机读写,在顺序访问区中数据仅能够被顺序读写,并且顺序访问区可以在逻辑上被划分成在操作上相互独立的多个存储体。

如图8所示,装置800可以包括第一存储控制模块801、第二存储控制模块802以及操作模块803。

在本申请的一个实施例中,第一存储控制模块801用于使得在随机访问区中存储LBA至PBA映射关系。第二存储控制模块802用于使得在顺序访问区中的多个存储体的每个存储体中分别存储相应部分的PBA至LBA映射关系。操作模块803用于使得基于LBA至PBA映射关系以及PBA至LBA映射关系来对SMR设备进行操作。

根据本申请的实施例,第一存储控制模块801还用于使得在随机访问区中存储元数据,所述元数据至少包括下列中的一项或多项:空闲存储体列表、已用存储体列表、针对每个存储体分别维护的计数器、当前工作的存储体中的下一可用段、持久化写标签。

根据本申请的实施例,第一存储控制模块801还用于使得在随机访问区中直接存储预期被频繁修改的用户数据。

根据本申请的实施例,多个存储体中的每个存储体可以被划分成多个段,每个段可以包括段头部和多个区块,所述多个区块中的每个区块用作数据读写的最小单位。第二存储控制模块802还用于使得在段头部中存储相应部分的物理区块地址至逻辑区块地址映射关系。

根据本申请的实施例,操作模块803可以包括:写入单元,用于响应于接收到包含目标逻辑区块地址和用户数据的数据写请求,将所述用户数据附加到当前工作的存储体的末尾;以及映射更新单元,用于更新所述逻辑区块地址至物理区块地址映射关系以及相应部分的所述物理区块地址至逻辑区块地址映射关系。

根据本申请的实施例,操作模块803还可以包括:获取单元,用于在所述当前工作的存储体已满时,将所述当前工作的存储体置于已用存储体列表中,并从空闲存储体列表中取出一个新的存储体作为新的当前工作的存储体。

根据本申请的实施例,操作模块803可以包括:确定单元,用于响应于接收到包含目标逻辑区块地址的数据读请求,基于所述逻辑区块地址至物理区块地址映射关系,确定与所述目标逻辑区块地址对应的多个物理区块地址范围;以及读取单元,用于针对所述多个物理区块地址范围中的每一个,完成相应的数据读取。

根据本申请的实施例,操作模块803可以包括:第一确定单元,用于响应于接收到包含目标逻辑区块地址和用户数据的数据写请求,基于所述逻辑区块地址至物理区块地址映射关系,确定与所述目标逻辑区块地址对应的物理区块地址;第二确定单元,用于确定与所述物理区块地址对应的存储体;以及计数器更新单元,用于更新针对所述存储体维护的计数器。

根据本申请的实施例,操作模块803可以包括:第三确定单元,用于确定与具有最大值的所述计数器对应的存储体;识别单元,用于识别所确定的所述存储体中的有效数据区块和无效数据区块;重写单元,用于读取所述有效数据区块中的用户数据并将其重新写入到当前存储体中;以及移动单元,用于将所确定的所述存储体移至空闲存储体列表中。

根据本申请的实施例,识别单元可以包括:读取子单元,用于读取所确定的所述存储体中包括的各个段的段头部;转换子单元,用于将所述段头部中的物理区块地址至逻辑区块地址映射关系分别转换成相应的逻辑区块地址至物理区块地址映射关系;比较子单元,用于将针对段头部转换后的所述逻辑区块地址至物理区块地址映射关系分别与所述随机访问区中的所述逻辑区块地址至物理区块地址映射关系进行比较;以及识别子单元,用于若相同,则识别所述段头部对应的段中的区块为有效数据区块;否则识别所述段头部对应的段中的区块为无效数据区块。

根据本申请的实施例,操作模块803可以包括:恢复单元,用于在系统崩溃或断电时,基于所述顺序访问区中存储的所述物理区块地址至逻辑区块地址映射关系,来恢复所述随机访问区中的所述逻辑区块地址至物理区块地址映射关系。

根据本申请的实施例,恢复单元可以包括:获取子单元,用于基于所述存储体中包括的段的段头部中的写标签以及元数据中的持久化写标签,获取与比所述持久化写标签更大的写标签对应的段头部中包括的所述物理区块地址至逻辑区块地址映射关系;以及恢复子单元,用于基于所获取的所述物理区块地址至逻辑区块地址映射关系,恢复所述随机访问区中的所述逻辑区块地址至物理区块地址映射关系。

根据本申请的实施例,获取子单元可以包括:读取子单元,用于读取每个存储体中的第一个段头部和最后一个段头部;确定子单元,用于根据所读取的第一个段头部和最后一个段头部中的写标签与元数据中的持久化写标签的比较,确定所述存储体是否可用于恢复所述逻辑区块地址至物理区块地址映射关系;以及获得子单元,用于获得所述可用于恢复所述逻辑区块地址至物理区块地址映射关系的存储体中的段头部中的所述物理区块地址至逻辑区块地址映射关系。

以上描述的用于操作SMR设备的装置与之前描述的用于操作SMR设备的方法的处理是对应的,因此,关于其具体细节,可以参见之前描述的用于操作SMR设备的方法,这里不再赘述。

本领域技术人员应明白,本申请的实施例可提供为方法、装置或计算机程序产品。因此,本申请的实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请的实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可以包括计算机可读介质中的非永久性存储器、随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括瞬态计算机可读介质,如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

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