数据存储装置的数据管理的制作方法

文档序号:6766297阅读:112来源:国知局
数据存储装置的数据管理的制作方法
【专利摘要】数据存储装置的数据管理。管理存储在计算机系统的至少一个数据存储装置DSD中的数据,在计算机系统中,至少一个DSD包括用于存储数据的至少一个磁盘。产生包括LTFS块地址的线性带文件系统LTFS写或者读命令;LTFS块地址被转换成针对至少一个DSD的装置地址,并且至少一个DSD的磁盘上的数据被写入该装置地址处。
【专利说明】数据存储装置的数据管理

【背景技术】
[0001] 带驱动器是在磁带上读取和写入数据的一种数据存储装置类型,并且通常用于档 案存储。直到目前为止,带驱动器一般缺少用于存取数据的标准化格式。目前,为了对存储 在磁带上的数据提供标准化文件系统接口,已经引入了线性带文件系统(LTFS)格式。LTFS 指代在磁带上记录的数据的格式和使用LTFS格式提供文件系统接口的具体软件的实现。 使用LTFS格式写入的磁带可以在使用LTFS格式的带驱动器之间交换。另外,理解LTFS格 式的软件系统可以向用户提供带驱动器的文件系统视图。
[0002] 尽管LTFS具有先进性,但与其它类型的数据存储装置(例如,磁盘驱动器)相比,带 驱动器要求相对长时间来存取数据。这主要是因为带驱动器必须在卷轴之间卷绕磁带以读 取磁带上特定位置处的数据。另外,磁带的管理会是耗时的,例如在装载和卸载磁带时。

【专利附图】

【附图说明】
[0003] 根据以下结合附图记载的详细描述,本公开的特征和优点将变得更明显。提供附 图和关联的描述以例示本公开的实施方式,并且并非要限制要求保护的范围。在整个附图 中参考标记重复使用以指示引用的元件之间的对应性。
[0004] 图1是示出根据一实施方式包括数据存储装置的计算机系统的框图。
[0005] 图2是示出图1的数据存储装置的框图。
[0006] 图3例不根据一实施方式被磁头写入的磁盘的一部分。
[0007] 图4示出根据一实施方式容纳LTFS格式的区段的排列。
[0008] 图5不出根据一实施方式的不例LTFS分区格式。
[0009] 图6示出根据一实施方式的包括转换模块的示例实现环境。
[0010] 图7示出根据一实施方式的包括转换模块的另一个示例实现环境。
[0011] 图8例示根据一实施方式的索引分区和数据分区在多数据存储装置之间的分配。
[0012] 图9是根据一实施方式的数据分区写过程的流程图。
[0013] 图10是根据一实施方式的索引分区写过程的流程图。
[0014] 图11是根据一实施方式的读过程的流程图。

【具体实施方式】
[0015] 在以下详细描述中,记载了多个具体示例以提供对本公开的全面理解。然而,对本 领域技术人员来说,显而易见的是没有这些具体细节中的一些细节也可以实践所公开的各 种实施方式。在其它实例中,没有详细示出已知结构和技术以避免不必要地模糊各实施方 式。
[0016] 系统环境
[0017] 图1示出计算机系统100,其包括主机101、输入装置102、显示装置103和数据存 储装置(DSD)106。计算机系统100可以是例如云存储装置、个人计算机系统或者其它电子 装置。在这一方面,计算机系统100可以是单机系统或者网络的一部分。输入装置102可 以是键盘、滚轮或者指向装置,其允许计算机系统100的用户向计算机系统100输入信息和 命令或者允许用户操纵显示在显示装置103上的对象。在其它实施方式中,输入装置102 和显示装置103可以组合到单个部件中,例如显示对象并接收用户输入的触摸屏。
[0018] 在图1的实施方式中,主机101包括中央处理单元(CPU) 108,其可以利用执行 指令的一个或者更多个处理器实现,包括微控制器、数字信号处理器(DSP)、专用集成电路 (ASIC)、现场可编程门阵列(FPGA)、硬连接逻辑、模拟电路和/或其组合。CPU 108与主机总 线112接口。还与主机总线112接口的是随机存取存储器(RAM) 110、用于输入装置102的 输入接口 114、用于显示装置103的显示接口 116、只读存储器(ROM) 118、网络接口 120和 DSD 106。
[0019] RAM 110与主机总线112接口以在软件程序(例如操作系统34、应用程序24、设备 驱动器26、转换模块22和线性带文件系统(LTFS) 20)中的指令的执行期间向CPU 108提 供存储在RAM 110中的信息。更具体地,CPU 108首先将DSD 106或者另一个数据存储装 置中的计算机可执行指令加载到RAM 110的区域中。然后,CPU 108可以执行来自RAM 110 的所存储的过程指令。数据例如将要存储在DSD 106中的数据或自DSD 106检索的数据可 以存储在RAM 110中,使得在软件程序的执行期间(从这种软件程序有必要存取和/或修改 数据的意义上)该数据可以被CPU 108存取。
[0020] 如图1所示,DSD 106包括应用程序24,其可以是例如数据存档程序或者多媒体程 序。DSD 106还包括装置驱动器26,用作对例如输入装置102、显示装置103和/或DSD 106 的装置的软件接口。另外,DSD 106可以存储操作系统34,其包括内核36、文件系统(FS)拦 截器40和存储栈42。
[0021] 如以下参照图2讨论的,在一个实施方式中,DSD 106是混合驱动器,包括磁盘 (即,图2中的盘200)和固态非易失性存储器(NVM)卿,图2中的NVM 128)。尽管DSD 106 不包括磁带作为存储介质,但是DSD 106被构造为通过LTFS 20、转换模块22和FS拦截器 40使用线性带文件系统(LTFS)格式。如参照图9到图11更详细讨论的,转换/翻译模块22 将LTFS读和写命令中使用的地址转换成装置地址以根据LTFS读和写命令允许向DSD106 写数据或者从DSD 106读数据。
[0022] 作为LTFS格式的一部分,并且如以下参照图5讨论的,LTFS格式包括数据分区和 索引分区。在图1的示例中,DSD 106包括用于存储符合LTFS格式的数据和元数据的索引 分区14和数据分区16。另外,DSD 106包括状态元数据18,其表示与转换模块22 -起使用 的索引分区14和数据分区16的状态。DSD 106还包括带属性状态17,其用于表示与LTFS 20-起使用的索引分区14和数据分区16的状态。例如,带属性状态17可以包括计数器, 其指示符合LTFS格式的当前卷。
[0023] 本领域技术人员将理解所公开的用于管理数据的过程可以在其它环境中实现。在 一些实施方式中,DSD 106可以包括相比图1所示的元件更多或更少的元件。例如,一些实 施方式可以不包括单独的转换模块22,因为该模块可以实现为装置驱动器26的一部分。 [0024] 数据存储装置概括
[0025] 图2图示根据一个示例实施方式的DSD 106的框图。如图2所示,DSD 106包括 控制器122,其可以执行本文所述的DSD 106的各种操作。控制器122可以利用一个或者更 多个处理器执行指令来实现,并且可以包括微控制器、数字信号处理器(DSP)、专用集成电 路(ASIC)、现场可编程门阵列(FPGA)、硬连接逻辑、模拟电路和/或其组合。
[0026] 在图2的示例中,DSD 106包括旋转磁盘200和连接到致动臂130的远端的磁头 129,致动臂130通过音圈马达(VCM)132绕着枢轴旋转以在磁盘200上方定位磁头129。磁 头129至少包括用于从磁盘200读数据的读元件(S卩,图3中的读元件140)和用于在磁盘 200上写数据的写元件(即,图3中的写元件142)。磁盘200包括,用于存储数据和/或元 数据(例如,索引分区14、数据分区16、带属性状态17和/或状态元数据18)的多个径向间 隔的同心轨道210。轨道210可以被共同分组为轨道的区段(例如,图3中的区段224、226 和228),每个轨道210被分割为沿轨道210圆周间隔的多个扇区(S卩,图3中的扇区222)。
[0027] DSD 106还包括主机接口 126和易失性存储器124(其可以包括例如DRAM)。存储 在易失性存储器124中的数据可以包括从磁盘200读取的数据、要写入磁盘200的数据和 /或用于控制DSD 106的指令。主机接口 126被构造为将DSD 106与主机101接口并且可 以根据串行高级技术附件(SATA)标准或其他标准(如串行连接的SCSI (SAS))来接口。如 本领域技术人员理解的,可以将主机接口 126作为控制器122的一部分包括在DSD106内。
[0028] 另外,DSD 106包括固态非易失性存储器(NVM) 128,用于存储数据和/或元数据 (例如索引分区14、数据分区16、带属性状态17和/或状态元数据18)。尽管本文中的描述 一般涉及NVM,但是应理解NVM可以包括多种类型的固态非易失性存储装置(例如闪存集成 电路、相变化RAM (C-RAM)、相变存储器(PC-RAM或者PRAM)、可编程金属化单元RAM(PMC-RAM 或PMCm)、双向通用存储器(0UM)、电阻RAM (RRAM)、NAND存储器(例如,单电平单元(SLC)存 储器、多电平单元(MLC)存储器或其任意组合)、N0R存储器、EEPR0M存储器、铁电体存储器 (FeRAM)、磁电阻RAM (MRAM)、其它分立NVM (非易失性存储器)芯片或其任意组合中的一个 或者更多个。
[0029] 在操作中,响应于经由主机接口 126接收的来自主机101的命令,控制器122写数 据到磁盘200并从磁盘200读数据。当控制器122从主机101接收写命令和要写到磁盘 200的数据时,控制器122将接收的数据临时保持在非易失性存储器124中。为了写数据 到磁盘200,控制器122通过向VCM132发送VCM控制信号30来将磁头129定位在磁盘200 上方。控制器122基于从磁盘200读取的定位信息来定位磁头129,并将要写到磁盘200的 数据处理成向磁头129输出的写信号32。对于其部分,磁头129的写元件(S卩,图3中的写 元件142)将写信号32转换为基于写信号32而使盘200的表面磁化的磁场,从而通过磁性 将数据写在盘200上。在针对该写命令的数据被成功写在磁盘200上之后,控制器122可 以经由主机接口 126通知主机101。
[0030] 当控制器122从主机101接收请求写在磁盘200上的数据的读命令时,控制器122 通过向VCM132发送VCM控制信号30将磁头129定位在磁盘200上方。磁头129的读元件 (即,图3中的读元件140)基于磁头129下方的磁盘表面的磁化而产生读信号32,并且控制 器122将读信号32处理成数据。
[0031] SMR磁盘示例
[0032] 图3例示一种示例构造,其中示出磁盘200的一部分包括轨道210的三个区段。如 图3的示例所示出的,区段224和226是被磁头129的写元件142写入的非交叠轨道的区 段,并且区段228也是被磁头129的写元件142写入的交叠轨道210的区段。非交叠轨道 的区段,例如区段224和226,在此称为传统磁记录(CMR)区段。交叠轨道的区段,例如区段 228,在此称为叠瓦式磁记录(SMR)区段。
[0033] 如图3所示,每个轨道210包括多个扇区222,用于存储固定量的数据,例如2048 个字节、1024个字节或者4096个字节。磁头129包括读元件140,其基于扇区222的磁化产 生读信号32。磁头129还包括写元件142,其将写信号32转换为磁场,该磁场通过磁性将 数据写在扇区222中。在图3的示例中,写元件142基本上比读元件140宽,以便于在SMR 区段228中的叠瓦式磁记录。特别地,在SMR区段228中的轨道210的非交叠部分形成可 以由读元件140读取的相对窄的轨道。因此,SMR区段228具有比CMR区段224和226高的 每英寸轨道数(TPI)。在替代的实施方式中,写元件与读元件的宽度的比可以不同。例如, 写元件可以是读元件宽度的四或五倍。
[0034] 如图3所示,CMR区段224与CMR区段226被间隔轨道230分开,并且SMR区段228 与CMR区段226被间隔轨道232分开。间隔轨道230和232是空轨道或没有数据的轨道, 其用作区段之间的缓冲。在SMR区段228的情况下,间隔轨道232允许数据写入SMR区段 228中而不覆写相邻SMR区段228中的轨道中的数据。
[0035] 在这一点上,由于SMR区段的交叠轨道,SMR区段一般被顺序写入。不顺序写入SMR 区段,对先前交叠的轨道的新写入将也影响在交叠轨道中写入的数据。
[0036] 如以下参照图5更详细描述的,磁盘200呈不同区段的排列可以容纳LTFS格式的 索引分区14和数据分区16。
[0037] 分区排列示例
[0038] 图4图示图3的区段用于容纳LTFS格式的示例排列。如图4所示,CMR区段224 存储带属性状态17和状态元数据18, CMR区段226存储索引分区14,并且SMR区段228存 储数据分区16。
[0039] 在图4的示例中,SMR区段228的较大的数据容量允许在数据分区16中存储较大 量的数据和元数据。然而,由于SMR区段中的交叠轨道,在不影响相邻数据的情况下,在SMR 区段中写入的数据通常不易于修改。因而,在用于数据分区16的SMR区段228中记录的数 据和元数据被顺序写入,并且通常在写入之后不被修改。
[0040] 索引分区14被写入CMR区段226中,以允许更容易地修改存储在索引区段14中 的元数据。鉴于这一点,在索引分区14中写入的元数据可以容易被重写以指示例如数据分 区16中数据的删除。在其它实施方式中,索引分区14可以存储在NVM 128的区段中而不 是CMR区段中。
[0041] 和索引分区14 一样,状态元数据18和带属性状态17通常小于数据分区16并且 包括可以被频繁存取或修改的元数据。因此,在图4的示例中,状态元数据18和带属性状 态17存储在CMR区域224中。在其它实施方式中,状态元数据18和/或带属性状态17可 以存储在NVM128的区段中而不是CMR区段中。
[0042] 尽管带属性状态17可以是LTFS格式的一部分,但是状态元数据18不是LTFS格 式的一部分。在图4的示例中,在将LTFS块地址转换成DSD 106的装置地址中,状态元数 据18被转换模块22使用。更具体地,状态元数据18包括表示数据分区的状态和/或索引 分区的状态的元数据。这种元数据可以包括LTFS块地址,LTFS块地址指示针对数据分区 16和索引分区14的每个的有效或废弃数据的逻辑位置。
[0043] 在图4的示例中,CMR区段224还存储用户文件30,其是存储在数据分区16中的 用户文件的副本。如上所述,CMR区段224总体上比SMR区段228提供更容易的数据修改。 另外,由于较小的尺寸,CMR区段224提供更快的数据存取。因此,CMR区段224可以用于 提供更快的存取、更好的存储利用和/或存储在数据分区16中的特定数据的冗余。例如, CMR区段224可以包括最近写入的数据以允许在不期望的停电之后更快地恢复。在另一个 示例中,小于预定尺寸的文件可以存储在CMR区段224中而不是存储在SMR区段228中,以 就文件碎片而言提供对SMR区段228更好的利用。在另一示例中,CMR区段228可以存储 频繁存取的数据以允许较快地存取这种数据。
[0044] 图5描绘索引分区14和数据分区16的示例LTFS分区格式。在使用LTFS的典型 的带驱动器中,磁带包括主要用于存储数据文件的数据分区和主要用于存储与数据文件相 关联的元数据的索引分区。存储在索引分区中的元数据通常是描述存储在磁带上的目录和 文件结构的新近的元数据。在图5的实施方式中,LTFS元数据包括VOL 1标签46、LTFS标 签48、索引52、索引60、索引58和LTFS标签56。该数据包括用户文件32、30和28。
[0045] 如图5所示,索引分区14和数据分区16中的每个以记录在索引分区14和数据分 区16的第一逻辑块位置的标签构造开始。对于索引分区14,该标签构造包括被文件标记50 分开并以另一个文件标记50结束的VOL 1标签46和LTFS标签48。对于数据分区16,该 标签构造包括被文件标记50分开并且以另一个文件标记50结束的VOL 1标签46和LTFS 标签56。除LTFS标签48和56中指定的位置信息之外,这两种标签构造包括相同信息,上 述位置信息提供针对它们相应的索引分区14或者数据分区16的特定部分的LTFS块地址。 VOL 1标签46、LTFS标签48和LTFS标签56中的每个都可以是XML文档。
[0046] VOL 1标签46标识分区的卷号并且可以指示存取权限限于LTFS标准并且可以包 括所有者标识信息。LTFS标签48和56可以包括关于以下内容的信息:卷的创建方、卷被 格式化的时间、卷的标识、属于该卷的数据分区和索引分区的LTFS块地址、当向LTFS卷写 数据时使用的块大小和/或当写数据时用于压缩的值。
[0047] 如图5所示,索引分区14包括索引52,而数据分区16包括索引52、58和60。每个 索引用文件标记50支持并且描述所有数据文件、目录信息和存储在卷中的文件的关联的 元数据。另外,每个索引可以包括LTFS块地址,其用作指向另一个索引的后向指针。如图5 所示,索引分区14中的索引52包括指向数据分区16中的索引52的后向指针,索引52依 次包括指向索引60的后向指针,索引60包括指向索引58的后向指针。关于这一点,LTFS 格式要求数据分区中的索引和索引分区中的最后索引形成后向指针的完整链。这些后向指 针可以用于向后查阅卷的较早状态。
[0048] 如图5所示,索引分区14还包括记录在索引分区14中的用户文件32,作为数据分 区16中新写入的用户文件32的备份副本。在此示例中,为了实现冗余,索引分区14可以 存储来自数据分区16的最新写入的用户文件。如本领域技术人员理解的,在索引分区14 中记录用户文件是可选的。
[0049] 数据分区16包括用户文件28、30和32。如图5所示,用户文件可以插在索引之 间,如用户文件28在索引58和60之间。用户文件也可以跟有分开用户文件的文件标记, 如用户文件30和32被文件标记50分开的情形。
[0050] 实现环境
[0051] 图6和图7图示利用非带驱动的数据存储装置的使用LTFS命令的两种不同实现 环境。如图6所示,应用程序24、LTFS20和转换模块22在用户空间中实现,FS拦截器40 和存储栈42在内核空间中实现,其为操作系统34的一部分。实际上,转换模块22可以是 不要求对LTFS20修改的插入式驱动器。
[0052] 如图6中的箭头指示的,读和写数据命令由FS拦截器40拦截,并且传递到LTFS 20用于产生LTFS读或写命令。FS拦截器40可以包括虚拟文件系统,其拦截来自应用24 的数据存取请求。由LTFS 20产生的LTFS读或者写命令包括LTFS块地址,其指示元数据 或与LTFS读或写命令关联的数据在数据分区16或索引分区14中的逻辑位置。
[0053] LTFS读或者写命令被转换模块22接受,其将LTFS块地址转换成特定数据存储装 置(例如DSD 106)的装置地址。装置地址可以标识在数据存储装置的区段中的位置。在 DSD 106的示例中,装置地址可以包括与磁盘200上的区段中的具体扇区222对应的逻辑块 地址。在其它示例中,装置地址可以包括与DSD 106的NVM 128中的具体块和页相对应的 逻辑块地址。如本领域技术人员将理解的,在不背离本公开的范围的情况下,其它类型的装 置地址是可能的。
[0054] 利用针对数据储存装置的相应读或写命令,转换模块22将转换的装置地址传递 到存储栈42中。存储栈42可以包括用于将多个数据存储装置(例如图6所示的DSD 104、 105、106、107和109)组网的模块。在这一点上,DSD 104、105、106、107和109可以包括使 用CMR介质、SMR介质和/或固态介质的不同类型的数据存储装置。
[0055] 除了处理LTFS读和写命令,转换模块22还可以执行文件管理任务,例如存储在数 据分区16中的文件的碎片整理。在这一点上,转换模块22可以周期性地搜索数据分区16 中由于不同时间对文件进行的修改而已经散布在数据分区16中的文件。作为碎片整理的 一部分,转换模块22可以重新分配碎片文件的一部分或者多个部分使得文件在DSD的磁盘 上形成连续范围。
[0056] 图7图示一示例实现环境,其与图6的不同之处在于转换模块22在作为操作系统 34的一部分的内核空间中实现。与如图6中在用户空间内实现转换模块22相比,在内核空 间中实现转换模块22通常允许更快的处理。然而,在用户空间中实现转换模块22可以有 利地将转换模块22与操作系统34隔离,以防止在转换模块的执行期间可能出现的问题影 响到操作系统34。
[0057] 图8图示根据一实施方式的索引分区14和数据分区16在DSD104、105、106、107和 109之间的分配。除了提供附加存储容量,在多个DSD上写数据分区16和/或索引分区14 通常可以通过允许在不同DSD处同时读和/或写来提高性能。例如,数据分区16中的大文 件的部分,例如用户文件28,可以散布在DSD106、107和109之间以允许更快地读取文件。
[0058] 如图8所示,数据分区16写在DSD 106、107和109上,并且索引分区14写在DSD 104和105上。在图8的实施方式中,DSD 106、107和109中的每个包括具有交叠轨道的磁 盘,例如磁盘200,以容纳存储在数据分区16中的大量数据。另外,DSD104和105每个都可 以专用于存储索引14的部分以容纳大的索引分区14。在另一实施方式中,DSD 104和105 均包括索引分区14的完整副本。这种冗余可以减少必须从数据分区16来重新构建索引分 区14的可能性,重新构建是耗时的任务。
[0059] 示例写过程
[0060] 图9是描绘数据分区16的示例写过程的流程图。如图9所示,虚线上方的块由 LTFS 20进行,而虚线下方的块由转换模块22进行。
[0061] 图9的过程开始于块300,其中LTFS 20从FS拦截器40接受写命令。在被FS拦 截器40拦截之前,写命令可来源于应用程序,例如应用程序24。
[0062] 在块302, LTFS 20根据所接受的写命令产生在数据分区16中写入数据的LTFS写 命令。所产生的写命令包括数据和指示在数据分区16中写入数据的逻辑位置的LTFS块地 址。该数据可以是例如用户文件,例如图5中的用户文件32。
[0063] 在块303,转换模块22确定写命令中的LTFS块地址是否是有效的LTFS块地址。 具体地,转换模块22可以检查状态元数据18以查看LTFS块地址是否对应于顺序地跟随数 据分区16的最新写入的LTFS块地址的数据分区16的区域。可以执行块303以帮助确保 数据分区16的顺序写入。如果转换模块22在块303确定LFTS块地址无效,则转换模块22 在块305向LTFS 20返回错误并且数据分区写过程在块329结束。
[0064] 如果在块303确定LTFS块地址有效,则转换模块22在块304中将该LTFS块地址 转换成至少一个DSD的第一区段中的数据分区16的装置地址。这种第一区段的一个示例 可以是DSD 106的SMR区段228。
[0065] 在块306,转换模块22命令一个或多个适当的数据存储装置在装置地址处写入写 命令的数据。这可以包括例如存储栈42将写命令和装置地址传递到DSD 106,在DSD 106 处,写命令和装置地址被主机接口 126接收以被控制器122处理。基于装置地址,控制器 122可以在NVM 128中或者在磁盘200上写数据。在图4的示例实施方式中,控制器122在 存储数据分区16的SMR区段228中写数据。转换模块22还可以执行数据的加密和/或压 缩,作为块306的一部分。
[0066] 在块308,转换模块22检查在块306中写数据时是否从DSD指示了任何写错误。 这种写错误可以包括写失败的装置地址。如果在块308接收了写错误,则转换模块22在块 310中重新映射LTFS块地址到第一区段中的数据分区16的新装置地址。该过程接着返回 到块306以命令一个或更多个适当的数据存储装置写入写命令的数据。
[0067] 如果在块308中没有接收到写错误,则转换模块22在块314中向LTFS 20返回指 示对数据分区16的数据写命令已经完成的状态指示符。
[0068] 图9的过程接着继续到块316,其中在块316中LTFS 20产生LTFS命令以写入针 对该数据分区的元数据。该元数据可以是例如图5中的索引52,其用于描述先前在块306 中写入的数据。如同在块302中产的LTFS写命令,在块316中产生的LTFS写命令包括用 于在数据分区16中写元数据的LTFS块地址。
[0069] 在块317,转换模块22确定写命令中的LTFS块地址是否是有效的LTFS块地址。 更具体地,转换模块22可以检查状态元数据18以查看LTFS块地址是否对应于顺序地跟随 数据分区16的最新写入的LTFS块地址的数据分区16的区域。执行块317可以帮助确保 数据分区16的顺序写入。如果转换模块22在块317中确定LFTS块地址无效,则转换模块 22在块319中向LTFS 20返回错误,并且数据分区写过程在块329结束。
[0070] 如果在块317中确定LTFS块地址有效,则在块318中转换模块22将在块316中 产生的LTFS写命令的LTFS块地址转换成至少一个DSD的第一区段中的数据分区16的装 置地址。在块320,转换模块22命令适当的一个或多个数据存储装置将写命令的元数据写 入该装置地址。这可以包括,例如,存储栈42将写命令和装置地址传递到DSD 106,在DSD 106中写命令和装置地址被主机接口 126接收供控制器122处理。基于该装置地址,控制 器122可以将元数据写入NVM 128中或磁盘200上。在图4的示例中,控制器122将元数 据写入存储数据分区16的SMR区段228。
[0071] 在块322,转换模块22检查在块320中写元数据时是否从至少一个DSD指示了任 何写错误。如果是,则在块324中,转换模块22将LTFS块地址重新映射到第一区段中的数 据分区16的新装置地址。该过程返回到块320以命令适当的一个或多个数据存储装置写 入写命令的元数据。
[0072] 如果在块322没有接收到写错误,则在块326中转换模块22更新至少一个DSD中 的第三区段中的状态元数据18和/或带属性状态17,以反映在块306中写入的数据和在块 320中写入的元数据。这可以涉及更新状态元数据18中的目录(包括数据分区16的LTFS 块地址)或改变带属性状态17中的卷号。如以上参照图4讨论的,带属性状态17和状态元 数据18可以存储在非交叠轨道的区段中,例如CMR区段224中,以方便对存储在带属性状 态17和状态元数据18中的元数据的频繁修改。在其它实施方式中,第三区段可以是例如 NVM 128的固态存储器的一部分。
[0073] 在块328,转换模块22向LTFS 20返回指示针对数据分区16的元数据写命令已经 完成的状态指示符。之后,图9的数据分区写过程在块329结束。
[0074] 图10是描绘索引分区14的示例写过程的流程图。如同图9,虚线上方的块由LTFS 20执行,而虚线下方的块由转换模块22执行。
[0075] 图10的过程开始于块330,其中LTFS 20产生LTFS卸载命令,其可以例如响应于 特定时间的经过、对同步LTFS文件系统的调用或者关闭LTFS 20的命令而产生。在块332, LTFS 20产生将元数据写到索引分区14的LTFS写命令。这种写命令可以是写入元数据的 命令,元数据例如图5中的索引分区14的索引52。如同图9的写命令,块332的写命令包 括LTFS块地址,其指示用于写入元数据的索引分区14中的逻辑位置。
[0076] 在块333,转换模块22确定写命令中的LTFS块地址是否是有效的LTFS块地址。 具体地,转换模块22可以检查状态元数据18以查看LTFS块地址是否对应于顺序地跟随索 引分区14的最新写入的LTFS块地址的索引分区14的区域。如果在块333中确定LTFS块 地址无效,则在块335中,转换模块22向LTFS20返回错误。然后,在块346中,索引分区写 过程结束。
[0077] 如果在块333中确定LTFS块地址有效,则在块334中转换模块22将写命令的LTFS 块地址转换成至少一个DSD的第二区段中的装置地址。这种第二区段的示例可以包括DSD 106的CMR区段226。在其它实施方式中,第二区段可以是例如NVM 128的固态存储器的一 部分。
[0078] 在块336,转换模块22命令适当的一个或多个数据存储装置在转换的装置地址处 写入写命令的元数据。这可以包括例如存储栈42将写命令和装置地址传递到DSD 106,在 DSD 106处写命令和装置地址被主机接口 126接收供控制器122处理。基于装置地址,控制 器122可以在NVM 128中或者在磁盘200上写入元数据。在图4的示例中,控制器122向 存储索引分区14的CMR区段226写入元数据。
[0079] 在块338,转换模块22检查在块336中写入元数据时是否从至少一个DSD指示了 任何写错误。如果是,则在块340中转换模块22将LTFS块地址重新映射至第二区段中的 索引分区14的新装置地址。该过程返回到块336以命令适当的一个或多个数据存储装置 将LFTS写命令的元数据写入索引分区14。
[0080] 如果在块338中没有接收到写错误,则在块342中转换模块22更新至少一个DSD 的第三区段中的状态元数据18和/或带属性状态17,以反映块336中写入的元数据。这可 以涉及更新状态元数据18中的目录(包括索引分区14的LTFS块地址)或更新带属性状态 17中的卷号。如以上参照图4讨论的,带属性状态17和状态元数据18可以存储在非交叠 轨道的区段中,例如CMR区段224,以方便对存储在带属性状态17和状态元数据18中的元 数据的频繁修改。在其它实施方式中,第三区段可以是例如NVM 128的固态存储器的一部 分。
[0081] 在块344中,转换模块22向LTFS 20返回指示针对索引分区14的元数据写命令 已经完成的状态指示符。然后,在块346,图10的索引分区写过程结束。
[0082] 示例读过程
[0083] 图11是针对索引分区14或数据分区16的示例读过程的流程图。图11的读过程 开始于块400,其中LFTS 20从FS拦截器40接受读命令。在被FS拦截器40拦截之前读命 令可以来源于应用程序,例如应用程序24。
[0084] 在块402, LTFS 20根据所接受的读命令产生LTFS读命令。块402的LFTS读命令 包括指示用于读取来自索引分区14或数据分区16的数据或元数据的逻辑位置的LFTS块 地址。
[0085] 在块404,转换模块22确定读命令中的LTFS块地址是否是有效的LTFS块地址。 更具体地,转换模块22可以检查状态元数据18以查看LTFS块地址是否对应于先前已被写 入的索引分区14或数据分区16的区域。这可以通过关于索引分区14和数据分区16的 LFTS块地址的顺序写入来促进。因而,转换模块22可以通过检查LTFS块地址是否小于或 等于索引分区14或数据分区16的最新写入的LFTS块地址来确定LTFS块地址是否有效。
[0086] 如果在块404确定LTFS块地址无效,则转换模块22向LTFS 20返回错误,并且读 过程在块414结束。
[0087] 如果在块404中LFTS块地址被确定为有效,则转换模块22在块408中将LTFS块 地址转换成至少一个DSD的装置地址。在块410,转换模块22命令适当的一个或多个数据 存储装置根据读命令读取该装置地址处的数据或者元数据。
[0088] 块411是可以作为额外检查而执行的可选块,其中检查在块410中读取的数据是 针对该装置地址的正确数据类型。在块411,转换模块22检查在块410读取的数据或元数 据的数据类型是否与存储在针对该装置地址的状态元数据18中的数据类型匹配。更具体 地,转换模块22可以检查是否在块410中读取了数据或元数据,并且然后检查状态元数据 18以查看状态元数据18是否指示在该读命令的装置地址处写入了数据或元数据。如果所 读取的数据或元数据的数据类型与状态元数据18中针对该装置地址存储的数据类型不匹 配,则过程继续到块406以向LTFS 20返回错误,然后读过程在块414结束。
[0089] 如果转换模块22在块411中确定数据类型匹配,则转换模块22在块412中(如果 已知)向LTFS 20返回具有当前文件标记计数的所读取的数据或者元数据。文件标记计数 可以向LFTS 20提供读取的数据或者元数据在索引分区14或数据分区16中的LTFS位置 信息。如果在块410中读取了文件标记(例如,图5中的文件标记50),则转换模块22可以 从读取的文件标记返回文件标记计数。另一方面,如果在块410中未读取文件标记,则紧前 面的文件标记可以用于向LTFS20返回文件标记计数。在块412中返回数据和文件标记计 数之后,图11的读过程在块414结束。
[0090] 结论
[0091] 本领域技术人员将理解结合此处公开的示例描述的各个示例性逻辑块、模块和过 程可以实现为电子硬件、计算机软件或其组合。此外,上述过程可以在计算机可读介质上实 现,其导致处理器或者计算机完成或执行特定功能。
[0092] 为了清楚地例示硬件和软件的可互换性,以上大体上从其功能角度描述了各种例 示部件、块和模块步骤。这些功能是否实现为硬件或者软件取决于对整个系统施加的具体 应用和设计约束。本领域技术人员可以以针对各具体应用的多种方式实现所描述的功能, 但是这种实现决定不应解释为背离本公开的范围。
[0093] 结合此处公开的示例描述的各例示逻辑块、单元、模块和控制器可以借助设计用 于执行本文所述的功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场 可编程门阵列(FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑、分立硬件部件或 者其任何组合来实现或执行。通用处理器可以是微处理器,但是可替代地,处理器可以是任 何传统处理器、控制器、微控制器或状态机。处理器还可以实现为计算装置的组合(例如, DSP和微处理器的组合)、多个微处理器、一个或者更多个微处理器结合DSP核或者任何其 它这种构造。
[0094] 结合此处公开的示例描述的方法或者过程的活动可以直接在硬件中实现,在由处 理器执行的软件模块中实现或者在两者的组合中实现。方法或者算法的步骤也可以以不同 于示例中提供的顺序的替代顺序实现。软件模块可以驻留在RAM存储器、闪存、ROM存储器、 EPROM存储器、EEPR0M存储器、寄存器、硬盘、可移除磁盘、⑶-ROM或者本领域已知的任何其 它形式的存储介质。示例性存储介质耦合到处理器,使得处理器可以从存储介质读信息以 及向其写入信息。可替代地,存储介质可以集成至处理器。处理器和存储介质可以驻留在 专用集成电路(ASIC)中。
[0095] 提供以上所公开的示例性实施方式的描述以使得本领域技术人员能够实现或者 使用本公开的实施方式。对这些示例的各种修改对于本领域技术人员来说将是显而易见 的,并且在不偏离本公开的精神或范围的情况下,本文公开的原理可以应用于其它示例。所 描述的实施方式在全部方面仅视为示例性的而非限制性的,并且因此本公开的范围由随后 的权利要求而不是以上描述来指示。落入权利要求的含义和等同范围内的全部变化都包含 在其范围内。
【权利要求】
1. 一种由计算机系统执行的用于管理存储在所述计算机系统的至少一个数据存储装 置即DSD中的数据的方法,其中,所述至少一个DSD包括用于存储数据的至少一个盘,该方 法包括以下步骤: 产生包括LTFS块地址的线性带文件系统即LTFS写或者读命令; 将所述LTFS块地址转换成所述至少一个DSD的装置地址;以及 在所述至少一个DSD的磁盘上所述装置地址处写或读数据。
2. 根据权利要求1所述的方法,所述方法还包括: 当在所述至少一个DSD的磁盘上写数据时检测错误; 将所述LTFS块地址重新映射至所述至少一个DSD的新装置地址;以及 将数据写入所述至少一个DSD的磁盘上所述新装置地址处。
3. 根据权利要求1所述的方法,所述方法还包括:在所述至少一个DSD的磁盘上读或 写数据之前确定所述LTFS块地址是否是有效的LTFS块地址。
4. 根据权利要求1所述的方法,其中,所产生的LTFS写命令用于向LTFS格式的数据分 区写数据、向所述LTFS格式的所述数据分区写元数据或向所述LTFS格式的索引分区写元 数据。
5. 根据权利要求4所述的方法,所述方法还包括响应于LTFS卸载命令,向所述索引分 区写元数据。
6. 根据权利要求4所述的方法,其中,所述至少一个DSD包括多个磁盘驱动器,所述多 个盘驱动器的每个包括具有交叠轨道的至少一个磁盘,并且其中所述多个磁盘的所述交叠 轨道形成所述数据分区。
7. 根据权利要求4所述的方法,其中,在所述至少一个DSD的多个DSD上写所述索引分 区。
8. 根据权利要求4所述的方法,其中,所述至少一个DSD包括专门用于仅存储所述索引 分区或者仅存储所述索引分区的一部分的DSD。
9. 根据权利要求4所述的方法,所述方法还包括重定位写入所述数据分区的文件的第 一部分,使得所述文件的所述第一部分与所述至少一个DSD的磁盘上的所述文件的第二部 分形成连续范围。
10. 根据权利要求4所述的方法,其中,在所述至少一个DSD的磁盘上的交叠轨道的第 一区段中写入针对所述数据分区的数据和/或元数据。
11. 根据权利要求10所述的方法,其中,在所述至少一个DSD的磁盘上的非交叠轨道的 第二区域中或者在位于所述至少一个DSD的固态非易失性存储器即NVM中的第二区段中写 入针对所述索引分区的元数据。
12. 根据权利要求11所述的方法,其中,所述至少一个DSD包括用于存储表示所述数据 分区的状态和/或所述索引分区的状态的元数据的第三区段。
13. 根据权利要求12所述的方法,其中,所述第三区段是在所述至少一个DSD的磁盘上 的非交叠轨道的区段或者位于所述至少一个DSD的固态NVM中的区段。
14. 根据权利要求12所述的方法,所述方法还包括:在新写入、小于预定尺寸或者已被 频繁存取的所述第三区段中写数据。
15. -种用于管理数据的计算机系统,所述计算机系统包括: 包括用于存储数据的至少一个磁盘的至少一个数据存储装置即DSD ;以及 处理器,该处理器被构造成: 产生包括LTFS块地址的线性带文件系统即LTFS写或读命令; 将所述LTFS块地址转换成所述至少一个DSD的装置地址;以及 命令所述至少一个DSD在所述至少一个DSD的磁盘上所述装置地址处写或读数据。
16. 根据权利要求15所述的计算机系统,其中,所述处理器还被配置为: 接收指示在所述至少一个DSD的磁盘上写数据中出现错误的错误通知; 将所述LTFS块地址重新映射至所述至少一个DSD的新装置地址;以及 命令所述至少一个DSD在所述至少一个DSD的磁盘上所述新装置地址处写或读数据。
17. 根据权利要求15所述的计算机系统,其中,所述处理器还被构造成:在命令所述至 少一个DSD在所述至少一个DSD的磁盘上读或写数据之前确定所述LTFS块地址是否是有 效的LTFS块地址。
18. 根据权利要求15所述的计算机系统,其中,所产生的LTFS写命令用于向LTFS格式 的数据分区写数据、向LTFS格式的所述数据分区写元数据或向LTFS格式的索引分区写元 数据。
19. 根据权利要求18所述的计算机系统,其中,所述处理器还被构造成命令所述至少 一个DSD响应于LTFS卸载命令向所述索引分区写元数据。
20. 根据权利要求18所述的计算机系统,其中,所述至少一个DSD包括多个磁盘驱动 器,所述多个磁盘驱动器的每个包括具有交叠轨道的至少一个磁盘,并且其中所述多个磁 盘的所述交叠轨道形成所述数据分区。
21. 根据权利要求18所述的计算机系统,其中,在所述至少一个DSD的多个DSD上写所 述索引分区。
22. 根据权利要求18所述的计算机系统,其中,所述至少一个DSD包括专门用于仅存储 所述索引分区或者仅存储所述索引分区的一部分的DSD。
23. 根据权利要求18所述的计算机系统,其中,所述处理器还被构造成命令所述至少 一个DSD重定位写入所述数据分区的文件的第一部分,使得所述文件的所述第一部分与所 述至少一个DSD的磁盘上的所述文件的第二部分形成连续范围。
24. 根据权利要求18所述的计算机系统,其中,在所述至少一个DSD的磁盘上的交叠轨 道的第一区段中写入所述数据分区的数据和/或元数据。
25. 根据权利要求24所述的计算机系统,其中,在所述至少一个DSD的磁盘上的非交叠 轨道的第二区段中或在位于所述至少一个DSD的固态非易失性存储器即NVM中的第二区段 写入针对所述索引分区的元数据。
26. 根据权利要求25所述的计算机系统,其中,所述至少一个DSD包括用于存储表示所 述数据分区的状态和/或所述索引分区的状态的元数据的第三区段。
27. 根据权利要求26所述的计算机系统,其中,所述第三区段是在所述至少一个DSD的 磁盘上的非交叠轨道的区段或位于所述至少一个DSD的固态NVM中的区段。
28. 根据权利要求26所述的计算机系统,其中,所述处理器还被构造成命令所述至少 一个DSD在新写入的、小于预定尺寸或已经频繁存取的所述第三区段中写数据。
29. -种计算机可读介质,其存储用于操作用于存储数据的包括至少一个磁盘的至少 一个数据存储装置即DSD的计算机可执行指令,其中所述计算机可执行指令由处理器执 行,所述处理器: 产生包括LTFS块地址的线性带文件系统即LTFS写或读命令; 将所述LTFS块地址转换成针对所述至少一个DSD的装置地址;以及 命令所述至少一个DSD在所述至少一个DSD的磁盘上所述装置地址处写或读数据。
【文档编号】G11B5/02GK104156172SQ201410022803
【公开日】2014年11月19日 申请日期:2014年1月17日 优先权日:2013年1月17日
【发明者】A·H·陈, J·N·玛丽娜 申请人:西部数据技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1