CN105404673A - 基于nvram的高效文件系统构建方法 - Google Patents
基于nvram的高效文件系统构建方法 Download PDFInfo
- Publication number
- CN105404673A CN105404673A CN201510808309.8A CN201510808309A CN105404673A CN 105404673 A CN105404673 A CN 105404673A CN 201510808309 A CN201510808309 A CN 201510808309A CN 105404673 A CN105404673 A CN 105404673A
- Authority
- CN
- China
- Prior art keywords
- file
- nvram
- file system
- dram
- write operation
- 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
- 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/17—Details of further file system functions
- G06F16/178—Techniques for file synchronisation in file 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/1847—File system types specifically adapted to static storage, e.g. adapted to flash memory or SSD
-
- 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/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- 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/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
- G06F16/1767—Concurrency control, e.g. optimistic or pessimistic approaches
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出一种基于NVRAM的高效文件系统构建方法,包括以下步骤:S1:判断文件系统的文件操作的类型,其中,文件操作的类型包括:文件读操作、非持久文件写操作及持久文件写操作;S2:如果文件操作的类型为非持久文件写操作,则文件系统将非持久文件写操作的内容写入动态随机存取存储器DRAM,并更新相应的DRAM缓存块索引,并在预设时间点将非持久文件写操作的内容异步刷回至非易失性随机访问存储器NVRAM中,否则文件系统直接在NVRAM/DRAM和用户缓存之间拷贝相关数据。本发明的方法既能避免额外的拷贝和传统软件层的开销,又能充分利用DRAM的写性能高特性来提高NVRAM文件系统的写性能,从而提升系统的整体性能。
Description
技术领域
本发明涉及计算机系统技术领域,特别涉及一种基于NVRAM的高效文件系统构建方法。
背景技术
新型NVRAM(Non-VolatileRandomAccessMemory,非易失性随机访问存储器)具有以下特性:(1).其具有非易失特性;(2).相比传统DRAM(DynamicRandomAccessMemory,动态随机存取存储器),其存储密度更大;(3).在读写性能方面,比传统闪存和硬盘要高出若干数量级,读写性能接近DRAM;(4).其相比闪存具有更高的写寿命。这些优点使得系统设计者可以在NVRAM之上构建高效的持久性存储系统。
因为NVRAM具有高效的读写性能,近些年来的研究者们发现,传统基于磁盘和闪存的文件系统不再适用于NVRAM,因为:(1).操作系统中传统块设备层的软件开销远远大于实际读写NVRAM设备的开销;(2).由于NVRAM存储设备和DRAM性能接近,内存缓存不但不能提高性能,反而产生了额外的数据拷贝,导致文件系统性能下降。因此,已有的基于NVRAM而优化的新兴文件系统(例如PMFS和EXT4-DAX)直接去除了内存缓存,取而代之的是直接在用户缓存和存储设备之间拷贝文件数据。
然而,已有NVRAM存储器件的一个主要缺点是:读写性能不对称,且写操作性能要比读操作性能慢一个数量级。因此,直接在用户缓存和存储设备之间拷贝文件数据将降低文件系统的写性能,从而也将导致次优的文件系统性能。
发明内容
本发明旨在至少在一定程度上解决上述相关技术中的技术问题之一。
为此,本发明的目的在于提出一种基于NVRAM的高效文件系统构建方法,该方法既能避免额外的拷贝和传统软件层的开销,又能充分利用DRAM的写性能高特性来提高NVRAM文件系统的写性能,从而提升系统的整体性能。
为了实现上述目的,本发明的实施例提出了一种基于NVRAM的高效文件系统构建方法,包括以下步骤:S1:判断所述文件系统的文件操作的类型,其中,所述文件操作的类型包括:文件读操作、非持久文件写操作及持久文件写操作;S2:如果所述文件操作的类型为非持久文件写操作,则所述文件系统将所述非持久文件写操作的内容写入动态随机存取存储器DRAM,并更新相应的DRAM缓存块索引,并在预设时间点将所述非持久文件写操作的内容异步刷回至非易失性随机访问存储器NVRAM中,否则所述文件系统直接在所述NVRAM/DRAM和用户缓存之间拷贝相关数据。
根据本发明实施例的基于NVRAM的高效文件系统构建方法,首先判断文件系统的文件操作的类型,如果文件操作的类型为非持久文件写操作,则文件系统将非持久文件写操作的内容写入动态随机存取存储器DRAM,并更新相应的DRAM缓存块索引,并在预设时间点将非持久文件写操作的内容异步刷回至非易失性随机访问存储器NVRAM中,以避免高额的NVRAM写延迟开销,否则文件系统直接在NVRAM/DRAM和用户缓存之间拷贝相关数据,以避免双重拷贝开销。因此,该方法既能避免额外的拷贝和传统软件层的开销,又能充分利用DRAM的写性能高特性来提高NVRAM文件系统的写性能,从而提升系统的整体性能。
另外,根据本发明上述实施例的基于NVRAM的高效文件系统构建方法还可以具有如下附加的技术特征:
在一些示例中,其中,所述文件系统根据持久写检查机制判断所述文件操作是否为持久写操作。
在一些示例中,所述步骤S2进一步包括:如果所述文件操作为持久写操作,则直接将所述持久写操作的内容写入所述NVRAM中。
在一些示例中,所述S2进一步包括:如果所述文件操作为读操作,则所述文件系统通过DRAM块索引判断所述读操作所关联的文件块是否在所述DRAM中;如果所述文件块不在所述DRAM中,则所述文件系统进一步通过文件系统块索引机制查找所述文件块在所述NVRAM上对应的地址,并直接将地址对应的数据读入用户缓存。
在一些示例中,还包括:如果所述文件块在所述DRAM中,则所述文件系统分别获取所述文件块存储在所述DRAM块和NVRAM块中cacheline的最新数据,并将所述cacheline的最新数据拷贝到所述用户缓存中。
在一些示例中,所述持久文件写操作包括同步写操作及异步写操作,其中,所述异步写操作在文件同步操作之前。
在一些示例中,所述持久写检查机制包括:如果所述文件系统的超级块包含同步选项,则判定所有发送至所述文件系统的写操作均为持久写操作;和/或如果和写操作相关联的索引节点结构包含了O_SYNC标识,则判定所述写操作为持久写操作;和/或如果一个文件处于持久状态,则判定后续所有关于该文件的异步写操作均为持久写操作,反之,如果一个文件处于非持久状态,则判定后续所有关于该文件的异步写操作均为非持久写操作,其中,每个文件被加入一种新的状态,称为持久状态。
在一些示例中,其中,所述文件系统使用细粒度机制来管理所述DRAM的写缓存。
在一些示例中,通过CachelineBitmap模块分别获取所述文件块存储在所述DRAM块和NVRAM块中cacheline的最新数据,其中,所述Cacheline为CPU和内存的交互粒度。
在一些示例中,所述Cacheline为64Byte。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明一个实施例的基于NVRAM的高效文件系统构建方法的流程图;
图2是本发明一个实施例的文件系统与现有的文件系统的架构对比图;
图3是本发明一个实施例的文件系统的架构图;以及
图4是根据本发明一个实施例的内存缓存的块索引结构图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
以下结合附图描述根据本发明实施例的基于NVRAM的高效文件系统构建方法。
图1是根据本发明一个实施例的基于NVRAM的高效文件系统构建方法的流程图。如图1所示,该方法包括以下步骤:
步骤S1:判断文件系统的文件操作的类型,其中,文件操作的类型包括:文件读操作、非持久文件写操作及持久文件写操作。
步骤S2:如果文件操作的类型为非持久文件写操作,则文件系统将非持久文件写操作的内容写入动态随机存取存储器DRAM,并更新相应的DRAM缓存块索引,并在预设时间点将非持久文件写操作的内容异步刷回至非易失性随机访问存储器NVRAM中,以避免高额的NVRAM写延迟开销,否则文件系统直接在NVRAM/DRAM和用户缓存之间拷贝相关数据,以避免双重拷贝开销。
其中,在本发明一个的实施例中,对于步骤S1中的写操作,文件系统例如通过持久写检查机制判断文件操作的类型是否为持久写操作。则步骤S2进一步包括:如果该文件操作为持久写操作,则直接将该持久写操作的内容写入NVRAM中,以避免双重拷贝。进一步地,如步骤S2中所述,如果该文件系统属于非持久写操作,则将该非持久写操作写入DRAM缓存,并更新相应的DRAM缓存块索引,并在之后的某个合适时间点(预设时间点)将该非持久写操作的内容异步刷入NVRAM,以避免高的NVRAM写延迟。
其中,例如,持久文件写操作包括同步写操作以及异步写操作,其中,异步写操作在文件同步操作之前。具体地说,例如文件系统在挂载时使用了同步选项,那么所有对该文件系统的写操作都为同步写操作。其次,如果一个文件被打开时使用了O_SYNC标识,则在该文件关闭前所有对该文件的写操作都为同步写操作。另一方面,异步写操作之后紧跟了文件同步操作。如果在下一次文件同步操作到来之前,足够的异步写操作能够合并使得缓存这些异步写操作要比将这些异步写操作直接写入NVRAM性能效率高,则将这些异步写操作定义为非持久写操作。否则,将这些异步写操作定义为持久写操作。
具体地,上述的持久写检查机制例如包括:
1)如果文件系统的超级块包含同步选项,则判定所有发送至文件系统的写操作均为持久写操作;和/或
2)如果和写操作相关联的索引节点结构包含了O_SYNC标识,则判定写操作为持久写操作;和/或
3)如果一个文件处于持久状态,则判定后续所有关于该文件的异步写操作均为持久写操作,反之,如果一个文件处于非持久状态,则判定后续所有关于该文件的异步写操作均为非持久写操作,其中,文件的状态通过相应的缓存受益模型判断,每个文件被加入一种新的状态,称为持久状态。
在本发明的一个实施例中,步骤S2进一步包括:如果文件操作为读操作,则文件系统通过DRAM块索引判断读操作所关联的文件块是否在DRAM中,如果文件块不在DRAM中,则文件系统进一步通过文件系统块索引机制查找文件块在NVRAM上对应的地址,并直接将该地址对应的数据读入用户缓存。进一步地,如果该文件块在DRAM中,则文件系统分别获取文件块存储在DRAM块和NVRAM块中cacheline的最新数据,并将cacheline的最新数据拷贝到用户缓存中。更为具体地,文件系统例如使用CachelineBitmap模块分别获取文件块存储在DRAM块和NVRAM块中cacheline的最新数据,其中,Cacheline为CPU和内存的交互粒度,Cacheline例如为64Byte。换言之,即文件系统使用CachelineBitmap模块来判断该文件块中哪些cacheline位于DRAM块中,哪些cacheline位于NVRAM块中,然后分别从DRAM和NVRAM中拷贝相应的最新数据到用户缓存。为了减少拷贝的命令总数,例如,一个memcpy内存拷贝命令将读取相应块中的一段连续cacheline至用户缓存。
其中,在本发明的一个实施例中,文件系统例如使用细粒度机制来管理DRAM写缓存,以减少后台写回数据量。更为具体地,每个DRAM缓存块进一步使用CachelineBitmap模块来区分哪个cacheline的最新数据位于DRAM块中,哪个最新数据位于NVRAM块中。在缓存刷回和读入数据过程中,文件系统只将对应的Cacheline刷回NVRAM或者读入DRAM。
为了便于理解,以下结合附图,以具体的示例对本发明上述实施例的基于NVRAM的高效文件系统构建方法进行进一步详细地描述。
如图2所示,展示了本发明的实施例和已有文件系统的架构对比示意图。其中,在图2中,本发明中的文件系统的命名例如为BetterFS。具体地,图2(a)所示的是传统基于闪存和硬盘的块级别文件系统,该文件系统将NVRAM模拟成一个类似于RAMDISK的块设备,所有的文件读写操作都经过内存缓存和块设备层,因此引入了双重拷贝和软件开销。图2(b)所示的是针对NVRAM而设计的新型文件系统,该类文件系统去除了内存缓存,将NVRAM直接接入内存总线,且所有读写操作直接在用户缓存和NVRAM设备之间拷贝,减少了双重拷贝和软件开销,但是引入了较高的NVRAM写延迟。图2(c)所示的是本发明实施例所构建的文件系统,本发明主要的设计目标有以下两点:(1).尽可能的隐藏NVRAM较高的写延迟,使其不影响文件系统的整体性能;(2).尽可能的避免双重拷贝开销和软件延迟。
如图3所示,本发明实施例所构建的文件系统主要包括两部分:持久写检查机制和NVRAM感知的写缓存管理机制。其中,持久写检查机制即为了识别应用程序发送给文件系统的写操作是否是持久文件写或者是非持久文件写;NVRAM感知的写缓存管理机制主要用于管理文件系统的DRAM写缓存,该写缓存临时存放了应用程序发送给文件系统的非持久写。此外,不同于传统的块级别文件系统,本发明实施例中所述的文件系统直接通过内存读写接口管理NVRAM以避免高的块设备层访问延迟。
类似大部分传统的本地文件系统,例如ext3或者ext4,本发明实施例所述的文件系统提供一种异步的I/O抽象,即文件系统不保证异步写之间的顺序性以及可持久性。程序员如果需要持久写操作,必须使用同步写操作或者文件同步操作,例如fsync,以保证应用所需的持久性。
具体地,本发明的实施例将文件写操作进一步划分为非持久文件写和持久文件写。持久文件写定义为以下两种情况:(1).同步写。例如文件系统在挂载时使用了同步选项,那么所有对该文件系统的写操作都为同步写。其次,如果一个文件被打开时使用了O_SYNC标识,则在该文件关闭前所有对该文件的写操作都为同步写操作;(2).其后跟了文件同步操作的异步写操作。这种情况下,如果在下一次文件同步操作到来之前,足够的异步写能够合并使得缓存这些异步写要比将这些异步写直接写入NVRAM性能效率高,则将它们定义为非持久写。否则,它们将被定义为持久写操作。
其中,上述的持久写检查机制即为了识别应用程序发给文件系统的写操作是否是持久文件写或者是非持久文件写。根据以上对持久文件写的定义,情况(1)很容易辨识是否满足,因为可以根据文件系统超级块中的内容检查文件系统挂载时的状态,查看其是否选择了同步选项。其次,文件打开状态也在每个文件的索引节点中,因此,可以通过读取和当前写操作相关联的文件的索引节点结构,了解其是否在打开时使用了O_SYNC标识,进而判断该写操作是否是持久写操作。相比之下,情况(2)更难辨识,因为在应用程序的每个写操作到来时,不能提前知道在该写操作之后是否还有文件同步操作到来,除此之外,即使知道有文件同步操作会到来,也很难知道在该文件同步操作到来之前,假设之前的关于该文件的写操作都先缓存在DRAM中,会有多少写操作可以在缓存中合并。
为了辨识上述情况(2),本发明的实施例设计了缓存受益模型来判断是否有足够的写操作可以在文件同步操作到来之前合并。缓存受益模型基于文件粒度,因为文件同步操作也是基于该粒度。在该模型中,每个文件被加入一种新的状态,即持久态。如果一个文件处于持久状态,那么后续所有关于该文件的异步写操作都被认为是持久写操作;相反,如果一个文件处于非持久态,那么后续所有关于该文件的异步写操作都被认为是非持久写操作。缓存受益模型即为了判断以及决定文件系统中的每个文件处于哪种状态。
其中,在上述的在缓存受益模型中,假设DRAM的写延迟是Ldram,NVRAM的写延迟是Lnvram,Ncw代表一个文件当前文件同步操作和上一个文件同步操作之间,用户所写入的cacheline总数,Ncf代表文件当前同步操作过程中需要从DRAM刷入NVRAM的cacheline总数。如果同时满足下面两个条件,则可以断定缓存该文件相关的异步写操作比直接将该文件的异步写写入NVRAM性能效率更高。
Ncw*Ldram+Ncf*Lnvram<Ncw*Lnvram条件(1),
Ncw/Ncf>Avg_Evictblock_Coalesce_Ratio条件(2),
其中,上述条件(1)表示如果把该文件相关的异步写操作先写入DRAM缓存,其总执行时间会比把它们直接写入NVRAM要少。在条件(2)中,Avg_Evictblock_Coalesce_Ratio表示的是最近1000个被DRAM缓存替换策略替换的缓存块的写合并比率的平均数。这个条件意味着缓存该文件的数据不会对DRAM缓存空间产生缓存污染,因为文件同步操作会使得该文件的缓存块比正常通过DRAM缓存策略而替换的缓存块更早的被淘汰出缓存。
当文件系统被挂载时,所有的文件都被初始化为非持久状态直到该文件的第一个文件同步操作到来。当任何一个文件同步操作到来时,动态地决定该文件操作所属的文件的状态应该是持久态或是非持久态。具体决定过程如下:通过计算判断该文件是否满足上述条件(1)和条件(2)。如果同时满足该两个条件,则该文件的状态被设置为非持久态,即意味着后续中关于该文件的异步写都先写入DRAM缓存;否则,该文件的状态被设置为持久态,即意味着后续中关于该文件的异步写都直接写入NVRAM而不经过DRAM缓存。除此之外,如果一个文件在一段时间之内都没有遇到文件同步操作,则该文件也被设置为非持久态。但这并不意味着文件系统会每隔固定时间扫描所有文件来判断它是否在一段时间之内都没有遇到文件同步操作。相反,文件系统仅在访问每个文件的时候来决定该文件的状态。为了得到Ncf的值,文件系统维护了一个幽灵缓存来计算每次文件同步操作过程中,需要从DRAM刷入NVRAM的cacheline总数。幽灵缓存假设所有的异步写操作都先写入DRAM而不管文件的状态,但是幽灵缓存并不实际存放文件数据,而只保存一些必要的缓存索引的元数据信息,以用来计算Ncf的值。因此,所需的内存空间大小小于整个DRAM缓存空间大小的1%。
进一步地,当一个写操作被定义为持久写操作,如果它属于情况(1),文件系统需要首先检查它相关的最新块是否位于DRAM缓存中,如果该块位于DRAM缓存中,则仍然将该次写操作写入DRAM缓存块,然后在返回给用户之前,将该DRAM块内容从DRAM缓存刷入NVRAM中。如此,下一次关于该块的持久写可以直接写入NVRAM。然而,这种情况不会经常发生,除非用户交替发送对同一个文件块的同步写和异步写操作。如果该持久写属于情况(2),则文件系统直接将该写操作写入NVRAM,因为情况(2)中,文件状态只可能在一个文件同步操作之后被设置为持久态,而在一个文件同步操作之后,该文件的所有最新内容一定在NVRAM中。
进一步地,上述的NVRAM感知的写缓存管理机制主要为了管理文件系统的DRAM缓存,当一个写操作到来时,如果被判断为非持久写,则需要先将数据写入DRAM缓存。本文件系统的DRAM缓存管理(包括缓存空间分配和缓存替换)都是基于块粒度。在默认情况下,DRAM缓存块的大小被设置为4KB,这和文件系统管理NVRAM的粒度大小一样。此外,DRAM缓存使用LRW(LeastRecentlyWritten)策略来替换DRAM缓存块。文件系统维护一个LRWList来跟踪DRAM缓存块写引用的时间局部性。也就是说,所有的DRAM缓存块都根据它们的最近写时间来排序。当写入一个DRAM缓存块时,该块将被移动到MRW(MostRecentlyWritten)的位置。需要注意的是,本文件系统并不限制DRAM缓存替换策略只使用LRW,其它有效的替换策略,例如LFU(LeastFrequentlyUsed)或者ARC(AdaptiveReplacementCache)等也可以被用于本文件系统中的缓存替换策略。本系统使用LRW主要因为其算法简单,而且大部分文件系统workload都表现出强局部性。因此LRW在保证缓存写命中率的同时,由缓存替换算法所带来的软件开销可以忽略不计,不会影响NVRAM的整体系统性能。
在写入DRAM缓存之前,文件系统使用如图4所示的缓存块索引结构来判断该写入块是否已经存在于DRAM中。如果该块不存在于DRAM缓存中,则系统需要分配一个新的DRAM缓存块。如图4所示,本系统使用基于文件的B树来管理缓存块索引,B树是索引大量稀疏数据的最优数据结构之一。在B树索引中,索引的key是文件的逻辑偏移,并且该逻辑偏移和DRAM缓存块的块大小对齐。索引的value(即图4中所指的索引节点)包含DRAM缓存的物理块号以及该DRAM缓存块对应的NVRAM块的物理块号。NVRAM块号被用于后台写回线程将该DRAM块写回NVRAM时使用。B树的根节点存放在每个文件的文件inode结构中。此外,所有的索引节点都链接到一个全局的LRWList中,这个LRWList的头部存放在文件系统的超级块中。
为了保证数据的持久性以及回收相应的DRAM缓存块给后来的非持久写操作,文件系统在挂载时创建多个独立的内核线程来保证脏的DRAM缓存块内容周期地被刷入NVRAM中。通常情况下,这些内核线程是保持睡眠状态,但是以下两种情况将会唤醒这些内核写回线程:
1)第一种情况发生在当DRAM缓存空间只剩下Lowf空闲的块,其中Lowf是一个预定义的值。本发明的实施例将该值设置为所有DRAM缓存块总数的5%,但本发明的实施例不限制将Lowf设置为其它更有效的值。
2)第二种情况是:这些后台线程每隔5秒会自动唤醒,然后把缓存中更新的数据周期性地刷回NVRAM。
当一个后台写回线程被唤醒之后,它会首先从缓存的LRWList的LRW位置开始选择一些victim块,然后通过内存接口(例如memcpy()函数)将这些victim块刷回至相应的NVRAM块地址,使用内存接口使得系统执行I/O操作的过程中避免了经过通用块设备层,极大地减少了软件延迟。一旦相应的DRAM缓存块完成了数据写回过程,该块将被回收以用于之后的非持久写操作。写回线程按照这种方式一次回收多个DRAM缓存块直到缓存中空闲状态的块数量超过另外一个值(标记为Highf),该值被系统默认设置为所有DRAM缓存块总数的20%,而且该值可以根据不同用户和系统需要进行相应的调整。此后,写回线程会继续扫描LRWList中剩余的脏DRAM缓存块,并将那些在30秒之前才进行最后一次更新的数据块刷回NVRAM,然后回收这些DRAM缓存块。除此之外,文件系统会在卸载时,把所有的DRAM缓存块内容都刷回相应的NVRAM块中。
传统的pagecache缓存管理采用以页为粒度(即4KB),一方面,执行一次非页对齐的写操作且该写操作对应的块不在DRAM缓存中的时候,操作系统需要先把该页对应的文件系统块读入DRAM缓存中,才能把该写操作的数据写入DRAM缓存中。这种读在写之前的机制严重影响系统性能,因为读操作阻塞了前端写操作。另一方面,即使一个DRAM缓存块只更新了若干个字节的数据,后台写回线程也需要刷入一整个DRAM缓存块至存储设备中。这种机制不但影响NVRAM的寿命,而且降低了系统性能。因为在DRAM缓存耗尽所有空闲块的时候,后台写回线程也会阻塞前端的用户线程直到它们清理出新的空闲DRAM块,这意味着更快的写回将能导致更好的系统性能。
因此,为了解决上述问题,本发明的实施例例如使用CachelineLevelFetch/Writeback(CLFW)机制来跟踪写入DRAM缓存中的块。在CLFW机制中,数据以更小的粒度从NVRAM中读取或者写回NVRAM,该粒度被设置为CPU读取内存的粒度,即cacheline粒度(也即64B)。为此,本发明的实施例例如使用cachelinebitmap来跟踪DRAM缓存块中的每个cacheline,每个DRAM缓存块都有各自的cachelinebitmap,如果该bitmap中某一位为1,则对应该位的cacheline的最新数据位于DRAM该缓存块中;否则,如果该位为0,则表示对应该位的cacheline的最新数据位于该DRAM缓存块对应的NVRAM块中。在后台写回过程中,写回线程需要检查每个写回块的cachelinebitmap,只有当对应的位为1的那些cacheline才需要从DRAM缓存块中刷回NVRAM中。对于非块对齐的写操作且该写操作对应的块不在DRAM缓存中的时候,系统只需把对应的非对齐的那些cacheline的最新数据读入DRAM缓存中,而不需要读入整个块内容。例如,假设文件系统的DRAM块大小为4KB,cacheline大小为64B,如果用户发送的写操作的写区域为某块的0~112B,传统系统中,需要把整个4KB块内容(0~4096B)都从存储设备读入DRAM缓存,而本发明实施例所构建的系统只需要把第二个cacheline内容(即64~128B)从存储设备读入DRAM。总之,该CLFW机制在系统遇到很多小且非对齐写操作时,极大地减少了无用的数据取入和写回,因此提升了系统性能。
综上,根据本发明实施例的基于NVRAM的高效文件系统构建方法,首先判断文件系统的文件操作的类型,如果文件操作的类型为非持久文件写操作,则文件系统将非持久文件写操作的内容写入动态随机存取存储器DRAM,并更新相应的DRAM缓存块索引,并在预设时间点将非持久文件写操作的内容异步刷回至非易失性随机访问存储器NVRAM中,以避免高额的NVRAM写延迟开销,否则文件系统直接在NVRAM/DRAM和用户缓存之间拷贝相关数据,以避免双重拷贝开销。因此,该方法既能避免额外的拷贝和传统软件层的开销,又能充分利用DRAM的写性能高特性来提高NVRAM文件系统的写性能,从而提升系统的整体性能。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”“内”、“外”、“顺时针”、“逆时针”、“轴向”、“径向”、“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系,除非另有明确的限定。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (10)
1.一种基于NVRAM的高效文件系统构建方法,其特征在于,包括以下步骤:
S1:判断所述文件系统的文件操作的类型,其中,所述文件操作的类型包括:文件读操作、非持久文件写操作及持久文件写操作;
S2:如果所述文件操作的类型为非持久文件写操作,则所述文件系统将所述非持久文件写操作的内容写入动态随机存取存储器DRAM,并更新相应的DRAM缓存块索引,并在预设时间点将所述非持久文件写操作的内容异步刷回至非易失性随机访问存储器NVRAM中,否则所述文件系统直接在所述NVRAM/DRAM和用户缓存之间拷贝相关数据。
2.根据权利要求1所述的基于NVRAM的高效文件系统构建方法,其特征在于,其中,所述文件系统根据持久写检查机制判断所述文件操作是否为持久写操作。
3.根据权利要求2所述的基于NVRAM的高效文件系统构建方法,其特征在于,所述步骤S2进一步包括:
如果所述文件操作为持久写操作,则直接将所述持久写操作的内容写入所述NVRAM中。
4.根据权利要求1所述的基于NVRAM的高效文件系统构建方法,其特征在于,所述S2进一步包括:
如果所述文件操作为读操作,则所述文件系统通过DRAM块索引判断所述读操作所关联的文件块是否在所述DRAM中;
如果所述文件块不在所述DRAM中,则所述文件系统进一步通过文件系统块索引机制查找所述文件块在所述NVRAM上对应的地址,并直接将地址对应的数据读入用户缓存。
5.根据权利要求4所述的基于NVRAM的高效文件系统构建方法,其特征在于,还包括:
如果所述文件块在所述DRAM中,则所述文件系统分别获取所述文件块存储在所述DRAM块和NVRAM块中cacheline的最新数据,并将所述cacheline的最新数据拷贝到所述用户缓存中。
6.根据权利要求2所述的基于NVRAM的高效文件系统构建方法,其特征在于,所述持久文件写操作包括同步写操作及异步写操作,其中,所述异步写操作在文件同步操作之前。
7.根据权利要求6所述的基于NVRAM的高效文件系统构建方法,其特征在于,所述持久写检查机制包括:
如果所述文件系统的超级块包含同步选项,则判定所有发送至所述文件系统的写操作均为持久写操作;和/或
如果和写操作相关联的索引节点结构包含了O_SYNC标识,则判定所述写操作为持久写操作;和/或
如果一个文件处于持久状态,则判定后续所有关于该文件的异步写操作均为持久写操作,反之,如果一个文件处于非持久状态,则判定后续所有关于该文件的异步写操作均为非持久写操作,其中,每个文件被加入一种新的状态,称为持久状态。
8.根据权利要求1所述的基于NVRAM的高效文件系统构建方法,其特征在于,其中,所述文件系统使用细粒度机制来管理所述DRAM的写缓存。
9.根据权利要求5所述的基于NVRAM的高效文件系统构建方法,其特征在于,通过CachelineBitmap模块分别获取所述文件块存储在所述DRAM块和NVRAM块中cacheline的最新数据,其中,所述Cacheline为CPU和内存的交互粒度。
10.根据权利要求9所述的基于NVRAM的高效文件系统构建方法,其特征在于,所述Cacheline为64Byte。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510808309.8A CN105404673B (zh) | 2015-11-19 | 2015-11-19 | 基于nvram的高效文件系统构建方法 |
US14/980,462 US9959053B2 (en) | 2015-11-19 | 2015-12-28 | Method for constructing NVRAM-based efficient file system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510808309.8A CN105404673B (zh) | 2015-11-19 | 2015-11-19 | 基于nvram的高效文件系统构建方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105404673A true CN105404673A (zh) | 2016-03-16 |
CN105404673B CN105404673B (zh) | 2018-11-09 |
Family
ID=55470162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510808309.8A Active CN105404673B (zh) | 2015-11-19 | 2015-11-19 | 基于nvram的高效文件系统构建方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9959053B2 (zh) |
CN (1) | CN105404673B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107463447A (zh) * | 2017-08-21 | 2017-12-12 | 中国人民解放军国防科技大学 | 一种基于远程直接非易失内存访问的b+树管理方法 |
CN108897642A (zh) * | 2018-06-27 | 2018-11-27 | 清华大学 | 持久性事务内存系统中日志机制的优化方法及装置 |
CN110347338A (zh) * | 2019-06-18 | 2019-10-18 | 重庆大学 | 混合内存数据交换处理方法、系统及可读存储介质 |
CN111045604A (zh) * | 2019-12-11 | 2020-04-21 | 苏州浪潮智能科技有限公司 | 一种基于nvram的小文件读写加速方法和设备 |
CN111352590A (zh) * | 2020-02-26 | 2020-06-30 | 上海霄云信息科技有限公司 | 文件存储方法及设备 |
CN106599096B (zh) * | 2016-11-24 | 2020-09-15 | 上海交通大学 | 基于非易失性内存的高性能文件系统设计方法 |
CN113076292A (zh) * | 2021-03-30 | 2021-07-06 | 山东英信计算机技术有限公司 | 一种文件缓存方法、系统、存储介质及设备 |
CN113703667A (zh) * | 2021-07-14 | 2021-11-26 | 深圳市有为信息技术发展有限公司 | 实时存储数据的文件系统处理方法、装置、车载终端及商用车 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016076903A1 (en) * | 2014-11-10 | 2016-05-19 | Hewlett Packard Enterprise Development Lp | Online file system check |
US10664766B2 (en) | 2016-01-27 | 2020-05-26 | Bonsai AI, Inc. | Graphical user interface to an artificial intelligence engine utilized to generate one or more trained artificial intelligence models |
US10496319B2 (en) * | 2017-02-28 | 2019-12-03 | Sap Se | Lifecycle management for data in non-volatile memory including blocking creation of a database savepoint and associating non-volatile memory block identifiers with database column fragments |
EP3502902B1 (en) * | 2017-12-21 | 2021-01-20 | Vestel Elektronik Sanayi ve Ticaret A.S. | Method and apparatus for managing a non-volatile random-access memory using a monitor |
US11544197B2 (en) * | 2020-09-18 | 2023-01-03 | Alibaba Group Holding Limited | Random-access performance for persistent memory |
CN112363957A (zh) * | 2020-11-20 | 2021-02-12 | 中国科学院微电子研究所 | 混合存储级内存及其磨损均衡方法 |
US11614880B2 (en) | 2020-12-31 | 2023-03-28 | Pure Storage, Inc. | Storage system with selectable write paths |
US11847324B2 (en) | 2020-12-31 | 2023-12-19 | Pure Storage, Inc. | Optimizing resiliency groups for data regions of a storage system |
US20230359552A1 (en) * | 2021-03-18 | 2023-11-09 | Micron Technology, Inc. | Memory write performance techniques |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103946811A (zh) * | 2011-09-30 | 2014-07-23 | 英特尔公司 | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 |
CN103975287A (zh) * | 2011-12-13 | 2014-08-06 | 英特尔公司 | 使用非易失性随机存取存储器的服务器中的增强系统睡眠状态支持 |
CN104461399A (zh) * | 2014-12-19 | 2015-03-25 | 上海新储集成电路有限公司 | 非易失性存储器的写缓存器系统及其数据读写方法 |
CN104778126A (zh) * | 2015-04-20 | 2015-07-15 | 清华大学 | 非易失性主存中事务数据存储优化方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008131058A2 (en) * | 2007-04-17 | 2008-10-30 | Rambus Inc. | Hybrid volatile and non-volatile memory device |
US9213717B1 (en) * | 2011-09-28 | 2015-12-15 | Emc Corporation | Managing concurrent I/OS in file systems |
EP2972891B1 (en) * | 2013-03-14 | 2020-05-06 | Hewlett-Packard Enterprise Development LP | Multiversioned nonvolatile memory hierarchy for persistent memory |
US10073626B2 (en) * | 2013-03-15 | 2018-09-11 | Virident Systems, Llc | Managing the write performance of an asymmetric memory system |
US9767015B1 (en) * | 2013-11-01 | 2017-09-19 | Amazon Technologies, Inc. | Enhanced operating system integrity using non-volatile system memory |
-
2015
- 2015-11-19 CN CN201510808309.8A patent/CN105404673B/zh active Active
- 2015-12-28 US US14/980,462 patent/US9959053B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103946811A (zh) * | 2011-09-30 | 2014-07-23 | 英特尔公司 | 用于实现具有不同操作模式的多级存储器分级结构的设备和方法 |
CN103975287A (zh) * | 2011-12-13 | 2014-08-06 | 英特尔公司 | 使用非易失性随机存取存储器的服务器中的增强系统睡眠状态支持 |
CN104461399A (zh) * | 2014-12-19 | 2015-03-25 | 上海新储集成电路有限公司 | 非易失性存储器的写缓存器系统及其数据读写方法 |
CN104778126A (zh) * | 2015-04-20 | 2015-07-15 | 清华大学 | 非易失性主存中事务数据存储优化方法及系统 |
Non-Patent Citations (1)
Title |
---|
姜国松: "一种基于混合存储的高效、可扩展细粒度缓存管理研究", 《小型微型计算机系统》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106599096B (zh) * | 2016-11-24 | 2020-09-15 | 上海交通大学 | 基于非易失性内存的高性能文件系统设计方法 |
CN107463447B (zh) * | 2017-08-21 | 2019-10-11 | 中国人民解放军国防科技大学 | 一种基于远程直接非易失内存访问的b+树管理方法 |
CN107463447A (zh) * | 2017-08-21 | 2017-12-12 | 中国人民解放军国防科技大学 | 一种基于远程直接非易失内存访问的b+树管理方法 |
CN108897642A (zh) * | 2018-06-27 | 2018-11-27 | 清华大学 | 持久性事务内存系统中日志机制的优化方法及装置 |
CN108897642B (zh) * | 2018-06-27 | 2020-11-27 | 清华大学 | 持久性事务内存系统中日志机制的优化方法及装置 |
CN110347338A (zh) * | 2019-06-18 | 2019-10-18 | 重庆大学 | 混合内存数据交换处理方法、系统及可读存储介质 |
CN110347338B (zh) * | 2019-06-18 | 2021-04-02 | 重庆大学 | 混合内存数据交换处理方法、系统及可读存储介质 |
CN111045604A (zh) * | 2019-12-11 | 2020-04-21 | 苏州浪潮智能科技有限公司 | 一种基于nvram的小文件读写加速方法和设备 |
CN111045604B (zh) * | 2019-12-11 | 2022-11-01 | 苏州浪潮智能科技有限公司 | 一种基于nvram的小文件读写加速方法和设备 |
CN111352590A (zh) * | 2020-02-26 | 2020-06-30 | 上海霄云信息科技有限公司 | 文件存储方法及设备 |
CN111352590B (zh) * | 2020-02-26 | 2023-06-09 | 上海霄云信息科技有限公司 | 文件存储方法及设备 |
CN113076292A (zh) * | 2021-03-30 | 2021-07-06 | 山东英信计算机技术有限公司 | 一种文件缓存方法、系统、存储介质及设备 |
CN113076292B (zh) * | 2021-03-30 | 2023-03-14 | 山东英信计算机技术有限公司 | 一种文件缓存方法、系统、存储介质及设备 |
CN113703667A (zh) * | 2021-07-14 | 2021-11-26 | 深圳市有为信息技术发展有限公司 | 实时存储数据的文件系统处理方法、装置、车载终端及商用车 |
Also Published As
Publication number | Publication date |
---|---|
US9959053B2 (en) | 2018-05-01 |
US20170147208A1 (en) | 2017-05-25 |
CN105404673B (zh) | 2018-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105404673A (zh) | 基于nvram的高效文件系统构建方法 | |
US20220309049A1 (en) | Key-Value Store System | |
US11023453B2 (en) | Hash index | |
US7363540B2 (en) | Transaction-safe FAT file system improvements | |
US10846279B2 (en) | Transactional key-value store | |
US9235531B2 (en) | Multi-level buffer pool extensions | |
US8719501B2 (en) | Apparatus, system, and method for caching data on a solid-state storage device | |
CA2818472C (en) | Optimized startup verification of file system integrity | |
Levandoski et al. | LLAMA: A cache/storage subsystem for modern hardware | |
US20130232118A1 (en) | Shared log-structured multi-version transactional datastore with metadata to enable melding trees | |
CN106951376B (zh) | 面向闪存的细粒度非易失缓存系统以及缓存管理方法 | |
JP2007012056A (ja) | データ保全の先送りされた認証を有するファイルシステム | |
CN103080910A (zh) | 存储系统 | |
CN103473150A (zh) | 一种用于数据去重系统中的碎片重写方法 | |
US11100083B2 (en) | Read only bufferpool | |
CN115427941A (zh) | 数据管理系统和控制的方法 | |
Cao et al. | State of the art: Where we are with the ext3 filesystem | |
TW202409840A (zh) | 非暫態電腦可讀取媒體、儲存裝置、及儲存方法 | |
US20150169668A1 (en) | Single Pass File System Repair With Copy On Write | |
Doekemeijer et al. | Key-Value Stores on Flash Storage Devices: A Survey | |
US11860840B2 (en) | Update of deduplication fingerprint index in a cache memory | |
Xu et al. | Update migration: An efficient B+ tree for flash storage | |
Wei et al. | Extending SSD lifetime with persistent in-memory metadata management | |
KR101295210B1 (ko) | 데이터베이스 관리 방법 및 장치 | |
Weise | On the Efficient Design of LSM Stores |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |