CN107735774A - 一种smr感知只追加文件系统 - Google Patents
一种smr感知只追加文件系统 Download PDFInfo
- Publication number
- CN107735774A CN107735774A CN201680025570.3A CN201680025570A CN107735774A CN 107735774 A CN107735774 A CN 107735774A CN 201680025570 A CN201680025570 A CN 201680025570A CN 107735774 A CN107735774 A CN 107735774A
- Authority
- CN
- China
- Prior art keywords
- data
- linked list
- track band
- data track
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/12—Formatting, e.g. arrangement of data block or words on the record carriers
- G11B20/1217—Formatting, e.g. arrangement of data block or words on the record carriers on discs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B5/00—Recording by magnetisation or demagnetisation of a record carrier; Reproducing by magnetic means; Record carriers therefor
- G11B5/012—Recording on, or reproducing or erasing from, magnetic disks
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B5/00—Recording by magnetisation or demagnetisation of a record carrier; Reproducing by magnetic means; Record carriers therefor
- G11B5/02—Recording, reproducing, or erasing methods; Read, write or erase circuits therefor
- G11B5/09—Digital recording
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/12—Formatting, e.g. arrangement of data block or words on the record carriers
- G11B20/1217—Formatting, e.g. arrangement of data block or words on the record carriers on discs
- G11B2020/1218—Formatting, e.g. arrangement of data block or words on the record carriers on discs wherein the formatting concerns a specific area of the disc
- G11B2020/1238—Formatting, e.g. arrangement of data block or words on the record carriers on discs wherein the formatting concerns a specific area of the disc track, i.e. the entire a spirally or concentrically arranged path on which the recording marks are located
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
一种叠瓦式磁记录(shingled magnetic recording,简称SMR)只追加文件系统,包括:磁盘,包括数据磁道部分重叠的多个同心只追加叠瓦式数据磁道带,其中,所述数据磁道带与具有头数据磁道带和尾数据磁道带的循环链表相关联,所述头数据磁道带和所述尾数据磁道带分别包括多个数据块。所述系统还包括:处理器,用于将数据块写入所述磁盘,并创建新文件,其中,将所述多个数据磁道带中的空数据磁道带从所述循环链表中移除并添加到所述新文件的单链表中。
Description
交叉申请
本申请要求于2015年5月5日递交的发明名称为“一种SMR感知只追加文件系统”的第14/704,688号美国非临时专利申请案的在先申请优先权,该在先申请的全部内容以引入的方式并入本文。
技术领域
本发明一般涉及数据存储,更具体地涉及一种SMR感知只追加文件系统。
背景技术
未来的磁盘驱动器将采用叠瓦式磁记录(shingled magnetic recording,简称SMR)技术。SMR是用于增加存储密度和容量的磁存储记录技术。SMR驱动器具有更高密度的容量,但是一些叠瓦式磁道带用于只追加。然而,主机感知式SMR驱动器具有叠瓦式转换层(Shingle Translation Layer,简称STL),该叠瓦式转换层使得一些磁道带能够以适度的成本用于随机写入。
发明内容
本发明针对SMR感知只追加文件系统和方法。
在一实施例中,提供了使用叠瓦式磁记录只追加文件系统的方法。该方法包括:处理器将数据块写入磁盘,其中,所述磁盘包括数据磁道部分重叠的多个同心只追加叠瓦式数据磁道带,所述数据磁道带与具有头数据磁道带和尾数据磁道带的循环链表相关联,所述头数据磁道带和所述尾数据磁道带分别包括多个数据块。该方法还包括:所述处理器创建新文件,其中,将所述多个数据磁道带中的空数据磁道带从所述循环链表中移除并添加到所述新文件的单链表中。
在一些实施例中,该方法还包括:将新文件的数据块追加到所述循环链表的所述尾数据磁道带;当所述循环链表中的空数据磁道带的数量减至预定阈值时,在事务期间将所述循环链表的所述头数据磁道带中的数据块复制到所述新文件的所述单链表中,以释放已删除文件的数据块以及所述循环链表中的过时日志块。将片段相对于其在每个链表中的位置依次追加到所述循环链表和所述单链表中。将所述数据块按照它们在所述循环链表中出现的顺序依次写入所述磁盘。将对所述数据块和数据结构的修改实现为事务,其中,所述事务的事务提交日志条目存在于所述循环链表中空闲数据磁道带之前的日志块中。将释放的数据块置于所述循环链表的所述头数据磁道带之前,使得所述释放的数据块在当前日志块已满之前不太可能被重新使用。记录有关控制数据结构的变化的撤销和重做信息,但不记录片段的变化。在相应的事务提交日志条目之前写出更改的数据块。所述片段具有固定大小,并且异步刷新所述日志块。
在另一实施例中,文件系统用于访问磁盘,其中,所述磁盘包括数据磁道部分重叠的多个同心只追加叠瓦式数据磁道带,所述数据磁道带与具有头数据磁道带和尾数据磁道带的循环链表相关联,所述头数据磁道带和所述尾数据磁道带分别包括多个数据块。该文件系统包括:写入单元,将数据块写入所述磁盘;创建单元,创建新文件,其中,将所述多个数据磁道带中的空数据磁道带从所述循环链表中移除并添加到所述新文件的单链表中;追加单元,将新文件的数据块追加到所述循环链表的所述尾数据磁道带;复制单元,当所述循环链表中的空数据磁道带的数量减至预定阈值时,将所述循环链表的所述头数据磁道带中的数据块复制到所述新文件的所述单链表中,以释放已删除文件的数据块以及所述循环链表中的过时日志块。在一些实施例中,该文件系统还包括用于执行实施例中描述的任何一个或一组步骤的一个或多个单元。
在另一实施例中,叠瓦式磁记录只追加文件系统包括:磁盘,包括数据磁道部分重叠的多个同心只追加叠瓦式数据磁道带,其中,所述数据磁道带与具有头数据磁道带和尾数据磁道带的循环链表相关联,所述头数据磁道带和所述尾数据磁道带分别包括多个数据块。所述系统还包括:处理器,用于将数据块写入所述磁盘,并创建新文件,其中,将所述多个数据磁道带中的空数据磁道带从所述循环链表中移除并添加到所述新文件的单链表中。
附图说明
为了更完整地理解本发明及其优点,现在参考下文结合附图进行的描述,相同的数字表示相同的对象,其中:
图1示出了本发明提供的SMR感知只追加文件系统;
图2示出了相同SMR磁道带内的后续磁道彼此重叠的示例文件系统;
图3示出了本发明提供的SMR感知只追加文件系统中的随机接入数据磁道带的盘上数据结构;
图4示出了本发明提供的在SMR感知只追加文件系统中存储文件数据块和事务日志块的多个只追加数据磁道带;
图5示出了本发明提供的使用叠瓦式磁记录只追加文件系统的示例;
图6示出了本发明提供的展示单链表(single linked list,简称SLL)和数据块的i节点阵列;图7示出了本发明提供的追加到循环链表的尾数据磁道带的新文件数据块;
图8示出了本发明提供的当循环链表上的空数据磁道带的数量减至预定阈值时复制循环链表的头数据磁道带中的数据块的操作;
图9示出了本发明提供的用于加速读取性能的数据块和/或日志块的缓存;
图10示出了适合于实现本文公开的组件的一个或多个实施例的典型通用网络组件。
具体实施方式
以下列出的图1至图10和以及该专利文档中的各种实施例仅通过举例说明的方式描述本发明的原理,而不应以任何方式理解为对本发明范围的限制。本领域技术人员可以理解的是,本发明的原理可通过任何一种设置合理的设备或系统实现。
本发明的实施例提供了一种用于主机感知叠瓦式磁记录(shingled magneticrecording,简称SMR)驱动器的文件系统,其中,该文件系统的数据部分在只追加区域中,而控制结构在随机写入区域中。所公开的文件系统可以用于只追加和循环只追加文件。所公开实施例的应用包括但不限于观测数据、日志结构合并(log-structuredmerge,简称LSM)树和监控系统。
本发明的文件系统是只追加文件系统。所述只追加文件系统包括与日志结构文件系统(log-structured file system,简称LSFS)和在SMR磁盘驱动器上实现的传统日志文件系统(journaled file system,简称JFS)有关的单元,还包括对所述LSFS和所述JFS的改进。将新到达的数据追加到用作日志的较大数据磁道带的双向循环链表中。将数据压缩成包含数据磁道带的链表的文件。更具体地,将SMR数据磁道带组织成循环链表。当创建新文件时,从循环链表中移除空数据磁道带以形成包含单数据磁道带的新列表。该列表与该文件相关联。此外,一段时间内尚未追加的小文件会定期合并到包含单数据磁道带的链表中。将来自不同文件的新数据块追加到循环链表的尾部的数据磁道带。当所使用的部分达到阈值时,在循环链表的头部执行压缩,因此,将属于每个有效文件的有效文件块复制到数据磁道带的文件列表的尾部。当文件被删除时,将该文件标记为无效,并且通过将数据磁道带移动到循环链表来回收该文件的链表。将尚未复制到文件的链表的数据块在空间管理数据结构中标记为无效。当文件达到最大大小时,追加新数据块会导致最旧的数据块被标记为无效。为了支持循环追加文件,由于文件的链表中最旧的数据磁道带中的所有数据块都被标记为无效,所以移动最旧的数据磁道带使其成为链表的新尾部。
本发明实施例利用目标应用的特性。例如,所述LSM树将数据移动到具有递增大小和寿命的文件的层次中。因此,通过将它们中的每一个存储在单独的链表中降低碎片率。对于观测数据而言,LSM树文件和监控视频是只追加的。因此,它们易于压缩成不支持随机更新的数据磁道带。观测数据和监控视频是循环的。因此,将它们中的每一个存储在数据磁道带的链表中便于空间管理。
所公开的实施例提供了相对于传统的Linux文件系统和常规磁盘的组合的许多优点。例如,因为所有文件的新数据都被追加到相同的数据磁道带上,所以磁盘写入磁头移动较少。因为压缩将属于同一文件的块移动到数据磁道带的链表中,且每个数据磁道带包含该文件的连续数据,所以顺序读取性能更好。由于使用了SMR磁盘,每美元成本的存储容量更多。
所公开的实施例还提供了相对于LSFS和常规磁盘的组合的许多优点。例如,因为压缩将属于同一文件的块移动到数据磁道带的链表中,且每个数据磁道带都包含该文件的连续数据,所以顺序读取性能更好。更高效的压缩算法利用了只追加属性和数据的循环性。由于使用了SMR磁盘,每美元成本的存储容量更多。
因为压缩将属于同一文件的块移动到数据磁道带的链表中,且每个数据磁道带都包含该文件的连续数据,所以,所公开的实施例相对于LSFS和SMR磁盘的组合的优点包括更好的顺序读取性能。更高效的压缩算法利用了只追加属性和数据的循环性。
因为有越来越多的只追加文件系统应用,引发了本发明实施例。这是通过将现有的面向随机更新的数据访问技术重新构建为只追加的数据访问技术(例如,日志结构合并树)并收集大量的观测数据来驱动的。更有前景的磁盘存储技术是采用SMR。
存在仅发出追加磁盘命令的文件系统,例如日志结构文件系统。存在针对只追加工作负载优化的文件系统。因为优化系统是为了更好地利用只追加应用而不是LSFS,所以,本发明是有利的。因为文件是只追加的,所以优化文件数据的存储方式以及文件系统压缩和恢复。优化该系统是为了更好地利用主机感知SMR驱动器,而不是传统的Linux文件系统。由于文件只追加的,以不需要SMR转换层的方式将文件数据存储在数据磁道带中。
本发明实施例非常适合于数据的寿命小于为填充文件系统的一半容量输入数据所需时间的一半的场景。在这种场景下,很少或根本不需要压缩。当然,所公开的实施例也可以在其它合适的场景下使用。
RocksDB示例
RocksDB是一种用于快速存储的嵌入式永久性键值存储,可从FACEBOOK公司获得。RocksDB采用的算法类似于日志结构合并树算法,但不包含每个级别包括多个大小相似的文件,以及将L级文件合并到L+1级或更高级别的文件中。
RocksDB创建的文件表明了,文件是重复创建和删除的,较高级别的文件的寿命长于较低级别的文件,并且每次追加一个文件。因此,根据本发明,在SMR感知只追加文件系统的基础上执行RocksDB会使盘上数据结构状态平衡。当文件系统容量是RocksDB文件最大大小的两倍以上时,在需要复制之前删掉所有文件。因此,几乎不需要压缩。由于每次追加一个文件,每个文件的数据块在每个数据磁道带内是连续的。当文件系统容量小于RocksDB文件最大大小的两倍时,将较高级别的文件的数据块复制到文件的链表中。
观测数据管理系统示例
观测数据管理系统将输入的观测数据流循环追加到文件中。假设将来自同一个流的数据存储到单个文件中;每个文件都具有最大容量,当超出该容量时,丢弃旧数据;并且不同流的数据到达率是不同的。因此,根据本发明,在SMR感知只追加文件系统的基础上执行观测数据管理系统会使盘上数据结构状态平衡。
当文件系统容量是文件的最大容量之和的两倍以上时,在需要复制之前,使数据块无效。几乎不需要压缩。属于相同文件的数据块与来自其它文件的数据块进行交织。当文件系统容量小于文件最大容量总和的两倍时,将较慢流的最旧数据块复制到其文件的链表中,将较新的数据块保留在循环链表中。
SMR感知只追加文件系统的数据结构
图1是本发明提供的SMR感知只追加文件系统10的示意图。该系统10使用具有命令处理器12的SMR。所述命令处理器12执行多个如本文所描述的操作和功能。主机或用户14可以是任何类型的计算机,并且可以通过包括网络的任何方式与所述系统10进行通信。这里的术语“用户”与“主机”互换使用。多个主机14还可以通过传统技术与所述系统10进行通信。磁性薄膜涂层沉积在硬盘(图中未示出)的上表面和下表面上,并且设备也可以具有多个磁盘。膜形成多个同心圆形数据磁道带16。格式化数据磁道带16用于SMR架构。数据磁道带16包括I区,其中,每个数据磁道带从主轴(图中未示出)径向延伸。存储器18(可以包括非易失性闪存)提供SMR参数设置和/或SMR状态/统计信息的存储,但是可以使用任何类型的非易失性存储器,包括磁盘介质。
数据磁道带16包括随机接入数据磁道带20和SMR数据磁道带22。在一些实施例中,随机接入数据磁道带20构成磁盘的总存储容量的约1-2%。在一些实施例中,所述SMR数据磁道带22是只追加数据磁道带。图1示出了通过磁道间隙26相互分离的磁道带20内的磁道24。数据磁道带16通过磁道带间隙28隔开。图2示出了单个SMR磁道带22内的后续磁道24如屋顶上的叠瓦一样相互重叠,由此得出术语“叠瓦式磁记录”。
图3示出了本发明提供的SMR感知只追加文件系统10中的数据磁道带16的盘上数据结构。在图3所示的示例实施例中,将两个检查点记录30存储在所述数据磁道带16中。所述两个检查点记录30交替为当前检查点。每个检查点记录30包括多个数据结构,包括空间管理阵列32、数据磁道带阵列34、链表数据结构阵列36、i节点阵列38、事务控制块阵列40和循环链表(circular linked list,简称CLL)42的头部/尾部。
所述空间管理阵列32包含所述文件系统10中的每个数据块的一个条目。所述空间管理阵列32中的每个条目包括数据块所属文件的ID、指示该块是否有效的位以及该文件的下一个数据块的索引。
所述数据磁道带阵列34包含所述文件系统10中的每个数据磁道带16的一个条目。所述数据磁道带阵列34中的每个条目包括列表中下一个数据磁道带的索引、该列表中前一个数据磁道带的索引、以及如果数据磁道带是只追加数据磁道带时写指针的值。
所述链表数据结构阵列36包括一个或多个元素,其中,每个元素包含头数据磁道带的索引、尾数据磁道带的索引和引用计数。
所述i节点阵列38包括所述文件系统10中每个文件的一个条目。每个条目包含文件的名称、作为所述i节点阵列38的索引的文件ID、文件的第一个和最后一个数据块的空间管理阵列的索引、链表数据结构阵列的索引、以及其它管理信息,其中,链表是压缩期间文件的数据块被复制到的地方。
所述事务控制块阵列40包括每个活动操作的一个控制块。该数据结构仅在存储器中。该数据结构的快照保存在所述检查点记录30中。
所述循环链表(circular linked list,简称CLL)42的头部/尾部包括循环数据磁道带链表的头部的数据磁道带阵列34的索引、以及循环数据磁道带链表的尾部的数据磁道带阵列的索引。数据结构32-42称为控制数据结构。每个检查点记录30包括所述控制数据结构32-42的副本和包含当采用检查点时活动事务的最早事务开始记录的日志块的逻辑块地址(logical block address,简称LBA)。
图4示出了本发明提供的在SMR感知只追加文件系统10中存储文件数据块和事务日志块的多个只追加数据磁道带22(如图1的只追加SMR数据磁道带22)。如图4所示,每个只追加数据磁道带22包括整数个固定大小片段50。每个片段50包括段头块(segment headerblock,简称SHB)52,随后是数据块54和/或日志块56的序列。所述只追加数据磁道带22存储文件数据块54和事务日志块56。数据块54分为固定大小片段50。所述SHB 52包含片段50内包含的数据块54的目录。虽然图4示出了具有三个数据块54和三个日志块56的片段50,但是应当理解,典型片段50将包括更多的数据块54和日志块56。
在一些实施例中,所述SHB 52的长度为4096字节,并且还包括识别块类型为SHB的64位幻数、64位序列号、SHB的64位校验和、片段的64位大小(以字节为单位)以及片段中块的索引。索引还包括片段中的块数的64位计数以及254个条目的阵列。每个条目还包括64位文件标识字段和64位文件块字段。文件标识字段指示相应块的内容,并且包含指示512字节LOG块、该块所属文件的ID以及指示4096字节的数据块的(–1),或者指示SHB的末端的填充的(–2)。如果文件标识字段包含块所属文件的ID,则文件块字段包含文件中块的索引。否则,该字段包含(–1)。
要注意的是,在该方案中,日志块是固定大小(例如,512字节),因此要考虑如何将数据按照该大小打包或使用连续日志块。如果允许重命名长文件名等,这可能会成为一个问题。在一些实施例中,磁道带填充满了片段,即使这意味着最后的段头块只包含填充。
在一些实施例中,所述文件系统10还包括文件路径锁定表。所述文件路径锁定表是只在存储器中的数据结构,即不在检查点记录30中。
根据一说明性实施例,对于每个原子文件系统转换都存在一种类型的日志记录。日志记录类型可能包括以下一种或多种:
(1)将数据块54追加到所述循环链表42的尾部的数据磁道带。
(2)将空数据磁道带16从所述循环链表42的头部移除并添加到文件的链表的尾部。
(3)将空数据磁道带从文件的链表的头部移除并移至所述循环链表42的尾部之后。
(4)将属于文件的数据块54从源数据磁道带移动到目的数据磁道带。
(5)将文件的数据块54标记为无效。
(6)将文件的单链表58更改为不同的单链表。
(7)分配i节点。
(8)取消分配i节点。
(9)将文件与所述单链表58相关联。
(10)将文件与所述单链表58解除关联。
(11)事务开始记录。
(12)事务结束记录。
日志记录缓存在数据块中。刷新事务结束记录提交包括事务的整个操作集合。如果事务永远不结束,则可以将操作日志记录刷新到磁盘,但是可能必须通过重做日志来撤销操作日志记录。在一些实施例中,这些记录无法永久产生。只有在事务结束记录达到日志之后,才可以重做日志,使得操作表示的更改到达磁盘上的本地位置。因此,允许将事务的部分刷新到日志,而不必等待事务结束记录刷新到日志。事务结束记录最终刷新到日志,在这种情况下,可以说事务已经提交,或者事务将失败并且必须被撤销。
实现方法
参考图5,图5示出了根据本发明提供的使用叠瓦式磁记录只追加文件系统10的示例方法100。该方法100被描述为由处理器12执行。当然,该方法100可以由任何其它合适的设备在任何其它合适的系统中执行。
在步骤102,所述处理器12将数据块54写入磁盘,所述磁盘具有数据磁道24部分重叠的多个同心只追加叠瓦式数据磁道带16。所述数据磁道带16与循环链表42相关联,所述循环链表具有分别包含数据块54的头数据磁道带和尾数据磁道带。所有只追加数据磁道带22最初与所述循环链表42相关联并且为空。
在步骤104,所述处理器12创建新文件,并且将空的只追加数据磁道带22从所述循环链表42中移除并添加到文件的单链表(single linked list,简称SLL)中。例如,图6示出了包括多个文件(例如,文件1、文件2、文件3等)的i节点阵列38。每个文件包括组成该文件的SLL 58的一个或多个磁道带。例如,文件1的SLL 58包括磁道带i和磁道带i+1。在图6中,创建文件3作为所述i节点阵列38中的新文件。然后,将磁道带k,即包括多个数据块54的空的只追加数据磁道带添加到文件3的SLL 58。
在步骤106,所述处理器12将新的数据块54追加到所述循环链表42的尾数据磁道带。例如,图7示出了循环链表42,具有三个磁道带:CLL磁道带0、CLL磁道带1和CLL磁道带2。所述CLL磁道带0是所述循环链表42的头数据磁道带,所述CLL磁道带2是尾数据磁道带。将新的数据块54追加到所述CLL磁道带2的片段50上。随着一些文件增长以及一些文件被删除,所述循环链表42上的空数据块54越来越少。
在步骤108,当所述循环链表42上的空数据块54的数量减至预定阈值时,所述处理器12将所述循环链表42的头数据磁道带中的一个或多个数据块54复制到一个或多个文件的单链表58中,以释放已删除文件的数据块以及所述循环链表42中的过时日志块。例如,图8示出了所述CLL磁道带0中的数据块54,所述CLL磁道带0是所述循环链表42的头数据磁道带。数据块54可以表示已删除文件的数据块或过时日志块。数据块54从CLL磁道带0复制到文件3的磁道带0,磁道带0是文件3的SLL 58中的一个磁道带。这可以释放CLL磁道带0中的空间。尽管图8只示出了一个复制的数据块54,可以理解的是,一次可以复制不止一个数据块54。
在步骤110,所述处理器12首先在存储器18中构建片段50,然后将片段追加到所述循环链表42的尾数据磁道带。将片段50相对于其在每个链表中的位置依次追加到所述循环链表42和所述单链表58。创建这种顺序写入次序是因为只追加数据磁道带22不允许乱序写入。此外,这种写入次序排除了因为事务回滚需要恢复在先前事务中释放的数据块54的可能性(当没有刷新事务提交记录或刷新部分构建片段时,这是可能的),但是只追加数据磁道带22已被后续追加操作覆盖。
这意味着释放只追加数据磁道带22的事务的事务提交日志条目需要位于所述循环链表42中的空闲只追加数据磁道带22之前的日志块中。因此,在步骤112,所述处理器12将新释放的数据块54置于所述循环链表42的头部之前,使得在当前日志块已满之前不太可能重新使用这些块。
每个文件与阵列38中的i节点相关联。i节点包括关于文件的管理信息、文件的数据块复制到的单链表以及按照文件中的数据块的顺序排列的空间管理阵列条目的列表。创建文件时,会分配一个空闲的i节点和一个空闲的单链表。当追加数据块54时,将相应的空间管理阵列32元素添加到文件的空间管理阵列条目链表中。当删除文件时,将该文件的i节点标记为空闲,该文件与单链表58去关联,并且将所有空间管理阵列32条目标记为空闲。
当在预定时间段内尚未追加文件并且文件较小时,将该文件的数据块54复制到与其它小文件共享的单链表58中,然后重新分配给该共享单链表。当删除文件并且没有其它文件与该文件共享单链表58时,将该列表上的数据磁道带16释放到所述循环链表42中。
在步骤114,所述处理器12对文件数据和数据结构54进行修改,这实现为事务,如通过两阶段锁定实现。所述处理器12记录有关控制数据结构的变化的撤销和重做信息。然而,所述处理器12不会记录片段50的变化。在相应的事务提交日志条目之前写出变化的数据块54。此外,由于片段50具有固定大小,所以异步刷新日志块。因此,在因为包含事务提交记录的片段仅部分构造或仅部分写入磁盘导致的崩溃后,事务可以完成对内存中数据结构和回滚片段的更改。
这种事务处理方法的含义是需要将包含与日志条目相关联的变化的片段50在日志条目之前追加到磁盘。因此,日志条目需要包含在追加的数据块54之后的日志块中。此外,事务释放数据磁道带16的日志条目需要位于空闲数据磁道带中的数据块54之前的日志块中。
所述处理器12可以执行以下操作来执行周期性检查点:记录盘上日志尾部的日志序号(log sequence number,简称LSN),暂停处理新事务,等待所有原子事务完成,选择当前检查点记录并将所有控制数据结构写入磁盘,将事务日志截断到所述记录的LSN和所有活动事务的事务开始记录的LSN中的较小者,恢复事务处理。
当启动用户发起的关闭时,所述处理器12停止处理新事务,等待活动事务完成,将当前片段填充到完整大小并将其追加到磁盘,启动检查点并等待其完成。
在系统崩溃之后,所述处理器12在正常处理之前从当前检查点读取控制数据结构,以执行恢复处理。所述处理器12从与检查点相关联的LSN开始,一次读取一个片段并验证其是否完成,然后重新记录片段50的每个日志块中的日志条目,并且在遇到第一个不完整片段时停止。然后,所述处理器12执行每个活动事务的撤销。之后,所述处理器12启动检查点并等待其完成。如果在恢复处理期间系统再次崩溃,则所述处理器12重新开始该过程。因此,所述处理器12要求重做或撤销是等幂的或写入补偿日志条目。
为了加速读取性能,可以使用如图9所示的数据块和/或日志块62的缓存60。块62可以表示图4的各种数据块54和/或日志块56。所述缓存60的操作如下。每个块62在三个链表上:最近最少使用(least recently used,简称LRU)列表、其片段50的列表和哈希表桶列表。当需要块62时,使用哈希表来确定块62是否在所述缓存60中。当所述缓存60需要逐出块62时,如果块62没有更改,则所述缓存62仅处理块62的内容。如果需要追加块62,则所述缓存60追加所有先前片段50和该片段。当选择块62逐出时,所述缓存60选择没有更改或已经更改并且属于完整片段50的最旧块62。
盘上数据结构的状态转换
用户动作触发了图3所示并且之前描述的盘上结构的原子状态转换。有效的状态转换包括:
(1)将数据块54追加到循环链表42的尾部。
(2)将空数据磁道带16从所述循环链表42的头部移除并添加到文件的链表的尾部。
(3)将空数据磁道带从文件的链表的头部移除并移至所述循环链表42的头部。
(4)将属于文件的数据块54从源数据磁道带移动到目的数据磁道带。
(5)将文件的数据块54标记为无效。
(6)分配i节点。
(7)取消分配i节点。
(8)分配单链表58。
(9)取消分配单链表58。
(10)将文件与共享单链表58去关联。
(11)将文件与共享单链表58相关联。
如上所述,上述转换类型中的每一个都与日志条目类型相关联。通过先追加受影响的数据来实现每一个上述转换实现的原子性,然后通过对控制数据结构进行更改来完成整个转换。锁定受转换影响的控制数据结构。对内存中的控制数据结构的副本进行更改,并记录日志条目以异步原子地提交转换。因为在任何先前的写入完成之前不写入数据磁道带,所以追加到循环链表42的尾部的数据块54是串行化的。
在以下部分中描述了每个状态转换的处理。这些描述说明这些转换确实可以是原子的,并且可以通过确认这些转换的处理的合法交织来验证处理步骤顺序的有效性。下面的操作被描述为由所述处理器12执行。然而,应当理解,操作可以由其它合适的设备或系统执行。
将数据块追加到循环链表的尾部
可以通过执行以下操作将数据块54追加到所述循环链表42的尾部。所述处理器12锁定i节点和所述循环链表42的尾部。如果当前片段50具有足够的空间或当前数据磁道带未满,则所述处理器12将数据块54追加到其上,将数据块标记为有效,记录日志条目,解锁数据结构。然后过程返回。如果存在空数据磁道带,则所述处理器12推进循环链表的尾部。然后,所述处理器12发出I/O进行追加,将数据块标记为有效,记录日志条目,解锁数据结构。然后过程返回。如果没有空数据磁道带,则所述处理器12唤醒压缩线程,解锁数据结构。然后,压缩线程进入休眠,并重试该过程。
将空数据磁道带从循环链表的头部移除并添加到文件的链表的尾部
可以通过执行以下操作将空数据磁道带16从循环链表42中移除。所述处理器12锁定文件的i节点,锁定循环链表的头部,将循环链表的头部处的数据磁道带解除连接,并将该数据磁道带添加到文件的链表的尾部。然后,所述处理器12记录日志条目,解锁循环链表的头部,并解锁i节点。
将空数据磁道带从文件的链表的头部移除并移至循环链表的头部
可以通过执行以下操作将空数据磁道带16从文件的链表的头部移除并移至所述循环链表42的头部。所述处理器12锁定文件的i节点,锁定共享单链表58,并锁定循环链表的头部。然后,所述处理器12将文件的链表的头部的数据磁道带解除连接,并将该数据磁道带添加到循环链表的头部。然后,所述处理器12记录日志条目,解锁循环链表的头部,解锁单链表58,并解锁i节点。
将属于文件的数据块从源数据磁道带移动到目的数据磁道带
通过执行以下操作,可以将属于文件的数据块54从源数据磁道带移动到目的数据磁道带。所述处理器12锁定文件的i节点,将数据块追加到目的数据磁道带,并在空间管理数据结构中将源数据块标记为无效,将目的数据块标记为有效。然后,所述处理器12记录日志条目,并解锁该文件的i节点。
将文件的数据块标记为无效
通过执行以下操作可以将文件的数据块54标记为无效。所述处理器12锁定文件的i节点,在空间管理数据结构中将数据块标记为无效,记录日志条目,并锁定文件的i节点。
分配i节点
可以通过执行以下操作来分配i节点。所述处理器12找到空闲的i节点,锁定i节点,并验证i节点是否空闲。如果i节点不是空闲的,则处理器12解锁i节点,并且过程返回到开始。否则,所述处理器12初始化i节点的内容,记录日志条目,并解锁i节点。
取消分配i节点
可以通过执行以下操作来取消分配i节点。所述处理器12锁定i节点,将i节点标记为空闲,记录日志条目,解锁i节点。
分配单链表
可以通过执行以下操作来分配单链表58。所述处理器12找到空闲的单链表58,锁定单链表58,验证单链表58是否空闲。如果单链表58不是空闲的,则所述处理器12解锁单链表58,并且过程返回到开始。否则,所述处理器12初始化单链表58的内容,记录日志条目,并解锁单链表58。
取消分配单链表
可以通过执行以下操作取消分配单链表58。所述处理器12锁定单链表58,将单链表58标记为空闲,记录日志条目,解锁单链表58。
将文件与共享单链表相关联
可以通过执行以下操作来将文件与共享单链表58相关联。所述处理器12锁定i节点,锁定单链表58,更改i节点的单链表58。然后,所述处理器12增加单链表58的引用计数,记录日志条目,解锁单链表58,解锁i节点。
将文件与共享单链表去关联
可以通过执行以下操作来将文件与共享单链表58去关联。所述处理器12锁定i节点,锁定单链表,将i节点的单链表58更改为NULL。然后,所述处理器12减少单链表58的引用计数,记录日志条目,解锁单链表58,解锁i节点。
SMR感知只追加文件系统的操作
可以在SMR感知只追加文件系统10中执行许多不同操作。这些操作中的一些操作包括:将数据块54追加到文件,从文件读取数据块,创建文件,删除文件,压缩循环链表的头数据磁道带,合并小文件,打开文件。
每一个上述操作都是发出由事务开始和事务结束日志记录区分的转换顺序的事务。通过锁定文件路径阵列的元素来提供并发操作之间的隔离。以下部分分别描述了这些操作的处理。下面的操作被描述为由所述处理器12执行。然而,应当理解,操作可以由其它合适的设备或系统执行。
打开文件进行读取或追加
为了打开文件进行读取或追加,所述处理器12锁定文件路径,找到文件的i节点。
将数据块追加到文件
为了将数据块54追加到文件,可以使用追加数据块转换。假设文件是打开的。处理器记录事务开始日志记录,发出追加数据块状态转换。该原子转换锁定了i节点。然后,所述处理器12记录事务结束日志记录。
从文件读取数据块
为了从文件读取数据块54,发出以下转换顺序。假设文件是打开的。所述处理器12锁定文件的i节点,在空间管理阵列32中找到数据块。然后,所述处理器12发出磁盘读取,解锁i节点,解锁文件路径。
创建文件
为了创建文件,可以发出以下转换顺序。所述处理器12锁定文件路径,记录事务开始日志记录,分配i节点,锁定i节点,分配单链表58。所述处理器12将文件与单链表相关联,将空数据磁道带从循环链表42移动到单链表,记录事务结束日志记录,解锁i节点,解锁文件路径。
删除文件
为了删除文件,可以发出以下转换顺序。所述处理器12锁定文件路径,锁定i节点,锁定共享单链表58,锁定事务开始日志记录。然后,所述处理器12将文件与该文件的单链表58去关联。如果单链表58的引用计数为0,则所述处理器12将文件的链表上的每个数据磁道带移动到循环链表42。所述处理器12在空间管理阵列条目32中将每个数据块54标记为无效。然后所述处理器12释放i节点;如果引用计数为0,则释放共享链表;记录事务结束日志记录;解锁单链表;解锁i节点;解锁文件路径。
压缩头数据磁道带
参考图8,为了压缩头数据磁道带,可以发出以下转换顺序。所述处理器12记录事务开始日志记录。对于头数据磁道带中的每个数据块54,所述处理器12锁定其i节点并将其移动到文件的链表58。如果文件的链表已满,则所述处理器12将空数据磁道带从循环链表42移动到所述文件的链表。然后,所述处理器12推进循环链表的头部,记录操作结束日志记录,解锁所有i节点。
合并小文件
为了合并小文件,所述处理器12扫描i节点阵列38,以寻找暂时尚未追加且大小小于数据磁道带一半的文件。所述处理器12将这些文件分成两组或更多组,每个组的总大小小于单个数据磁道带。所述处理器12锁定这些文件的i节点,以验证先前项目符号中进行的计算是否仍然有效。如果所有组的文件都无效,则该过程返回到开始,所述处理器12重试。
对于每个有效组,所述处理器12锁定该组中每个文件的i节点,记录事务开始日志记录,将这些文件的数据块54复制到该组的第一个文件的单链表58,并将每个文件与第一个文件的单链表相关联。然后,所述处理器12记录事务结束日志记录,解锁该组中文件的i节点。
检查点
当文件系统日志部分已满(例如,其容量的至少八分之一用于保存文件数据块54和日志块)时,系统10由所述处理器12检查点。两个检查点记录30交替成为当前检查点。如本领域已知的,存在用于选择和标记检查点记录的许多策略。这些检查点技术在此不进一步讨论。
恢复
为了在重新启动时提供恢复,所述处理器12从当前检查点记录初始化控制数据结构。然后,所述处理器12从当前检查点记录中的逻辑块访问(logical block accessing,简称LBA)向前扫描循环链表42,重新编辑每个日志条目并计算每个事务的状态。当到达第一个不完整片段50时结束重做阶段,以得到不完整事务的列表。针对每个不完整事务,根据日志条目类型执行撤销。
要注意确保压缩不会删除活动事务的日志条目。当所述处理器12压缩包含检查点记录中LBA指向的日志块的数据磁道带时,可能会发生这种情况。当这种情况发生时,可以等待新一轮的检查点完成再进行压缩。
所述处理器12对日志条目的撤销取决于假设,即由于链表总是追加到循环链表42或文件的链表,所以撤销将恢复列表的尾部。因为文件的数据磁道带置于循环链表上,并且可以重新使用和覆盖,所以当撤销文件删除时,这种假设可能是错误的。因此,在删除期间标记这些数据磁道带,并在删除操作完成后,取消标记这些数据磁道带。由于数据磁道带可能已被重新使用和覆盖,所以当撤销循环链表的头部的压缩时,上述假设也可能是错误的。因此,在压缩期间标记数据磁道带,并在提交压缩之后,取消标记数据磁道带。
如以下示例所示,写指针的特性能够影响恢复。将数据块54追加到文件。在处理该请求期间,所述处理器12将该数据块54追加到尾数据磁道带,因此推进写指针。所述处理器12更新内存中的控制数据结构,并记录日志条目。如果系统10在日志条目写入磁盘之前崩溃,将推进写指针,但是在恢复的内存中的控制数据结构中将该数据块标记为无效。由于压缩仅复制有效的数据块,所以该丢失的空间将通过压缩来回收。
内存文件系统的实现
包括一组盘上结构,盘上结构的原子状态转换和外部用户触发的操作的SMR感知只追加文件系统10用作该文件系统的内存实现的设计基础。内存实现的处理产生了与从外部用户触发的操作的顺序生成的顺序相符的原子状态转换的顺序。在一些实施例中,内存中SMR感知的只追加文件系统10包括与图1的SMR感知的只追加文件系统10相同的所有组件。在以下小部分中描述了内存中SMR感知的只追加文件系统10的组件。
文件系统布局
文件系统的前1-2%的数据磁道带是随机访问的,包括两个检查点记录。两个检查点记录之一是当前检查点。当缓存控制数据结构时,文件系统恢复从当前检查点加载一致的文件系统状态,然后启动前滚和回滚处理。
剩余的数据磁道带是只追加的,并且保存文件的数据块54和日志数据块。这些数据磁道带最初与循环链表42相关联。当创建新文件时,将空数据磁道带从循环链表中移除,并置于文件的单链表上。
内存数据块缓存
系统10维护数据块的内存中较大的缓存,其通常反映磁盘上的数据块54的状态。内存中的数据缓存中的块可能处于以下状态之一:正在进入状态,指示正在从磁盘读取块(在这种情况下,该块在存储器中的状态是无效的);正在离开状态,表示正在将该块写入磁盘(在这种情况下,该块的磁盘状态为无效);或有效状态,表示内存中块的状态与其在磁盘上的状态相匹配。
对应于前两个状态的是进入和离开列表,其分别维护正在从磁盘读取的磁盘块的列表和写入磁盘的磁盘块的列表。进入和离开磁盘列表是内存中的数据结构,其中包含计划执行磁盘I/O的磁盘块的双向链表。这些列表适当时包括相应磁盘块将被读取/写入的磁盘位置(逻辑块地址)。将处于有效状态的磁盘块保持在有效列表中,该列表也是双向链接的,并且还维护相应磁盘块相关联的磁盘块的LBA。每当要读取磁盘块时,都会查询内存中的数据块缓存,以便可以避免读取磁盘。维护哈希表,以便可以由LBA进行磁盘块缓存的快速查找。保持块状态表,以指示缓存中的每个块的状态,并且保持给定块可能在的列表(进入状态表、离开状态表或有效状态表)中的下一个和前一个块的索引。维护有效列表,使得LRU“时钟”算法可以确定何时从缓存中退出给定块。只要读取或写入,都将给定块移动到列表的头部。当缓存中需要空间时,可以将块从有效列表的尾部移除。
系统10与传统的文件系统缓存管理在多个方面存在不同。由于每个日志条目仅记录对控制数据结构的更改,所以在刷新日志条目之前会写出原子转换追加的磁盘块。由于数据磁道带是只追加的,需要按照磁盘块在数据磁道带中的顺序写入磁盘块。此外,只有只追加数据磁道带中的数据块才能通过缓冲区高速缓存。
上述要求通过缓存的操作来实现。每个块在三个链表上:LRU列表、其片段50的列表和哈希表桶列表。当需要一个块时,哈希表用于确定该块是否在缓存中。当块被驱逐出来时,如果块没有更改,则直接丢弃其内容。如果要追加块,则追加所有前面的片段和该片段。当选择要驱逐的数据块时,选择没有更改或已经更改并且属于完整片段的最旧块。
缓冲区高速缓存支持以下接口调用:
1.BlockHdr*Buf_pin(LBA addr):此调用使用LBA地址addr来固定数据块54。
2.Void buf_unpin(BlockHdr*buf):此调用取消固定数据块54,buf。
3.BlockHdr*Buf_append(LBAaddr,void*data):此调用将新的内容或数据追加到并固定到LBA地址为addr的数据块54。
文件系统操作
可以在内存文件系统实现中执行许多不同的操作。以下部分分别描述了这些操作的处理。下面的操作被描述为由所述处理器12执行。然而,应当理解,操作可以由其它合适的设备或系统执行。
创建文件
为了创建文件,所述处理器12执行的操作与先前描述的“创建文件”操作相同。
从文件读取数据块
为了从文件读取数据块54,发出以下转换顺序。所述处理器12锁定文件的路径,锁定文件的i节点。所述处理器12在空间管理阵列32中找到数据块,调用buf_pin()获取块内容,并调用buf_unpin()。之后,处理器12解锁i节点,解锁文件路径。
将数据块追加到文件
为了将数据块54追加到文件,所述处理器12锁定文件路径,记录事务开始日志记录,锁定i节点和循环链表的尾部。如果当前片段50具有足够的空间或当前数据磁道带未满,则所述处理器12调用buf_append(),调用buf_unpin(),将数据块标记为有效,记录日志条目,解锁数据结构,返回。如果当前片段50没有足够的空间但有空数据磁道带,则所述处理器12推进循环链表42的尾部,然后调用buf_append(),调用buf_unpin(),将数据块标记为有效,记录日志条目,解锁数据结构,返回。如果没有空数据磁道带,则所述处理器12唤醒压缩线程,解锁数据结构,进入休眠状态,稍后尝试该过程。所述处理器12还记录事务结束日志记录。
删除文件
为了删除文件,所述处理器12执行的操作与先前描述的“删除文件”操作相同。
初始化文件系统
为了初始化文件系统10,所述处理器12执行以下操作。基于磁盘的容量,所述处理器12计算检查点记录的大小。然后,所述处理器12初始化控制数据结构。这包括初始化循环链表42、空间管理阵列32、i节点阵列38、单链表58的阵列、文件路径锁定表、事务控制块阵列40、事务日志和缓冲区高速缓存。然后,所述处理器12复位用于只追加数据磁道带22的写指针,启动检查点。打开系统10以在检查点过程完成之后接受用户命令。
文件系统启动
文件系统10启动过程可以包括以下操作。所述处理器12访问第一数据磁道带,以确定哪个检查点记录是当前记录。然后,所述处理器12从当前检查点加载内存空间管理、数据磁道带、i节点、循环数据磁道带链表42的头部/尾部、以及第一日志数据块54的LBA。然后,所述处理器12从第一日志数据块开始执行前滚,直到到达第一不完整片段。然后,所述处理器12执行不完整事务的回滚,并启动检查点。
以上所描述的网络组件可在任意一个通用网络组件中实现,例如具有足够的处理能力、存储资源和网络吞吐能力以处理置于其上的必要工作负载的计算机或网络组件。图10示出了适合于实现本文公开的组件的一个或多个实施例的典型通用网络组件1000。网络组件1000包括具有处理单元1005的计算块1003和系统存储器1007的计算块1003。处理单元1005可以是执行软件指令的任何类型的可编程电子设备,但通常是一个或多个微处理器。所述系统存储器1007可以包括只读存储器(read-onlymemory,简称ROM)1009和随机存取存储器(random access memory,简称RAM)1011。本领域技术人员可理解,所述只读存储器1009和所述随机存取存储器1011均可以存储由所述处理单元1005执行的软件指令。
所述处理单元1005和所述系统存储器1007通过总线1013或交替的通信结构直接或间接连接至一个或多个外部设备。例如,所述处理单元1005或所述系统存储器1007可以直接或间接连接至一个或多个附加存储器存储设备1015。所述存储器存储设备1015可以包括:“硬”磁盘驱动器、固态磁盘驱动器、光盘驱动器和可移动磁盘驱动器等。所述处理单元1005和所述系统存储器1007还可直接或间接与一个或多个输入设备1017以及一个或多个输出设备1019相连。所述输入设备1017可包括:键盘、定点设备(例如,鼠标、触摸板、触笔、轨迹球、操纵杆等)、触摸屏、扫描器、摄像机、麦克风等。所述输出设备1019可以包括显示设备、打印机和扬声器等。这样的显示设备可以用于显示视频图像。根据所述网络组件1000的各示例可知,外部设备1015-1019中的一个或多个可以内置有所述计算块1003。或者,外部设备1015-1019中的一个或多个可以置于所述计算块1003的外部,并通过通用串行总线(Universal Serial Bus,简称USB)连接或数字视频接口(digital visual interface,简称DVI)连接与所述总线1013相连。
在一些实施方式中,所述计算块1003还可以直接或间接地连接至一个或多个网络接口卡(network interface card,简称NIC)1021,从而与组成网络的其它设备通信。根据一个或多个通信协议,如传输控制协议(Transmission Control Protocol,简称TCP)和互联网协议(Internet Protocol,简称IP),所述网络接口卡1021将来自所述计算块1003的数据和控制信号转化为网络消息。此外,网络接口卡1021可以使用任何合适的连接代理(或代理的组合)连接到网络,包括无线收发器,调制解调器或以太网连接等。
应该理解的是,所述网络组件1000仅仅为示例性说明,并不进行限制。可以使用一个或多个计算设备来实现本发明的各实施例,该一个或多个计算设备包括图10所示的所述网络组件1000的组件,或者具有包括图10未示出的组件的替代组件组合。例如,可以采用多处理器计算机、多个设置在网络中的单和/或多处理器计算机或两者的某个组合来实现各实施例。
为本专利文档中使用的特定术语和短语进行定义是有帮助的。术语“包括”和“包含”以及它们的派生词表示没有限制的包括。术语“或者”是包容性的,意为和/或。短语“与……关联”和“与其关联”以及其派生的短语意味着包括、被包括在内、与……互连、包含、被包含在内、连接到或与……连接、耦合到或与……耦合、可与……通信、与……配合、交织、并列、接近、被绑定到或与……绑定、具有、具有……属性,等等。
虽然本发明就某些实施例和一般相关方法方面进行了描述,但是对本领域技术人员而言,对实施例和方法的各种更改和变更将是显而易见的。因此,示例实施例的上述描述不限定或约束本发明。正如以下权利要求定义,其它修改、替代以及变更也是可能的,而不偏离本发明的精神和范围。
Claims (18)
1.一种方法,其特征在于,包括:
处理器将数据块写入磁盘,其中,所述磁盘包括数据磁道部分重叠的多个同心只追加叠瓦式数据磁道带,所述数据磁道带与具有头数据磁道带和尾数据磁道带的循环链表相关联,所述头数据磁道带和所述尾数据磁道带分别包括多个数据块;
所述处理器创建新文件,其中,将所述多个数据磁道带中的空数据磁道带从所述循环链表中移除并添加到所述新文件的单链表中;
所述处理器将新文件的数据块追加到所述循环链表的所述尾数据磁道带;
当所述循环链表中的空数据磁道带的数量减至预定阈值时,所述处理器将所述循环链表的所述头数据磁道带中的数据块复制到所述新文件的所述单链表中,以释放已删除文件的数据块以及所述循环链表中的过时日志块。
2.根据权利要求1所述的方法,其特征在于,还包括:
将数据磁道带的片段相对于其在每个链表中的位置依次追加到所述循环链表和所述单链表中。
3.根据权利要求2所述的方法,其特征在于,将所述数据块按照它们在所述循环链表中出现的顺序依次写入所述磁盘。
4.根据权利要求2所述的方法,其特征在于,将对所述数据块和数据结构的修改实现为事务。
5.根据权利要求4所述的方法,其特征在于,所述事务的事务提交日志条目存在于所述循环链表中事务释放的数据磁道带之前的日志块中。
6.根据权利要求5所述的方法,其特征在于,还包括:
将释放的数据块置于所述循环链表的所述头数据磁道带之前,使得所述释放的数据块在当前日志块已满之前不太可能被重新使用。
7.根据权利要求5所述的方法,其特征在于,记录有关控制数据结构的变化的撤销和重做信息,但不记录片段的变化。
8.根据权利要求5所述的方法,其特征在于,在相应的事务提交日志条目之前写出更改的数据块。
9.根据权利要求5所述的方法,其特征在于,所述片段具有固定大小,并且异步刷新所述日志块。
10.一种叠瓦式磁记录只追加文件系统,其特征在于,包括:
磁盘,包括数据磁道部分重叠的多个同心只追加叠瓦式数据磁道带,其中,所述数据磁道带与具有头数据磁道带和尾数据磁道带的循环链表相关联,所述头数据磁道带和所述尾数据磁道带分别包括多个数据块;
处理器,用于:
将数据块写入所述磁盘,并创建新文件,其中,将所述多个数据磁道带中的空数据磁道带从所述循环链表中移除并添加到所述新文件的单链表中;
将新文件的数据块追加到所述循环链表的所述尾数据磁道带;
当所述循环链表中的空数据磁道带的数量减至预定阈值时,将所述循环链表的所述头数据磁道带中的数据块复制到所述新文件的所述单链表中,以释放已删除文件的数据块以及所述循环链表中的过时日志块。
11.根据权利要求10所述的系统,其特征在于,所述处理器用于将数据磁道带的片段相对于其在每个链表中的位置依次追加到所述循环链表和所述单链表中。
12.根据权利要求11所述的系统,其特征在于,所述处理器用于将所述数据块按照它们在所述循环链表中出现的顺序依次写入所述磁盘。
13.根据权利要求11所述的系统,其特征在于,所述处理器用于将对所述数据块和数据结构的修改实现为事务。
14.根据权利要求13所述的系统,其特征在于,还包括所述事务的事务提交日志条目,其中,所述事务的事务提交日志条目存在于所述循环链表中事务释放的数据磁道带之前的日志块中。
15.根据权利要求14所述的系统,其特征在于,所述处理器用于将释放的数据块置于所述循环链表的所述头数据磁道带之前,使得所述释放的数据块在当前日志块已满之前不太可能被重新使用。
16.根据权利要求14所述的系统,其特征在于,所述处理器用于:
记录有关控制数据结构的变化的撤销和重做信息;
不记录片段的变化。
17.根据权利要求14所述的系统,其特征在于,所述处理器用于:在相应的事务提交日志条目之前写出更改的数据块。
18.一种叠瓦式磁记录只追加文件系统,其特征在于,包括:
磁盘,具有数据磁道部分重叠的多个同心只追加叠瓦式数据磁道带,其中,所述数据磁道带与具有头数据磁道带和尾数据磁道带的循环链表相关联,所述头数据磁道带和所述尾数据磁道带分别包括多个数据块;
处理器,用于:
将数据块写入所述磁盘;
创建新文件,其中,将所述多个数据磁道带中的空数据磁道带从所述循环链表中移除并添加到所述新文件的单链表中;
将释放的数据块置于所述循环链表的所述头数据磁道带之前;
在相应的事务提交日志条目之前写出更改的数据块。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/704,688 US9324367B1 (en) | 2015-05-05 | 2015-05-05 | SMR-aware append-only file system |
US14/704,688 | 2015-05-05 | ||
PCT/CN2016/080996 WO2016177328A1 (en) | 2015-05-05 | 2016-05-04 | Smr-aware append-only file system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107735774A true CN107735774A (zh) | 2018-02-23 |
CN107735774B CN107735774B (zh) | 2020-05-08 |
Family
ID=55754719
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680025570.3A Active CN107735774B (zh) | 2015-05-05 | 2016-05-04 | 一种smr感知只追加文件系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9324367B1 (zh) |
CN (1) | CN107735774B (zh) |
WO (1) | WO2016177328A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109947775A (zh) * | 2019-03-13 | 2019-06-28 | 北京微步在线科技有限公司 | 数据处理方法、装置、电子设备及计算机可读介质 |
CN111580752A (zh) * | 2020-04-28 | 2020-08-25 | 中国人民大学 | 一种数据存储方法、设备、计算机程序及存储介质 |
CN113419685A (zh) * | 2021-07-12 | 2021-09-21 | 杭州海康威视数字技术股份有限公司 | 基于smr的raid创建、针对raid的数据写入及raid恢复方法 |
CN113823331A (zh) * | 2021-10-12 | 2021-12-21 | 成都统信软件技术有限公司 | 一种光盘追加刻录方法、装置及计算设备 |
CN114546244A (zh) * | 2020-11-18 | 2022-05-27 | 云坞科技(北京)有限公司 | 一种基于块级别连续数据保护的缓存空间过滤方法 |
CN114706536A (zh) * | 2022-05-27 | 2022-07-05 | 阿里巴巴(中国)有限公司 | 一种元数据管理方法、装置、电子设备及可读存储介质 |
US11681444B2 (en) | 2020-03-30 | 2023-06-20 | Beijing Baidu Netcom Science Technology Co., Ltd. | Shingled magnetic disk management method for data isolation by space files, apparatus, and electronic device |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9767843B2 (en) * | 2016-02-05 | 2017-09-19 | Seagate Technology Llc | Fragmented data storage bands |
WO2017201699A1 (zh) * | 2016-05-26 | 2017-11-30 | 深圳大学 | 一种基于Ondemand算法的STL映射表管理方法 |
CN108628542B (zh) * | 2017-03-22 | 2021-08-03 | 华为技术有限公司 | 一种文件合并方法及控制器 |
US10909074B2 (en) | 2017-04-18 | 2021-02-02 | Microsoft Technology Licensing, Llc | File table index aggregate statistics |
US9997194B1 (en) * | 2017-09-25 | 2018-06-12 | Amazon Technologies, Inc. | Partial updates for shingled magnetic recording devices |
CN108804625B (zh) * | 2018-05-31 | 2020-05-12 | 阿里巴巴集团控股有限公司 | 一种lsm树的优化方法、装置及计算机设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101566924A (zh) * | 2008-04-23 | 2009-10-28 | 中兴通讯股份有限公司 | 一种磁盘阵列的数据读写方法 |
CN102681795A (zh) * | 2012-05-02 | 2012-09-19 | 无锡众志和达存储技术有限公司 | 一种Linux系统的SCSI Target模式的数据I/O写入方法 |
US8756382B1 (en) * | 2011-06-30 | 2014-06-17 | Western Digital Technologies, Inc. | Method for file based shingled data storage utilizing multiple media types |
US8867153B1 (en) * | 2013-12-09 | 2014-10-21 | HGST Netherlands B.V. | Method and apparatus for dynamic track squeeze in a hard drive |
US8941936B1 (en) * | 2014-06-27 | 2015-01-27 | International Business Machines Corporation | Hybrid surface format hard disk drive |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102014003205A1 (de) * | 2014-03-04 | 2015-09-10 | Inodyn Newmedia Gmbh | Verfahren und Vorrichtung für effiziente, verteilte Schreibzugriffe bei Speichervorrichtungen mit überlappenden Datenspuren |
US9098451B1 (en) * | 2014-11-21 | 2015-08-04 | Igneous Systems, Inc. | Shingled repair set for writing data |
US9153290B1 (en) * | 2015-01-22 | 2015-10-06 | HGST Netherlands B.V. | Intra-zone wear leveling for heat-assisted magnetic recording—shingled magnetic recording (HAMR-SMR) type storage devices |
-
2015
- 2015-05-05 US US14/704,688 patent/US9324367B1/en active Active
-
2016
- 2016-05-04 CN CN201680025570.3A patent/CN107735774B/zh active Active
- 2016-05-04 WO PCT/CN2016/080996 patent/WO2016177328A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101566924A (zh) * | 2008-04-23 | 2009-10-28 | 中兴通讯股份有限公司 | 一种磁盘阵列的数据读写方法 |
US8756382B1 (en) * | 2011-06-30 | 2014-06-17 | Western Digital Technologies, Inc. | Method for file based shingled data storage utilizing multiple media types |
CN102681795A (zh) * | 2012-05-02 | 2012-09-19 | 无锡众志和达存储技术有限公司 | 一种Linux系统的SCSI Target模式的数据I/O写入方法 |
US8867153B1 (en) * | 2013-12-09 | 2014-10-21 | HGST Netherlands B.V. | Method and apparatus for dynamic track squeeze in a hard drive |
US8941936B1 (en) * | 2014-06-27 | 2015-01-27 | International Business Machines Corporation | Hybrid surface format hard disk drive |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109947775A (zh) * | 2019-03-13 | 2019-06-28 | 北京微步在线科技有限公司 | 数据处理方法、装置、电子设备及计算机可读介质 |
CN109947775B (zh) * | 2019-03-13 | 2021-03-23 | 北京微步在线科技有限公司 | 数据处理方法、装置、电子设备及计算机可读介质 |
US11681444B2 (en) | 2020-03-30 | 2023-06-20 | Beijing Baidu Netcom Science Technology Co., Ltd. | Shingled magnetic disk management method for data isolation by space files, apparatus, and electronic device |
CN111580752A (zh) * | 2020-04-28 | 2020-08-25 | 中国人民大学 | 一种数据存储方法、设备、计算机程序及存储介质 |
CN111580752B (zh) * | 2020-04-28 | 2023-09-26 | 中国人民大学 | 一种数据存储方法、设备、计算机程序及存储介质 |
CN114546244A (zh) * | 2020-11-18 | 2022-05-27 | 云坞科技(北京)有限公司 | 一种基于块级别连续数据保护的缓存空间过滤方法 |
CN114546244B (zh) * | 2020-11-18 | 2023-11-03 | 云坞科技(北京)有限公司 | 一种基于块级别连续数据保护的缓存空间过滤方法 |
CN113419685A (zh) * | 2021-07-12 | 2021-09-21 | 杭州海康威视数字技术股份有限公司 | 基于smr的raid创建、针对raid的数据写入及raid恢复方法 |
CN113419685B (zh) * | 2021-07-12 | 2022-08-09 | 杭州海康威视数字技术股份有限公司 | 基于smr的raid创建、针对raid的数据写入及raid恢复方法 |
CN113823331A (zh) * | 2021-10-12 | 2021-12-21 | 成都统信软件技术有限公司 | 一种光盘追加刻录方法、装置及计算设备 |
CN114706536A (zh) * | 2022-05-27 | 2022-07-05 | 阿里巴巴(中国)有限公司 | 一种元数据管理方法、装置、电子设备及可读存储介质 |
CN114706536B (zh) * | 2022-05-27 | 2022-11-11 | 阿里巴巴(中国)有限公司 | 一种元数据管理方法、装置、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2016177328A1 (en) | 2016-11-10 |
US9324367B1 (en) | 2016-04-26 |
CN107735774B (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107735774A (zh) | 一种smr感知只追加文件系统 | |
CN105706061B (zh) | 使用非易失性存储器的崩溃恢复 | |
US10817421B2 (en) | Persistent data structures | |
US20150178165A1 (en) | Checkpoints for a file system | |
CN109343790A (zh) | 一种基于nand flash的数据存储方法、终端设备及存储介质 | |
CN102331993B (zh) | 分布式数据库的数据迁移方法和分布式数据库迁移系统 | |
JP5142995B2 (ja) | メモリページ管理 | |
US8539147B2 (en) | Apparatus and method for controlling storage system | |
CN109725842B (zh) | 加速随机写入布局以用于混合存储系统内的桶分配的系统和方法 | |
US20140379671A1 (en) | Data scrubbing in cluster-based storage systems | |
US8996829B2 (en) | Consistency without ordering dependency | |
CN109800185B (zh) | 一种数据存储系统中的数据缓存方法 | |
CN103218176B (zh) | 数据处理方法及装置 | |
WO2015020811A1 (en) | Persistent data structures | |
US20060200500A1 (en) | Method of efficiently recovering database | |
CN106326229B (zh) | 一种嵌入式系统的文件存储方法和装置 | |
KR20080033276A (ko) | 안전한 저장 관리 시스템 및 방법 | |
CN107179878A (zh) | 基于应用优化的数据存储的方法和装置 | |
CN103150267B (zh) | 一种多控制器间的缓存同步方法 | |
TW480395B (en) | Record regenerating device | |
US20140122433A1 (en) | Storage device and data backup method | |
CN103703449B (zh) | 存储器合并的计算机实现方法、系统以及装置 | |
JP2005258789A (ja) | ストレージ装置、ストレージコントローラ及びライトバックキャッシュ制御方法 | |
CN111400279B (zh) | 数据操作方法、装置和计算机可读存储介质 | |
US9846553B2 (en) | Organization and management of key-value stores |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |