CN111480149A - 持久存储器设备中的预写式日志记录 - Google Patents
持久存储器设备中的预写式日志记录 Download PDFInfo
- Publication number
- CN111480149A CN111480149A CN201880080625.XA CN201880080625A CN111480149A CN 111480149 A CN111480149 A CN 111480149A CN 201880080625 A CN201880080625 A CN 201880080625A CN 111480149 A CN111480149 A CN 111480149A
- Authority
- CN
- China
- Prior art keywords
- log
- checksum
- file system
- page
- extracted
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1469—Backup restoration techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1471—Saving, restoring, recovering or retrying involving logging of persistent data for recovery
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1865—Transactional file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- 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/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/065—Replication mechanisms
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本文中公开的技术通过将日志数据写入持久存储器而不是在写入磁盘之前在RAM中进行分级来改进文件系统日志记录的性能。在一个实施例中,在日志被写时,校验和被插入,使得在恢复期间,校验和可用于区好的日志页面和坏的日志页面。通过这种方式,可以评估好的日志页面,以确定是向前、向后滚动文件系统事务的一部分,还是不做任何事情,而坏的日志页面可以安全地被忽略。附加地或替代地,当将数据写入持久存储器时采用非临时副本,从而减少了日志数据在崩溃中被展露而被丢失的时间量。
Description
背景技术
存储是计算体验不可或缺的。软件崩溃、断电、电池耗尽、因此如果无法将数据存储在非易失性存储器中、甚至最基本的计算任务,诸如保存数据、共享文件、部署应用等,也将是不可能的或是无意义的。
已经开发了许多类型的非易失性存储器,诸如磁盘驱动器、磁带驱动器、基于NAND的固态驱动器、以及最近的持久存储器。每种类型的存储都需要在访问时间、吞吐量、容量、易失性、成本等之间进行权衡。结果,很好地利用一种类型的存储装置的技术可能对另一种类型而言效率低下。例如用于磁盘驱动器的文件系统可能会设想易失性、较大的扇区大小、可靠性限制和吞吐量问题。这样,为磁盘驱动器优化的文件系统算法在应用于其他类型的存储装置时可能效率不高。
发明内容
现有文件系统日志通常在写入诸如硬盘驱动器的持久存储设备之前,先被存储在易失性随机存取存储器(RAM)中。本文公开的技术通过将日志数据写入持久存储器而不是在写入磁盘之前在RAM中对日志数据进行分级来提高文件系统日志记录的性能。在一个实施例中,将日志数据写入持久存储设备的过程几乎立即使日志固化–例如在断电、CPU停止或其他导致RAM内容丢失的事件中,使日志变得恒久。除了提高运行时性能外,将日志数据写入持久存储器还可以使崩溃恢复更加高效,因为由于崩溃而导致日志数据丢失的可能性较小,并且当发生崩溃时,更少的数据被丢失。
然而,尽管将日志数据写入非易失性持久存储器减少了在崩溃期间丢失日志数据的可能性,但是当崩溃发生时信息可能正在被写入持久存储器的过程中,从而使日志处于不一致的状态。在本文公开的一个实施例中,在日志被写时,校验和被插入,使得在恢复期间,校验和可用于区分好的日志页面和坏的日志页面。通过这种方式,可以结合文件系统元数据表来分析好的日志页面,以确定是向前、向后滚动部分事务,还是不做任意事情。坏的日志页面是未提交事务的一种指示。由于元数据表在提交文件系统事务后会被固化,因此未提交事务(即没有事务提交日志记录)的指示是对于此特定事务没有需要被撤消的加固的元数据表条目的指示。这样,可以安全地忽略坏的日志页面。
另外地或替代地,本文公开的一个实施例生成数据的非临时副本作为被复制到持久存储器的日志数据。在一个实施例中,非临时副本是绕过存储系统高速缓存的副本,从而进一步降低了在崩溃期间日志数据的给定页面丢失的可能性。例如诸如一级高速缓存(L1高速缓存)的CPU高速缓存可以在被写后被跳过、写入或刷新,从而减少了数据在写入非易失性持久存储器之前在易失性高速缓存中存在的时间量。
文件系统是操作系统的核心组件,因此,本文所述的改进是针对计算固有的问题的技术解决方案-如何使非易失性存储的速度和效率最大化。
附图说明
参考附图描述具体实施方式。在附图中,附图标记的最左边的(一个或多个)数字标识该附图标记首次出现的附图。不同附图中的相同附图标记表示相似或相同的项目。对多个项目中的个体项目的引用可以使用带有字母或字母序列的附图标记来引用每个个体项目。对项目的通用引用可以使用不带字母序列的特定附图标记。
图1示出了用于使用易失性RAM和磁盘驱动器来提交、前滚和后滚文件操作元数据的文件系统的现有技术部分。
图2示出了破坏(torn)页面。
图3示出了用于使用持久存储器来提交、前滚和后滚文件操作元数据的文件系统的部分。
图4是用于在持久存储设备中进行预写式日志记录的示例方法的流程图。
图5是示出了用于能够实现本文提出的技术和技艺的方面的计算系统的说明性硬件和软件架构的计算机架构图。
具体实施方式
以下具体实施方式描述了用于持久存储器存储设备的文件系统日志记录的方法。
如本文所使用的,“持久存储器”是指在断电时保留信息的字节可寻址的存储器设备。与诸如硬盘驱动器和基于NAND的固态驱动器(SSD)的提供基于扇区的寻址并且不能直接通过存储器总线寻址的其他类型的非易失性存储装置相比,持久存储器可通过存储器总线可寻址。
如本文所使用,“文件系统日志”是指文件系统事务数据的存储库。每个事务都包含对元数据表的改变,这些改变在应用后会导致文件系统操作被执行。例如与“创建文件”操作相关联的日志记录可以包括要创建的目录表条目和要创建的主文件表条目。在崩溃或其他系统不稳定的情况下,可以检查文件系统日志以确认文件系统的元数据表处于一致状态–例如对于给定的事务,应用对元数据表的所有改变。当文件系统事务仅部分被记录在文件系统日志中时,也可以通过撤消对元数据表的改变来实现文件系统元数据一致性。
如本文所使用,“易失性存储器”是指当设备的电源被中断时丢失数据的存储设备。电源可能会因断电、电池电量耗尽、手动重启、计划重启等而中断。
如本文所使用,“加固”是指将一片数据提交给非易失性存储设备。加固的数据可以抵抗系统崩溃、断电和可能导致易失性存储设备中的数据丢失的其他中断。
如本文中所使用的,“事务”是指一个或多个文件系统日志记录,其后是提交日志记录,该提交日志记录指示事务的所有组件已经被记录在日志中。
如本文所使用的,“提交”是指利用提交日志记录来指示事务的所有组件已经被记录,无论是在易失性还是非易失性存储器中。
现在转到图1,示出了文件系统100的一部分,该文件系统100用于使用易失性RAM和磁盘驱动器来提交、前滚和后滚文件操作元数据。在一个实施例中,文件系统100是计算机101的一部分。文件系统日志102被描述了两次:首次,它在存储器中以文件系统102(a)的形式出现,并且再次,从逻辑上被认为是环形缓冲区102(b)。如下所述,文件系统日志102将与文件系统操作相关的元数据存储为事务,以便当从系统崩溃恢复时,基于事务是否完成,可以全部应用事务元素,也可以全部撤消事务元素。
主文件表104描绘了一个表,该表包含与存储在存储设备上的文件相关联的元数据。每个条目可包括文件名(例如条目105的名称为“TODO.txt”)、描述文件内容的一个或多个SectorID(“230”)、文件在存储设备上的开始位置、文件大小、创建日期、最后使用日期等。类似地,目录表106描绘了一个表,其中条目至少包含目录名称和指向主文件表中的条目的指针,诸如条目107,其具有目录名称“c:\dir\name”和指针“3”,指针“3”指向MFT 104中的条目105。主文件表(MFT)位图108指示MFT 104中的哪些条目为空、哪些在使用中。在此示例中,条目103指示正在使用第三条目(MFT条目105)。如以下更详细讨论的,当适当的元数据表中缺少文件系统日志102中指示的改变时,可以在恢复操作期间更新这些元数据表中的每一个。类似地,设想了其他元数据表,诸如通过指示哪些群集可用(哪些不可用)来控制如何在存储设备上分配群集的群集位图。
当执行诸如创建、附加、删除、移动、复制或重命名文件的文件操作时,将更新多个元数据表中的条目。但是,由于这些元数据表被存储在不同的位置,因此无法执行一项I/O操作以原子地对其进行加固-即,不可能利用单个存储操作来加固所有这些条目,使得所有条目都被加固,或者在发生错误的情况下,没有一项被加固。这就提出了一个挑战-系统如何原子地更新所有这些部分?如果将MFT 104条目和目录表106条目连续保存到磁盘,则崩溃、断电或其他故障可能会干扰一个操作,而不会干扰其他操作,从而使文件系统处于不一致状态。
该问题的一种解决方案是文件系统日志,诸如预写式日志,也称为Aries式日志,在图1中描绘为文件系统日志102。在一个实施例中,日志102包括两个重新启动页110和112、两个“乒乓”页114和116以及日志的主体。日志的主体包含日志页面118和120,每个日志页面都可以与一个或多个事务ID相关联。例如日志页面118被描述为具有头部124和日志记录126-130。
一般而言,文件系统日志102描述了对元数据表的改变,这些改变在提交时定义了所请求的文件系统操作。例如考虑计算机创建文件的场景。首先,计算机从MFT位图108中分配一个位103,以查找空闲的MFT 104条目。通过从MFT位图108中分配一个位,计算机实现了MFT位图中的改变,例如在一个时隙中添加一个值,该值指示对MFT记录的更新。然后,计算机使用扇区ID,文件名(例如“TODO”),指向目录表106中条目107的目录ID,时间戳等来初始化对应的MFT条目,例如条目105。接下来,目录表106中的条目107初始化,特别是MFT条目105所指向的条目被初始化。在一个实施例中,条目107包含要在其中创建文件的目录名称,指向MFT记录的指针(例如指向记录105的MFTID为3)等。在一个实施例中,这些元数据表条目被创建的顺序是无关紧要的,并且可以按任意顺序进行改变。
对于对元数据表的每个改变,将一条记录添加到文件系统日志102中,该记录指示如何执行改变(也称为“前滚”或“重做”)以及如何撤消改变(也称为“回滚”)。例如日志页面118包括头部124和两个日志记录,即日志记录126和日志记录128,它们各自描述了如何向前和向后滚动对元数据表的改变。日志记录可能比日志页面占用更少的存储器,在这种情况下,其他日志记录也可能存储在同一日志页面中。另外地或替代地,日志记录可能比单个日志页面需要更多的存储器,或者比单个日志页面中剩余部分需要更多的存储器,在这种情况下,日志记录可能跨越多个日志页面。每个日志记录还包括事务ID字段。可以通过具有相同的事务ID来标识作为同一事务的部分的日志记录。此外,每个日志记录都与一个日志序列号(例如“2”)相关联。日志序列号可以是单调递增的数字,其被用于确定元数据文件中给定记录的状态。通过比较日志序列号,可以确定给定的元数据文件条目的状态。一旦将每个日志记录添加到文件系统日志102中,就会添加还包括事务ID的提交记录130,其指示重做或撤消请求的文件系统操作所需的所有信息都被包含在日志中。
此时,已经在存储器中(例如在易失性RAM中)对元数据表和文件系统日志进行了改变,使得崩溃、断电等导致所请求的文件系统操作故障。但是,尽管文件系统操作将故障,但文件系统本身将保持一致状态,因为未对基础驱动器进行改变。例如在元数据表中将没有任意孤立的条目,例如孤行109,而在元数据表中也不存在指向其他元数据表中的损坏(例如损坏的111)、不存在或过期的条目,在指向主文件表104中不存在的条目的目录表106中。
在一个实施例中,一旦已经将提交记录添加到日志102,则可以通过将改变持久化到磁盘来“加固”文件系统请求。但是,例如在提交记录被添加之前,日志记录可以在任意时候被加固。如果在加固对应的提交记录之前对日志记录进行了加固,并且发生了故障,则文件系统可以利用加固的日志记录中包含的“回滚”信息将文件系统恢复到一致状态。
在一个实施例中,必须遵循单个规则以确保使用预写式日志的文件系统的完整性:在对元数据表104-108进行任意改变之前,必须对诸如126和128的日志记录进行加固。一旦对日志102的改变被加固,文件系统就具有重新创建和/或回滚对元数据表104-108的改变所需的所有信息。具体地,在恢复期间,文件系统可以将日志记录中包括的日志序列号与元数据表104-108中包括的对应日志序列号进行比较,并基于该比较来确定是向前还是向后滚动日志记录。例如当找到对应的加固日志记录但找不到对应的提交记录时,可以回滚对元数据表的改变。例如当找到加固的日志记录并为其找到了对应的提交记录,但是日志记录中描述的改变尚未加固到元数据表中时,日志记录中的改变可以前滚。
当日志102正在被加固到磁盘的过程中但是在事务被完全加固之前(即,给定事务的一个或多个日志记录未被加固)时,系统崩溃也可能发生。在这些情况下,未完成事务的对应元数据表改变也可能已被加固到磁盘上。在这些场景中,有可能在恢复操作期间在日志中找到不完整或其他情况下损坏的事务,并且由于元数据表条目的部分加固,文件系统处于不一致状态。
在一个实施例中,标识了没有对应提交记录的日志记录。这些日志记录不能“前滚”,因为事务不完整–部分前滚事务会使文件系统处于不一致状态。因此,在这些场景中,日志条目用于“撤消”对元数据表所做的任意对应改变,以恢复文件系统的完整性。
图1所描绘的文件系统日志102包括重新启动页面110和112,其中一个或另一个在日志102被提交到磁盘时被更新。重新启动页面110和112在日志102中创建检查点,例如检查点122,可以在恢复期间使用这些检查点以避免处理不再相关的日志页面。通常,日志页面不再相关,因为已经对元数据表104-108进行了对应的改变。对于长度可能为64兆字节或更多的日志,与重新处理日志中已知已经处理过的部分相比,这提供了实质的性能优势。这样,在提交日志102期间,两个检查点之一将被更新为指向下一个可用的日志页面。在日志102被加固时发生崩溃的情况下,则另一个检查点将保持为故障安全,在这种情况下将使用先前的检查点。
图1中描绘的文件系统日志102还包括乒乓页面114和116。乒乓页面用于在将扇区写出到磁盘之前对事务进行批处理。这样做是因为日志记录可以具有变化的大小,例如从20字节到512KB。由于日志记录可以小于典型的存储设备扇区大小512字节,因此将多个记录存储在同一512字节扇区中,以避免浪费空间。但是,如果将一条日志记录加固到给定扇区中的磁盘上,然后再使用同一扇区中的不同字节来加固第二条日志记录,则第二加固期间的故障可能会导致存储在第一加固中的信息丢失,因为扇区原子地写成功或失败。这可能会损坏文件系统的完整性,因为存储在第一次加固中的信息将丢失,而对应的元数据表条目将保留下来。
乒乓页面114和116通过在分级区中建立扇区的两个副本来解决该问题。例如第一日志记录被存储在页面114中,并被加固。然后,在接收到第二个日志记录后,将第一个日志记录复制到页面116,然后复制第二个日志记录,并对页面116进行加固。这重复进行-在收到第三日志记录后,第二条日志记录和第三条日志记录将附加到页面114,该页面现在依次具有第一日志记录、第二日志记录和第三日志记录,并进行了加固。因此,当添加日志记录时,如果在任意时候加固失败,则该扇区的先前状态将保留在另一个乒乓页面中。一旦扇区被填充,其被复制到日志主体。
现在转向图2,示出了破坏页面200。
虽然日志记录的大小可以变化,但是日志102以固定的页面大小被管理,诸如4KB页面202(尽管类似地考虑了3kb、8kb、16kb和其他页面大小)。但是,此页面大小通常不同于磁盘驱动器提供的扇区大小,其可能是例如512字节,如块204…210所示。在跨多个512字节扇区写入4k日志页面的过程中断电时,这可能会成为问题,因为虽然扇区写是原子的,但4k页面中的某些部分可能已经被加固而另一部分尚未被加固,称为破坏写的情况。破坏写是损坏的指示,通常不允许恢复的情况。
在一个实施例中,使用更新阵列来标识破坏写。每个4k页面与序列号相关联,例如“14”或“8”,并且用于写该4k页面的每个512字节的扇区具有保留用于存储序列号的部分。例如给定的4k页可能被分配了序列号14,因此,在读取该页时,如果任意扇区与诸如序列号8的不同的序列号相关联,则破坏写被标识。
现在转向图3,示出了文件系统300的部分,该文件系统300用于使用持久存储器来提交、前滚和后滚文件操作元数据。
如上所述,持久存储器是字节可寻址的存储器设备,其在断电时保留信息,并且其是通过存储器总线可寻址的。当通过存储器总线直接寻址(例如经由存储器映射文件)时,持久存储器可以非常快–比最快的盘驱动器或SSD快10倍。但是,当将持久存储器用作上述文件系统技术的存储设备时,性能可能会受到影响,尤其是当文件系统操作需要高百分比的元数据操作(与内容传输操作相对)时,诸如空文件的创建或文件的重命名。诸如“直写”操作的其他场景也比直接在存储器总线上执行的可比较的操作要慢得多,这些其他场景要求在操作返回调用资源之前将所有元数据都加固到磁盘上。但是,应用将继续利用现有技术来操纵文件,因此改进元数据密集型文件操作的性能具有很大的优势。
如图3所示,一个实施例用持久存储器代替易失性RAM作为日志302的介质,如由持久存储器日志302(a)和日志302(b)所描绘的,分别表示存储器中和逻辑表示。其他实施例也可以将元数据表304-308存储在持久存储器中,并且应用如下所述的类似技术来标识破坏写。因为持久存储器是非易失性的,所以文件系统300不利用乒乓页面114-116。
在一个实施例中,文件系统300在写入文件系统日志302时使用非临时副本。非临时副本是绕过中央处理单元(CPU)高速缓存层次结构的指令,其使得直接对RAM进行写操作,在存储器映射的场景下,这将导致直接对持久存储器执行写操作。附加地或替代地,可以通过在创建副本后立即刷新CPU的高速缓存来近似非临时副本。CPU可能具有多层高速缓存-例如1级(L1)高速缓存以及2级高速缓存、3级高速缓存等,所有这些都可以被理想地绕开。但是,绕开某些高速缓存级别比不绕过任意高速缓存级别要好,因为在加固日志之前在展露中减少崩溃风险会提高可靠性。通过利用非临时副本,一旦副本被执行,日志记录就会被“加固”。
在一个实施例中,重新启动页面310和312以及检查点记录322用于避免在恢复时扫描和处理整个日志302,如上面关于图1所讨论的。
日志302可以包括恒定大小的存储器页面。例如4k的存储器页面可用于存储一个或多个日志记录,或者更大的日志记录可跨多个4k存储器页面被存储。但是,与周期性地跨512个字节的扇区被复制到磁盘的日志102不同,一旦将日志条目被复制到持久存储器,日志302就会被加固,从而避免了跨512字节的扇区中的破坏写的问题。
然而,由于数据作为字节流被复制到日志302(例如一次一位,或者取决于计算架构,一次32位或64位),因此仍然存在破坏写的可能。传输期间的任意时候都可能断电,从而导致传输中途停止。这可能会在加固过程完成之前中断加固过程,从而导致破坏写,并危及文件系统的一致性和/或恢复文件系统的能力。
在一个实施例中,使用校验和来验证日志页面。例如日志页面320包括头部324和一个或多个日志记录,例如326、328、330等。在一个实施例中,校验和被存储在头部324的校验和字段325中。类似地设想了用于存储校验和的其他位置,包括日志页面的主体、与日志页面相邻、或者在另一表中或其对应于对应的日志页面的索引的索引处的其他数据结构中。日志记录326和328存储与元数据表条目有关的撤消/重做信息。日志记录330是事务提交日志记录,其存在指示与该事务有关的所有日志记录已被写入文件系统日志。
在一个实施例中,为日志中的每个页面生成校验和,包括当日志记录跨越多个日志页面时。在一实施例中,循环冗余校验算法,例如CRC32,用于生成校验和。在一个实施例中,校验和基于整个日志页面-即校验和算法的输入是日志页面。附加地或可替代地,校验和可以基于日志页面的一部分,诸如正在使用的页面的一部分,或者页面的主体部分,或者页面的不包括校验和字段325的部分。
在一个实施例中,当将日志记录添加到日志页面时,在计算校验和之前将该日志记录写入日志页面320。这样,任意现有日志记录也将被包括在校验和的计算中。例如当接收到存储日志记录328的请求时,日志页面320可能已经存储了日志记录326。在这种情况下,在计算校验和之前,将日志记录328写入日志页320。以此方式,校验和基于包括日志记录326和328的整个日志页面320来被计算,并被存储在头部324的校验和字段325中。
在一个实施例中,在计算校验和之前,将预定义值写入校验和字段325。例如可以将值“0”或“0xcccccccc”写入校验和字段325,可能覆盖现有的校验和值。这样,可以使用校验和字段中的已知值来计算整个日志页面的校验和。这避免了在日志页面上生成校验和,这时将校验和存储在日志页面中会使校验和无效。在另一个实施例中,校验和是基于日志页面的主体或除了校验和字段325之外的日志页面的每个部分被生成。
在恢复操作期间,在一个实施例中,日志页面320被读取,并且校验被提取和被复制到临时变量中。然后,将预定义值(例如“0”或“0xcccccccc”)复制到校验和字段325中,并且基于修改后的提取的日志页面来生成第二校验和332。在一个实施例中,将第二校验和332与校验和字段325进行比较,并且当校验和匹配时,恢复发生,如以上关于图1所描述的。
但是,当校验和字段325和第二校验和332不匹配时,检测到破坏写。一旦检测到破坏写,则将给定的日志页面视为无效,并且该页面上的任意日志记录都将被忽略(因为数据值得怀疑)。文件系统将使用此日志页面之前的条目中的日志记录进行恢复。
图4是用于通过在非易失性持久存储器中生成文件系统日志来改善计算设备上的文件系统性能的示例方法400的流程图。本领域普通技术人员应该理解,本文公开的方法的操作不一定以任意特定顺序呈现,并且以替代顺序进行某些或所有操作的执行是可能的并且可以预期的。为了便于描述和说明,已按演示顺序介绍了操作。在不脱离所附权利要求的范围的情况下,可以添加、省略、一起执行和/或同时执行操作。
在框401处,系统(例如文件系统100)接收文件操作请求。文件操作请求可以包括例如创建、读、写、附加、复制、移动或删除操作等。文件操作请求可以从用户处接收,或者可以是自动化过程的一部分。
在一个实施例中,与文件系统操作相关联的文件的内容被存储在持久存储器中。在另一个实施例中,与文件系统操作相关联的文件的内容被存储在基于扇区的存储器中,诸如盘驱动器或基于NAND的SSD。在一个实施例中,非易失性持久存储器是包括扇区可寻址的非易失性存储器的异构存储器存储解决方案的一个组件,并且其中与文件系统操作相关联的文件的内容被存储在扇区可寻址的非易失性存储器中。在一实施例中,诸如主文件表104、目录表106、主文件表位图108等的元数据表也被存储在扇区可寻址的非易失性存储装置中。
在一个实施例中,为了处理文件操作请求,文件系统确定要对元数据表进行一个或多个改变,诸如主文件表104、目录表106、主文件表位图108等。例如响应于创建文件操作,文件系统可以确定在主文件表104中创建新条目并且在目录表106中创建新条目。但是,如果目录已经存在于存储设备上,则文件系统可以确定更新现有条目。在另一个示例中,响应于删除文件请求,文件系统可以确定从主文件表104和目录表106中移除对应的条目。
在框403处,文件系统针对对元数据表的每次改变创建文件系统日志记录(“日志记录”),并使用非临时写将其附加到日志页面。文件系统还将表示“事务提交”的日志记录附加到日志页面,其指示与特定文件操作请求关联的所有日志记录均已被记录。这样,日志记录可以被事务地处理-即,要么应用与事务相关联的所有元数据表改变,要么撤消与事务相关联的所有元数据表改变(就像它们不是一开始就执行一样)。这些改变通过每个日志记录中包括的“重做”和“撤消”记录来实现。
例如日志记录326、日志记录328和事务提交记录330可以被附加到文件系统日志的日志页面320。在一个实施例中,使用非临时写来执行附加,其中非临时写包括写入可字节寻址的持久存储器而无需在存储器层次结构中进行高速缓存。可以通过使用对由持久存储器支持的存储器映射的存储器复制操作来执行非临时性写,但是类似地设想了任意其他形式的对持久存储器的复制。
在一个实施例中,日志记录326和328被附加到空的日志页面320。然而,在其他实施例中,日志记录可以被添加到已经包含另一日志记录的日志页面。例如如果日志记录326已经被写入日志页面320,并且作为单独的事务日志记录328的一部分被生成,则日志记录328可以被复制到日志页面320中(例如附加到日志页面320)。附加的日志记录可能会继续被添加到日志页面,仅受日志页面容量的限制。
在一个实施例中,要附加到日志页面的日志记录大于日志页面(或大于日志页面中剩余的可用空间量)。在这些实施例中,日志记录可以跨两个或更多日志页面被写入。
在一个实施例中,使用存储器复制操作将日志记录写入日志页面。在一个实施例中,使用了逐字节传输,诸如流复制,尽管类似地考虑了复制大小不同的数据块,诸如一次32位、一次64位等。
在框405,将预定值写入日志页320的头部324的校验和字段325。该预定值是任意的,只要在整个过程中始终使用相同的值即可。例如预定值可以是“0”或“0xdeadbeef”或任意其他恒定值。预定值仅受校验和字段325的大小限制。例如如果校验和字段325为32位,则由于校验和算法为CRC32,则预定值被限制为32位值。
在框407处,文件系统生成日志页面320的校验和,用于验证非易失性持久存储器中的日志记录326的目的。在一个实施例中,使用CRC32算法,但是类似地考虑任意其他校验和算法或哈希算法。
在框409,使用非临时写将校验和写入校验和字段325。在一实施例中,写校验和包括覆盖预定值。
在框411处,从文件系统日志中提取日志页面320。在一个实施例中,这作为由文件系统故障触发的恢复过程的一部分被执行。文件系统故障可能是由断电、系统崩溃、CPU停止、硬件错误、电池耗尽或可能导致程序执行被停止和/或断电的任意其他原因引起的。在一个实施例中,校验和被复制到临时变量中以供在框417使用。
在框413处,将预定值写入提取的日志页面320的头部324的校验和字段325。这将所提取的日志页面设置为与生成校验和时相同的状态。
在框415处,从所提取的日志页面生成第二校验和。所使用的校验和算法与方框409中使用的算法相同。
在框417处,基于所提取的校验和与第二校验和之间的比较,做出所提取的日志页面是否有效的确定。在一个实施例中,如果校验和与第二校验和匹配(例如“相等”),则确定该页面有效。如果校验和不相等,则破坏写或一些其他形式或损坏已经发生。
在框419处,基于所提取的日志页面的有效性来做出所提取的日志记录是否有效的确定。在一个实施例中,如果从其所提取的日志记录被提取的日志页面被确定为有效,则确定所提取的日志记录是有效的。
在框421处,当确定所提取的日志记录有效时,如以上关于图1所述,执行文件系统恢复操作。在一个实施例中,文件系统恢复操作更新元数据表以确保在提取的日志记录和元数据表之间的一致性,其中一致性支持文件系统出现故障后计算设备的继续操作。当提取的日志记录有效并且被确定为已提交事务的一部分时(即,标识了对应的提交记录),则可以使用日志记录中包括的“重做”信息来应用提取的日志记录中包括但未应用于指定的元数据表的任意改变。
但是,如果确定提取的日志记录是有效的但不是完整事务的一部分(即,尚未找到对应的提交记录),则使用日志记录中包括的“撤消”信息,将撤消应用于元数据表的任意改变。
图5是计算机架构图,其示出了能够执行本文所述的软件组件的计算机500(例如计算机101)的架构。图5所示的架构是用于服务器计算机、移动电话、电子阅读器、智能电话、台式计算机、上网本计算机、平板计算机、可穿戴设备、膝上型计算机、或适用于执行本文介绍的软件组件的另一种类型的计算设备的架构。
在这方面,应当理解,图5所示的计算机500可用于实现能够执行本文所提出的任意软件组件的计算设备。例如但不限于,参考图5描述的计算架构可以用于实现图1所示和上面描述的计算设备101,该计算设备能够执行操作系统590、应用591和文件系统(预写式记录引擎)592和/或上述其他软件组件中的任意一个。
图5所示的计算机500包括中央处理单元502(“CPU”)、系统存储器504、系统存储器504包括随机存取存储器506(“RAM”)和只读存储器(“ROM”)508、以及将存储器504耦合到CPU 502的系统总线510。包含基本例程的基本输入/输出系统(BIOS或固件)被存储在ROM508中,这些基本例程帮助诸如在启动期间在计算机500内的各个元素之间传递信息。计算机500还包括用于存储操作系统590、应用591和文件系统592以及用于实现本文公开的技术的其他组件的大容量存储设备512。大容量存储设备512还可以被配置为存储其他类型的程序和数据。
大容量存储设备512通过连接到总线510的大容量存储控制器(未显示)连接到CPU502。大容量存储设备512及其相关联的计算机可读介质为计算机500提供了非易失性存储。尽管本文包含的计算机可读介质的描述是指大容量存储设备,诸如硬盘、CD-ROM驱动器、DVD-ROM驱动器或USB存储密钥,但本领域技术人员应理解,计算机可读介质可以是计算机500可以访问的任意可用的计算机存储介质或通信介质。
通信介质包括计算机可读指令、数据结构、程序模块或诸如载波或其他传输机制的调制数据信号中的其他数据,并且包括任意传递介质。术语“调制数据信号”是指具有以将信息编码在信号中的方式改变或设置其一个或多个特性的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、射频、红外和其他无线介质的无线介质。以上任意的组合也应包括在计算机可读介质的范围内。
作为示例而非限制,计算机存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任意方法或技术实现的易失性和非易失性、可移除和不可移除介质。例如计算机存储介质包括但不限于RAM、ROM、EPROM、EEPROM、闪存或其他固态存储技术、CD-ROM、数字多功能磁盘(“DVD”)、HD-DVD、BLU-RAY或其他光学存储设备、磁带盒、磁带、磁盘存储设备或其他磁性存储设备、或可用于存储所需信息并可由计算机500访问的任意其他介质。为了权利要求书,短语“计算机存储介质”及其变体本身不包括波或信号本身或通信介质。
根据各种配置,计算机500可以使用通过诸如网络518的网络到远程计算机的逻辑连接,在联网的环境中操作。计算机500可以通过连接到总线510的网络接口单元520来连接到网络518。应当理解,网络接口单元520也可以用于连接到其他类型的网络和远程计算机系统。计算机500还可包括输入/输出控制器516,用于接收和处理来自许多其他设备的输入,包括键盘、鼠标、触摸输入或电子触控笔(图5中未示出)。类似地,输入/输出控制器516可以将输出提供给显示屏、打印机或其他类型的输出设备(在图5中也未示出)。
应当理解,本文所述的软件组件,诸如操作系统590、应用591和文件系统592,在被加载到CPU 502中并被执行后,可以将CPU 502和整个计算机500从将通用计算系统转换为定制以促进本文介绍的功能的专用计算系统。CPU 502可以由任意数量的晶体管或其他分立电路元件构成,它们可以单独或共同地假设任意数量的状态。更具体地,响应于本文公开的软件模块中包含的可执行指令,CPU 502可以作为有限状态机操作。这些计算机可执行指令可以通过指定CPU 502如何在状态之间的转换从而转换构成CPU 502的晶体管或其他分立的硬件元件来转换CPU 502。
对本文提出的软件模块进行编码还可以变换本文提出的计算机可读介质的物理结构。在本说明书的不同实现中,物理结构的特定变换取决于各种因素。此类因素的示例包括但不限于用于实现计算机可读介质的技术,计算机可读介质的特征是主要存储还是辅助存储等。例如如果计算机可读介质被实现为基于半导体的存储器,则可以通过变换半导体存储器的物理状态来将本文公开的软件编码在计算机可读介质上。例如该软件可以变换构成半导体存储器的晶体管、电容器或其他分立电路元件的状态。该软件还可以变换这些组件的物理状态,以便在其上存储数据。
作为另一个示例,可以使用磁性或光学技术来实现本文公开的计算机可读介质。在这样的实施方式中,当软件被编码在其中时,本文提出的软件可以变换磁性或光学介质的物理状态。这些变换可以包括改变给定磁性介质内特定位置的磁性特征。这些变换还可以包括改变给定光学介质内特定位置的物理特征或特性,或改变那些位置的光学特性。在不脱离本说明书的范围和精神的情况下,物理介质的其他变换是可能的,提供前述示例仅是为了促进该讨论。
鉴于以上内容,应当理解,在计算机500中发生了许多类型的物理变换,以便存储和执行本文提出的软件组件。还应意识到,图5中所示的计算机500的架构或类似架构可用于实现其他类型的计算设备,包括手持计算机、嵌入式计算机系统、诸如智能手机和平板电脑的移动设备、以及本领域技术人员已知的其他类型的计算设备。还可以预期,计算机500可能不包括图5所示的所有组件,可以包括在图5中未明确示出的其他组件,或者可以利用与图5所示的架构完全不同的架构。
最后,尽管已经用特定于结构特征和/或方法动作的语言描述了各种配置,但是应该理解,所附表示中定义的主题不必限于所描述的特定特征或动作。相反,将特定特征和动作公开为实现所要求保护的主题的示例形式。
Claims (15)
1.一种用于通过在非易失性持久存储器中生成文件系统日志来改进计算设备上的文件系统性能的方法,其中所述非易失性持久存储器是从存储器总线按字节可寻址的,其中所述文件系统日志包括一个一个或多个日志页面,其中所述一个或多个日志页面中的每个日志页面包括一个或多个日志记录,并且其中每个日志记录描述对元数据表的改变,所述元数据表部分定义了文件系统操作,所述方法包括:
使用非临时写将日志记录附加到日志页面,其中所述非临时写包括写入所述持久存储器而不在存储器层次结构中进行高速缓存;
将预定值写入所述日志页面的头部的校验和字段;
为了验证所述非易失性持久存储器中的所述日志页面的有效性的目的,生成所述日志页面的校验和;
使用非临时写来将所述校验和写入所述校验和字段,其中写所述校验和包括覆盖所述预定值;
在将所述校验和写入所述校验和字段后,响应于文件系统故障,并且在重新启动所述文件系统时,从所述文件系统日志中提取所述日志页面、所述日志记录和所述校验和;
将所述预定值写入所提取的所述日志页面的所述头部的所述校验和字段;
生成所提取的所述日志页面的第二校验和;
基于所提取的所述校验和与所述第二校验和之间的比较来确定所提取的所述日志页面何时有效;
基于所提取的所述日志页面的有效性来确定所提取的所述日志记录何时有效;以及
当所提取的所述日志记录被确定为有效时,执行文件系统恢复操作,其中所述文件系统恢复操作更新所述元数据表以确保所提取的所述日志记录和所述元数据表之间的一致性,其中一致性支持在所述故障后所述计算设备的继续操作。
2.根据权利要求1所述的方法,其中在所述日志记录被附加之前,不同的日志记录被存储在所述日志页面中。
3.根据权利要求1所述的方法,还包括:
使用非临时写将第二日志记录附加到所述日志页面,其中所述第二日志记录描述对第二元数据表的改变,并且其中所述日志页面继续存储所述日志记录;
将所述预定值写入所述日志页面的所述头部的所述校验和字段;
基于所述日志记录、所述第二日志记录和所述校验和字段的所述预定值,生成所述日志页面的第三校验和;
使用非临时写将所述第三校验和写入所述校验和字段,其中写所述第三校验和包括覆盖所述预定值;
在将所述第三校验和写入所述校验和字段后,响应于文件系统故障,并且在重新启动所述文件系统时,从所述文件系统日志中提取所述日志页面、所述日志记录、所述第二日志记录和所述第三校验和;
将所述预定值写入所提取的所述日志页面的所述头部的所述校验和字段;
基于所提取的所述日志页面来生成第四校验和;
基于所提取的所述第三校验和与所述第四校验和之间的比较来确定所提取的所述日志页面何时有效;
基于所提取的所述日志页面的有效性,确定所提取的所述日志记录和所提取的所述第二日志记录何时有效;以及
当所提取的所述日志记录和所提取的所述第二日志记录被确定为有效时,执行文件系统恢复操作,其中所述文件系统恢复操作更新所述元数据表和所述第二元数据表,以确保与所提取的所述日志记录和所提取的所述第二日志记录的一致性,其中一致性支持在所述故障后所述计算设备的继续操作。
4.根据权利要求1所述的方法,其中执行所述文件系统恢复操作包括:
确定所述日志记录是否是已提交事务的一部分;
确定所述日志记录中定义的改变是否尚未被应用于所述元数据表;以及
当所述日志记录是提交事务的一部分并且当所述改变尚未被应用于所述元数据表时,将所述改变前滚到所述元数据表。
5.根据权利要求1所述的方法,其中执行所述文件系统恢复操作包括:
确定所述日志记录是否不是提交事务的一部分;
确定所述日志记录中定义的改变是否已被应用于所述元数据表;以及
当所述日志记录不是提交事务的一部分时,并且当所述改变已被应用于所述元数据表时,将所述改变回滚到所述元数据表。
6.根据权利要求1所述的方法,其中所述元数据表包括主文件表和目录表中的一个或多个。
7.根据权利要求1所述的方法,其中所述日志记录跨越多个日志页面,其中所述多个日志页面中的每个日志页面与校验和相关联。
8.一种用于通过在非易失性持久存储器中生成文件系统日志来改进文件系统性能的计算设备,其中所述非易失性持久存储器是从存储器总线字节可寻址的,其中所述文件系统日志包括一个或多个日志页面,其中所述一个或多个日志页面中的每个日志页面包括一个或多个日志记录,并且其中每个日志记录描述了对元数据表的改变,所述元数据表部分定义了文件系统操作,所述计算设备包括:
一个或多个处理器;
与所述一个或多个处理器通信的存储器,所述存储器具有存储在其上的计算机可读指令,所述计算机可读指令当由所述一个或多个处理器执行时使所述计算设备:
将日志记录附加到日志页面;
将预定值写入所述日志页面的头部的校验和字段;
生成所述日志页面的校验和;
将所述校验和写入所述日志页面的所述头部的所述校验和字段;
从所述文件系统日志中提取所述日志页面、所述日志记录和所述校验和;
将所述预定值写入所提取的所述日志页面的所述头部的所述校验和字段;
生成所提取的所述日志页面的第二校验和;
基于所提取的所述校验和与所述第二校验和之间的比较来确定所提取的所述日志页面何时有效;
基于所提取的所述日志页面的有效性来确定所提取的所述日志记录何时有效;以及
当所提取的所述日志记录被确定为有效时,执行文件系统恢复操作,其中所述文件系统恢复操作更新所述元数据表以确保所提取的所述日志记录和所述元数据表之间的一致性,其中一致性支持在所述故障后所述计算设备的继续操作。
9.根据权利要求8所述的计算设备,其中所述日志页面被存储在所述非易失性持久存储器中,其中所述元数据表被存储在扇区可寻址的非易失性存储装置中,其中与所述文件系统操作相关联的文件包括数据部分,并且其中所述数据部分被存储在所述扇区可寻址的非易失性存储装置中。
10.根据权利要求8所述的计算设备,其中所述文件系统故障包括系统崩溃、系统挂起、断电或硬件错误。
11.根据权利要求8所述的计算设备,其中与所述文件系统操作相关联的文件的内容被存储在所述持久存储器中。
12.根据权利要求8所述的计算设备,其中与所述文件系统操作相关联的所述文件的内容被存储在盘驱动器中。
13.根据权利要求8所述的计算设备,其中确定所述校验和与所述第二校验和不同,以标识所提取的所述日志记录中的破坏写入条件。
14.根据权利要求8所述的计算设备,其中所述非易失性持久存储器是异构存储器存储解决方案的一个组件,所述异构存储器存储解决方案还包括扇区可寻址的非易失性存储装置,并且其中与所述文件系统操作相关联的文件的内容被存储在所述扇区可寻址的非易失性存储装置中。
15.一种用于通过在非易失性持久存储器中生成文件系统日志来改进计算设备上的文件系统性能的方法,其中所述非易失性持久存储器是可从存储器总线按字节可寻址的,其中所述文件系统日志包括一个一个或多个日志页面,其中所述一个或多个日志页面中的每个日志页面包括一个或多个日志记录,并且其中每个日志记录描述对元数据表的改变,所述元数据表部分定义了文件系统操作,所述方法包括:
将日志记录写入日志页面;
生成所述日志页面的非头部部分的校验和;
将所述校验和写入所述日志页面的校验和字段;
在将所述校验和写入所述校验和字段后,并且响应于文件系统故障,从所述文件系统日志中提取所述日志页面、所述日志记录和所述校验和;
生成所提取的所述日志页面的所述非头部部分的第二校验和;
基于所提取的所述校验和与所述第二校验和之间的比较来确定所提取的所述日志页面何时有效;
基于所提取的所述日志页面的有效性来确定所提取的所述日志记录何时有效;以及
当所提取的日志记录被确定为有效时,执行文件系统恢复操作,其中所述文件系统恢复操作更新所述元数据表以确保所提取的所述日志记录和所述元数据表之间的一致性,其中一致性支持所述故障后所述计算设备的继续操作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/844,465 US10936441B2 (en) | 2017-12-15 | 2017-12-15 | Write-ahead style logging in a persistent memory device |
US15/844,465 | 2017-12-15 | ||
PCT/US2018/062391 WO2019118154A1 (en) | 2017-12-15 | 2018-11-23 | Write-ahead style logging in a persistent memory device |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111480149A true CN111480149A (zh) | 2020-07-31 |
CN111480149B CN111480149B (zh) | 2023-09-08 |
Family
ID=64901069
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880080625.XA Active CN111480149B (zh) | 2017-12-15 | 2018-11-23 | 持久存储器设备中的预写式日志记录 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10936441B2 (zh) |
EP (1) | EP3724764B1 (zh) |
CN (1) | CN111480149B (zh) |
WO (1) | WO2019118154A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114936215A (zh) * | 2022-06-07 | 2022-08-23 | 北京人大金仓信息技术股份有限公司 | 一种预写式日志的处理方法、存储介质与设备 |
CN115658624A (zh) * | 2022-11-02 | 2023-01-31 | 中国科学院空间应用工程与技术中心 | 一种应对系统不稳定时间区间的元数据写入方法和系统 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10628051B2 (en) * | 2018-07-13 | 2020-04-21 | Seagate Technology Llc | Reducing a data storage device boot time |
US10860409B2 (en) * | 2018-08-01 | 2020-12-08 | Cisco Technology, Inc. | Tracelog isolation of failed sessions at scale |
KR102119258B1 (ko) * | 2018-11-14 | 2020-06-05 | 주식회사 실크로드소프트 | 데이터베이스 관리 시스템에서의 변경 데이터 캡쳐 구현 기법 |
US11194795B2 (en) * | 2019-04-16 | 2021-12-07 | Snowflake Inc. | Automated maintenance of external tables in database systems |
US11726991B2 (en) * | 2019-04-30 | 2023-08-15 | EMC IP Holding Company LLC | Bulk updating of mapping pointers with metadata transaction log |
US11030060B2 (en) * | 2019-08-22 | 2021-06-08 | International Business Machines Corporation | Data validation during data recovery in a log-structured array storage system |
CN111209132B (zh) * | 2019-12-31 | 2023-07-28 | 航天信息股份有限公司 | 嵌入式系统、掉电保护方法、电子设备及存储介质 |
CN111007992B (zh) * | 2020-03-04 | 2020-08-04 | 广东电网有限责任公司佛山供电局 | 一种磁盘数据存储表示方法、系统、存储介质 |
US11341056B2 (en) * | 2020-04-20 | 2022-05-24 | Netapp Inc. | Low-overhead atomic writes for persistent memory |
CN111639059A (zh) * | 2020-05-28 | 2020-09-08 | 深圳壹账通智能科技有限公司 | 日志信息的存储及定位方法、电子设备及存储介质 |
CN112035410B (zh) * | 2020-08-18 | 2023-08-18 | 腾讯科技(深圳)有限公司 | 日志存储方法、装置、节点设备及存储介质 |
CN112883014A (zh) * | 2021-03-25 | 2021-06-01 | 上海众源网络有限公司 | 数据回溯方法、装置、计算机设备和存储介质 |
CN115292266B (zh) * | 2022-05-30 | 2024-05-14 | 中国电子科技集团公司第五十二研究所 | 一种基于存储器的高可靠日志存储方法 |
CN115599589B (zh) * | 2022-11-29 | 2023-03-14 | 苏州浪潮智能科技有限公司 | 一种数据恢复方法及相关装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101903866A (zh) * | 2007-11-21 | 2010-12-01 | 提琴存储器公司 | 非易失存储介质中的数据存储的方法和系统 |
WO2016122710A1 (en) * | 2015-01-30 | 2016-08-04 | Hewlett Packard Enterprise Development Lp | Byte addressable non-volatile random access memory for storing log record |
CN107315746A (zh) * | 2016-04-26 | 2017-11-03 | 清华大学 | 基于非易失性主存的高效事务文件系统构建方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6901481B2 (en) | 2000-04-14 | 2005-05-31 | Stratus Technologies Bermuda Ltd. | Method and apparatus for storing transactional information in persistent memory |
JP3592640B2 (ja) * | 2001-01-09 | 2004-11-24 | 株式会社東芝 | ディスク制御システムおよびディスク制御方法 |
US7644239B2 (en) | 2004-05-03 | 2010-01-05 | Microsoft Corporation | Non-volatile memory cache performance improvement |
US7143120B2 (en) * | 2004-05-03 | 2006-11-28 | Microsoft Corporation | Systems and methods for automated maintenance and repair of database and file systems |
US20060039698A1 (en) | 2004-08-18 | 2006-02-23 | Pautler James A | System and method of communications with traffic signals |
US10949415B2 (en) | 2011-03-31 | 2021-03-16 | International Business Machines Corporation | Logging system using persistent memory |
US9542279B2 (en) | 2011-11-07 | 2017-01-10 | Sap Se | Shadow paging based log segment directory |
US20130198585A1 (en) | 2012-02-01 | 2013-08-01 | Xyratex Technology Limited | Method of, and apparatus for, improved data integrity |
US9003228B2 (en) | 2012-12-07 | 2015-04-07 | International Business Machines Corporation | Consistency of data in persistent memory |
US9280578B1 (en) | 2013-06-30 | 2016-03-08 | Emc Corporation | Combining transactions in a metadata transaction log |
US10489158B2 (en) | 2014-09-26 | 2019-11-26 | Intel Corporation | Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores |
WO2016095151A1 (en) | 2014-12-18 | 2016-06-23 | Hua Zhong University Of Science Technology | Storing log records in a non-volatile memory |
US10552403B2 (en) * | 2015-05-21 | 2020-02-04 | Vmware, Inc. | Using checksums to reduce the write latency of logging |
US10599630B2 (en) | 2015-05-29 | 2020-03-24 | Oracle International Corporation | Elimination of log file synchronization delay at transaction commit time |
US10817196B2 (en) * | 2017-07-07 | 2020-10-27 | Sap Se | Page list based crash recovery |
-
2017
- 2017-12-15 US US15/844,465 patent/US10936441B2/en active Active
-
2018
- 2018-11-23 WO PCT/US2018/062391 patent/WO2019118154A1/en unknown
- 2018-11-23 EP EP18826852.8A patent/EP3724764B1/en active Active
- 2018-11-23 CN CN201880080625.XA patent/CN111480149B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101903866A (zh) * | 2007-11-21 | 2010-12-01 | 提琴存储器公司 | 非易失存储介质中的数据存储的方法和系统 |
WO2016122710A1 (en) * | 2015-01-30 | 2016-08-04 | Hewlett Packard Enterprise Development Lp | Byte addressable non-volatile random access memory for storing log record |
CN107315746A (zh) * | 2016-04-26 | 2017-11-03 | 清华大学 | 基于非易失性主存的高效事务文件系统构建方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114936215A (zh) * | 2022-06-07 | 2022-08-23 | 北京人大金仓信息技术股份有限公司 | 一种预写式日志的处理方法、存储介质与设备 |
CN114936215B (zh) * | 2022-06-07 | 2024-06-11 | 北京人大金仓信息技术股份有限公司 | 一种预写式日志的处理方法、存储介质与设备 |
CN115658624A (zh) * | 2022-11-02 | 2023-01-31 | 中国科学院空间应用工程与技术中心 | 一种应对系统不稳定时间区间的元数据写入方法和系统 |
CN115658624B (zh) * | 2022-11-02 | 2023-11-21 | 中国科学院空间应用工程与技术中心 | 一种应对系统不稳定时间区间的元数据写入方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
EP3724764B1 (en) | 2021-08-04 |
EP3724764A1 (en) | 2020-10-21 |
US20190188091A1 (en) | 2019-06-20 |
US10936441B2 (en) | 2021-03-02 |
CN111480149B (zh) | 2023-09-08 |
WO2019118154A1 (en) | 2019-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111480149B (zh) | 持久存储器设备中的预写式日志记录 | |
US10235066B1 (en) | Journal destage relay for online system checkpoint creation | |
US11907200B2 (en) | Persistent memory management | |
US11762817B2 (en) | Time sequence data management | |
US10152381B1 (en) | Using storage defragmentation function to facilitate system checkpoint | |
US10241873B2 (en) | Headstart restore of first volume to a second volume | |
US10176190B2 (en) | Data integrity and loss resistance in high performance and high capacity storage deduplication | |
US7472129B2 (en) | Lossless recovery for computer systems with map assisted state transfer | |
US9280578B1 (en) | Combining transactions in a metadata transaction log | |
WO2017190604A1 (zh) | 数据库系统中事务恢复的方法与数据库管理系统 | |
JP4583087B2 (ja) | トランザクションの整合性を保つ書き込み時コピーのデータベース | |
US9146928B1 (en) | Techniques for storing metadata of a filesystem in persistent memory | |
WO2017041654A1 (zh) | 用于分布式存储系统的写入数据、获取数据的方法和设备 | |
US20130325810A1 (en) | Creation and expiration of backup objects in block-level incremental-forever backup systems | |
US11429498B2 (en) | System and methods of efficiently resyncing failed components without bitmap in an erasure-coded distributed object with log-structured disk layout | |
US10613923B2 (en) | Recovering log-structured filesystems from physical replicas | |
Son et al. | SSD-assisted backup and recovery for database systems | |
US8595271B1 (en) | Systems and methods for performing file system checks | |
Ni et al. | Leveraging ssd's flexible address mapping to accelerate data copy operations | |
Son et al. | Design and implementation of SSD-assisted backup and recovery for database systems | |
Huang et al. | VM aware journaling: improving journaling file system performance in virtualization environments | |
US11928497B2 (en) | Implementing erasure coding with persistent memory | |
Kuppan Thirumalai | SSD Firmware Design Considerations |
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 |