CN109983452B - 用于连续可用的网络文件系统(nfs)状态数据的系统和方法 - Google Patents

用于连续可用的网络文件系统(nfs)状态数据的系统和方法 Download PDF

Info

Publication number
CN109983452B
CN109983452B CN201780071778.3A CN201780071778A CN109983452B CN 109983452 B CN109983452 B CN 109983452B CN 201780071778 A CN201780071778 A CN 201780071778A CN 109983452 B CN109983452 B CN 109983452B
Authority
CN
China
Prior art keywords
new state
state
metadata
data object
nfs server
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.)
Active
Application number
CN201780071778.3A
Other languages
English (en)
Other versions
CN109983452A (zh
Inventor
P·施瓦姆
W·E·贝克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
Oracle International Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Oracle International Corp filed Critical Oracle International Corp
Publication of CN109983452A publication Critical patent/CN109983452A/zh
Application granted granted Critical
Publication of CN109983452B publication Critical patent/CN109983452B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/183Provision of network file services by network file servers, e.g. by using NFS, CIFS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

根据本发明的一些实施例,提供了用于捕获和存储与网络文件系统(NFS)的各种状态对应的状态信息以用于在系统故障期间的恢复的系统和方法。在各个方面,所公开的系统和方法可以自动地收集对NFS做出的状态改变并将其同步地写入到非易失性存储装置。在NFS系统发生故障或崩溃(例如,NFS服务器的故障)的情况下,可以从非易失性存储装置自动导入与NFS系统对应的状态信息,从而使得能够立即且透明地恢复NFS服务。

Description

用于连续可用的网络文件系统(NFS)状态数据的系统和方法
技术领域
本公开一般而言涉及存储系统,并且更具体而言涉及用于连续可用的网络文件系统(NFS)状态数据的系统和方法。
背景技术
网络文件系统(NFS)协议的先前实现是无状态的,因为它们不将状态与客户端-服务器事务相关联。一些协议受益于无状态,因为如果没有客户端-服务器事务依赖于另一个客户端-服务器事务,则可以简化应用开发。但是,NFS协议的先前实现可能由于无状态而遭受性能问题。例如,NFS协议的先前实现可能遇到可能降低恢复速度的锁管理问题。
与先前的实现不同,当前网络文件系统(NFS)协议是有状态的,这意味着操作的效果取决于先前操作的效果并且不是独立的。响应于诸如NFS服务器故障之类的系统故障,常规的NFS协议强制客户端在平稳的恢复时段中将所有先前的状态信息和/或相关数据重新发送到服务器。虽然在恢复服务中是有效的,但这样做可能会在NFS服务器启动时间中带来不必要的延迟。这些延迟可能对“高可用性”NFS存储设备的性能有害。
发明内容
提供了用于连续可用的NFS状态数据的方法(包括计算机实现的方法)、设备(包括存储设备和/或网络设备)以及计算机程序产品。
根据本发明的一些实施例,提供了一种方法。该方法包括由NFS服务器接收将与NFS服务器能够访问的数据对象对应的状态从当前状态改变为新状态的指令。该方法还包括由NFS服务器在易失性存储器中存储新状态的指示。该方法还包括由NFS服务器从易失性存储器检索新状态的指示。该指示与数据对象的标识符相关联地存储。该方法还包括由NFS服务器在非易失性存储装置中的位置处写入表示新状态的元数据。元数据与数据对象的相同或不同标识符相关联地写入。该方法还包括由NFS服务器检测涉及NFS服务器的故障。该方法还包括由NFS服务器从非易失性存储装置中的位置检索表示新状态的元数据。该方法还包括由NFS服务器根据新状态恢复服务。
根据本发明的一些实施例,提供了一种设备。该设备包括一个或多个处理器。该设备还包括包含指令的非瞬态计算机可读介质,该指令当由一个或多个处理器执行时使得一个或多个处理器执行包括上述方法的步骤的操作。
根据本发明的一些实施例,提供了一种计算机程序产品。该计算机程序产品有形地实施在设备的非瞬态机器可读存储介质中。该计算机程序产品包括当由一个或多个处理器执行时使得一个或多个处理器执行包括上述方法的步骤的操作的指令。
本发明内容不旨在识别所要求保护的主题的关键或必要特征,也不旨在单独使用以确定所要求保护的主题的范围。应该通过参考本专利的整个说明书的适当部分、任何附图或所有附图、以及每项权利要求来理解本主题。
通过参考以下说明书、权利要求和附图,前述以及其它特征和实施例将变得更加显而易见。
附图说明
下面参考以下附图来详细描述本发明的说明性实施例:
图1是图示根据一些实施例的数据存储系统的框图。
图2是图示根据一些实施例的存储设备的文件系统的层的框图。
图3是图示根据一些实施例的存储或安装在文件系统中的数据的层次结构的框图。
图4是图示根据一些实施例的网络中的主机设备的框图。
图5是图示根据一些实施例的网络文件系统(NFS)主机-客户端系统的框图。
图6是图示根据一些实施例的NFS服务器的框图。
图7是图示根据一些实施例的用于连续可用的NFS状态数据的方法的流程图。
具体实施方式
以下提供本公开的某些方面和实施例。这些方面和实施例中的一些可以被独立地应用,并且它们中的一些可以被组合应用,这对于本领域技术人员来说是显而易见的。在以下描述中,出于解释的目的,阐述了具体细节以便提供对本发明实施例的透彻理解。然而,将显而易见的是,可以在没有这些具体细节的情况下实践各种实施例。附图和描述不旨在是限制性的。
随后的描述仅提供示例性实施例,并且不旨在限制本公开的范围、适用性或配置。相反,随后对示例性实施例的描述将为本领域技术人员提供用于实现示例性实施例的使能描述。应该理解的是,在不脱离如所附权利要求中阐述的本发明的精神和范围的情况下,可以对元件的布置和功能进行各种改变。
在以下描述中给出了具体细节以提供对实施例的透彻理解。然而,本领域普通技术人员将理解的是,可以在没有这些具体细节的情况下实践这些实施例。例如,电路、系统、网络、处理和其它部件可以被示为框图形式的部件,以避免以不必要的细节来模糊实施例。在其它情况下,可以在没有不必要的细节的情况下示出众所周知的电路、过程、算法、结构和技术,以避免模糊实施例。
另外,应该注意的是,各个实施例可以被描述为处理,该处理被描绘为流程图(flowchart)、流图(flow diagram)、数据流图、结构图或框图。虽然流程图可以将操作描述为顺序处理,但是许多操作可以并行执行或并发执行。此外,操作的次序可以被重新布置。当处理的操作完成时,该处理终止,但是可以具有不被包括在图中的附加步骤。处理可以与方法、函数、过程、子例程,子程序等对应。当处理与函数对应时,该处理的终止可以与函数返回到调用函数或主函数对应。
术语“计算机可读介质”包括但不限于:便携式或非便携式存储设备、光学存储设备以及能够存储、包含或携带(一条或多条)指令和/或数据的各种其它介质。计算机可读介质可以包括非瞬态介质,其中可以存储数据并且不包括载波和/或无线地或通过有线连接传播的瞬态电子信号。非瞬态介质的示例可以包括但不限于:磁盘或磁带、诸如压缩盘(CD)或数字通用盘(DVD)的光学存储介质、闪存、存储器或存储器设备。计算机可读介质可以具有存储在其上的代码和/或机器可执行指令,代码和/或机器可执行指令可以表示过程、函数、子程序、程序、例程、子例程、模块、软件包、类、或者指令、数据结构或程序语句的任何组合。代码段可以通过传递和/或接收信息、数据、自变量、参数或存储器内容耦合到另一个代码段或硬件电路。信息、自变量、参数、数据等可以经由任何合适的手段(包括存储器共享、消息传递、令牌传递、网络传送等)被传递、转发或传送。
另外,实施例可以由硬件、软件、固件、中间件、微代码、硬件描述语言或其任何组合来实现。当在软件、固件、中间件或微代码中实现时,执行必要任务的程序代码或代码段(例如,计算机程序产品)可以存储在计算机可读介质或机器可读介质中。(一个或多个)处理器可以执行必要的任务。
数据存储系统
数据存储系统可以包括用于保留数据并且在一些情况下处理数据的任何单独的或组合的存储设备和/或部件。没有数据存储系统,计算设备将被限制为执行某些操作并且将必须立即输出结果。数据存储系统的使用可以允许计算设备执行更广泛的操作、存储和引用所执行的操作的结果(短期或长期),以及存储和执行用于各种目的的专用应用。如本文所使用的,“存储设备”可以是用于将数据保留在数据存储系统中的任何部件或部件的组合。
图1是图示根据一些实施例的数据存储系统100的框图。数据存储系统100可以全部或部分地被包括在一个或多个计算设备中,计算设备诸如个人计算机(例如,客户端)或服务器(例如,主机)。数据存储系统100可以包括主存储装置105、辅助存储装置135以及第三级(tertiary)&离线存储装置140。虽然被示出和描述为包括这三种不同类型的存储装置,但是可以预期数据存储系统100可以单独地或组合地实现或多或少的不同类型的存储装置。另外,虽然被示出和描述为包括这些不同类型的存储装置中的每一种中的一个,但是可以预期可以包括不同类型的存储装置中的零个或多于一个。例如,在一些实施例中,可以在辅助存储装置135中包括多于一个的存储设备。
主存储装置105可以包括处理器110(或多于一个的处理器110)和主存储器130。处理器110可以作为或可以包括例如中央处理单元(CPU)。处理器110可以检索和操纵存储在数据存储系统100中的数据。因此,通常,存储在紧邻处理器110的数据存储系统100中的数据可以被最快地检索和处理,而存储在离处理器110更远的数据存储系统100中的数据可以被较慢地处理。然而,经常地,一些配置可能使得仅有少量数据可用于紧邻处理器110存储(并且在一些实施例中,仅临时存储),而较大的存储装置选项通常可能位于离处理器110更远(并且可以用于永久地存储数据)。
处理器110可以包括其自己的存储器(未示出)。处理器110的存储器可以包括一个或多个处理器寄存器和一个或多个处理器高速缓存。处理器寄存器可以保持小的离散量的数据(例如,8、32或64比特)。处理器寄存器可以采用多种形式中的任何形式。例如,处理器寄存器可以包括一个或多个数据寄存器。处理器110可以将数据从数据存储系统100中的较大存储器(例如,主存储器130)加载到数据寄存器中,以对数据执行操作或操纵。然后数据可以被存储回更大的存储装置(例如,主存储器130)。在另一个示例中,处理器寄存器可以包括一个或多个地址寄存器。地址寄存器可以保持可以由执行的指令请求的数据的地址。在又一个示例中,处理器寄存器可以包括一个或多个通用寄存器。通用寄存器可以是可以存储数据和/或地址的组合寄存器。可以替代地或附加地包括在处理器寄存器中的其它类型的寄存器包括浮点寄存器、状态寄存器、常数寄存器、向量寄存器、专用寄存器、特定于机器的寄存器、内部寄存器等。处理器寄存器由于其位于处理器110内部而可能是数据存储系统100中可用的最快类型的存储器,但是可能仅限于少量数据。
处理器110还可以包括一个或多个处理器高速缓存。处理器高速缓存可以包括一个或多个数据高速缓存。数据高速缓存可以存储经常使用的数据。处理器高速缓存可以替代地或附加地包括一个或多个指令高速缓存。指令高速缓存可以存储经常使用的可执行指令。处理器高速缓存可以替代地或附加地包括转换后备缓冲器(translation lookasidebuffer)。转换后备缓冲器可以用于加速可执行指令和数据的虚拟到物理地址转换。虽然处理器高速缓存也位于处理器110内部,但它们可能比处理器寄存器慢。但是,对于少量存储主动或常用的数据或指令,处理器高速缓存可能优于主存储器130,因为处理器高速缓存可以比主存储器130更快地被寻址。
处理器110可以通过地址总线115和数据总线120直接或间接耦合到主存储器130。当从主存储器130请求某些数据时,处理器110可以通过地址总线115将存储器地址发送到主存储器130。存储器地址可以指示所请求的数据的位置。然后,处理器110可以通过数据总线120从主存储器130读取数据。处理器110可以替代地或附加地通过数据总线120将数据写入到主存储器130。
主存储器130可以包括例如随机存取存储器(RAM),诸如动态RAM(DRAM)、静态RAM(SRAM)、同步DRAM(SDRAM)或任何其它类型的易失性存储器。如本文所使用的,“易失性”存储装置可以指在未被供电时不保留其内容并且因此在启动时未被初始化的存储设备的特性(例如,临时存储装置)。换句话说,易失性存储装置可能需要恒定的电源以保留存储的数据。术语“易失性存储装置”和“易失性存储器”在本文中可互换使用。虽然主存储器130可以是易失性的,但是由于其紧邻处理器110,因此对存储在其中的数据的访问通常比存储在辅助存储装置135或第三级&离线存储装置140中的数据更快。在一些实施例中,主存储装置105也可以包括非易失性存储装置,诸如只读存储器(ROM)。
处理器110可以使用输入/输出通道125来访问辅助存储装置135。辅助存储装置135可以包括例如硬盘驱动器、固态驱动器、闪存或任何其它类型的非易失性存储装置。如本文所使用的,“非易失性”存储装置可以指在断电时保留其内容并且数据可以临时或永久地存储在其中的存储设备的特性。辅助存储装置135可以具有存储在其上的可以提供存储在辅助存储装置135中的文件和目录的层次结构的一个或多个文件系统,如本文关于图3进一步描述的。在一些实施例中,辅助存储装置135也可以包括易失性存储装置,诸如RAM盘。
在一些实施例中,主存储装置105与辅助存储装置135并置在例如单个计算设备上。但是,可以预期在一些实施例中主存储装置105可以位于远离辅助存储装置135,例如,位于两个或更多个不同的计算设备上。例如,辅助存储装置135可以位于主机处,而主存储装置105可以位于客户端处。客户端可以使用客户端处的主存储装置105的处理器110来发出命令以检索和访问存储在主机处的辅助存储装置135上的数据。
第三级&离线存储装置140可以包括第三级存储装置,诸如用于存储不经常访问的大量数据的可移除大容量存储介质,但是可以使用机器人技术在没有人为干预的情况下访问第三级&离线存储装置140。第三级&离线存储装置140可以替代地或附加地包括离线存储装置,诸如在没有人为干预的情况下不能被访问的可移除存储介质,诸如CD-ROM、CD-RW、DVD、软盘、通用串行总线(USB)闪存驱动器等。离线存储装置可以被记录并且物理地与数据存储系统100断开连接。虽然被示出为与辅助存储装置135通信,但是可以预期第三级&离线存储装置140可以替代地或附加地与主存储装置105直接通信。
文件系统
数据存储系统的存储设备可以实现一个或多个文件系统以组织存储在其上的数据。如本文所使用的,“文件系统”可以指文件或目录的结构或组织,并且“文件”可以指一组数据。每个文件可以与文件名相关联,该文件名允许唯一地识别和定位文件。取决于具体要求和期望的应用,可以使用多种不同的文件系统。图2和图3图示了可以在存储设备上实现的示例性文件系统。
图2是图示根据一些实施例的存储设备210的文件系统215的层的框图。文件系统215可以具有三层:逻辑文件系统层220、虚拟文件系统层225和物理文件系统层230。虽然被示出并描述为具有这三层,但可以预期可以使用更少或更多的层。例如,在一些实施例中,逻辑文件系统层220、虚拟文件系统层225和物理文件系统层230的功能可以被组合到单个层中。在一些实施例中,可以省略虚拟文件系统层225。
逻辑文件系统层220可以与客户端应用205交互以处理对数据的请求。逻辑文件系统层220可以提供用于文件访问和操作(例如,打开、关闭、读取、写入等)的应用编程接口(API)。逻辑文件系统层220可以接收所请求的操作,并且可以将其传递到虚拟文件系统层225以传递到物理文件系统层230。
逻辑文件系统层220可以提供可以由多个文件系统实现定义的多个物理文件系统的一致视图。可以通过由虚拟文件系统层225实现的物理文件系统层230的抽象来提供这种一致性。抽象可以指定给定实现应该包括以便执行通过逻辑文件系统层220接收的文件系统请求的操作集。因此,由虚拟文件系统层225执行的抽象可以向逻辑文件系统层220提供统一的接口。
换句话说,虚拟文件系统层225可以提供对多个不同物理文件系统的支持。虚拟文件系统层225可以允许客户端应用205以统一的方式访问不同类型的文件系统。例如,虚拟文件系统层225可以允许客户端应用205访问本地存储设备和网络存储设备两者上的文件系统、用于不同操作系统(例如,Windows、Mac OS、Unix等)的文件系统、不同类型的文件系统(例如,Unix文件系统(UFS)、网络文件系统(NFS)等)等。
物理文件系统层230可以处理对文件的所请求的操作(例如,读取、写入等)。物理文件系统层230可以物理地将文件放置在存储设备210上的特定位置中。物理文件系统层230可以与存储设备210的驱动器交互以物理地操作存储设备210。
图3是图示根据一些实施例的存储或安装在文件系统315中的数据的层次结构的框图。在一些实施例中,数据可以根据图3中所示的层次结构物理地存储在文件系统315中,诸如在Windows操作系统(使用文件系统,诸如,例如,FAT、NTFS、exFAT、Live文件系统(LiveFile System)、ReFS文件系统等)中。在一些实施例中,数据可以代替地物理地存储在单个根目录下。可以通过向操作系统通知某些文件应该出现在层次结构中的哪个位置来“安装”文件系统315。这些实施例可以在Unix或类Unix操作系统中实现。
文件系统315可以包括一个或多个目录(例如,目录320、330、350)、一个或多个子目录(例如,子目录335)、以及一个或多个文件(例如,文件325A-C、340A-B、360)。目录(在本文也可以被称为“文件夹”)可以将文件分组到单独的集合中。例如,目录320可以包括文件325A-C。目录也可以包括子目录。例如,目录330可以包括子目录335,并且子目录335可以包括文件340A-B。也可以在没有任何文件的情况下创建目录(例如,目录350)。文件也可以在没有相关联的目录的情况下位于文件系统315中(例如,文件360)。
文件系统315内的文件(例如,文件325A-C、340A-B、360)可以具有相关联的元数据。元数据可以与文件(未示出)分开存储。元数据可以包括例如文件中的数据量、文件时间戳(例如,文件最后被修改的时间、文件被创建时的时间、文件上次备份的时间和/或文件上次被访问的时间)、用户ID、访问许可、文件属性(例如,只读、读/写等)等。
网络设备
数据存储系统可以被实现为由客户端设备通过网络能够访问的网络设备。图4是图示根据一些实施例的网络中的主机设备405的框图。主机设备405可以是主机存储设备、主机计算设备(例如,主机服务器)和/或主机数据存储系统。主机设备405可以包括处理器410和存储装置415。处理器410可以类似于图1的处理器110。存储装置415可以包括图1的主存储装置105、辅助存储装置135和/或第三级&离线存储装置140。存储装置415可以包括文件系统420,文件系统420可以类似于图2的文件系统215和/或图3的文件系统315。如本文关于图1所讨论的,可以预期在一些实施例中,主机设备405的处理器410不是必需的,并且客户端设备425、435、445的相应处理器可以用于处理来自主机设备405的对数据的请求。
主机设备405可以通过网络与客户端设备425、435、445通信。主机设备405可以通过任何标准数据连接(包括但不限于互联网连接)与客户端设备425、435、445通信。这可以包括无线信道(例如,Wi-Fi连接)、有线连接(例如,DSL、线缆调制解调器等)或两者的组合。客户端设备425、435、445可以利用主机设备405来存储数据、定义规则、设置许可等。主机设备405还可以与一个或多个用户设备(未示出)通信。用户设备可以利用主机设备405来请求和/或使用数据。此外,虽然被示出并描述为与三个客户端设备425、435、445通信,但是可以预期主机设备405可以在该实施例中与任何数量的客户端设备通信。
主机设备405可以出于任何目的存储可以由客户端设备425、435、445请求以及发送到客户端设备425、435、445的数据。在这些实施例中,可以从主机设备405请求的数据可以被称为“共享”,即,可以由一个设备提供给其它设备的资源。例如,客户端设备425、435、445可以请求应用或服务。在另一个示例中,主机设备405可以执行将一个或多个文件、文件系统和/或数据库到客户端设备425、435、445中的一个或多个的迁移。
网络文件系统(NFS)
网络文件系统(NFS)允许主机设备通过网络与客户端设备共享文件和目录。这允许客户端设备以与客户端设备将访问本地文件和目录相同的方式访问远程文件和目录。NFS结构可以提供许多优点。例如,客户端设备使用较少的存储空间,因为数据可以存储在单个中央主机设备上并且仍然能够由客户端设备访问。因此,否则将在每个客户端设备上被复制的数据可以存储在单个位置中并由网络上的多个客户端设备访问。
图5是图示根据一些实施例的NFS主机-客户端系统500的框图。系统500可以包括通过网络510与NFS服务器515(即,主机)通信的客户端设备505。NFS服务器515可以访问包括文件系统555的存储设备550。虽然被示出和描述为单独的部件,但是可以预期在一些实施例中,存储设备550可以被包括在NFS服务器515中。
实际上,客户端设备505可以通过网络510发出访问NFS服务器515上的数据对象或对其执行操作的请求。可以将请求封装为由NFS协议定义的标准化消息格式。如本文所使用的,“数据对象”可以指数据、文件、应用、子目录、目录、文件系统、它们的组合等中的任何一种。一旦接收到请求,NFS服务器515就可以允许客户端设备505从存储设备550的文件系统555访问数据对象。例如,NFS服务器515可以将数据对象从文件系统555发送到发出请求的客户端设备505。在另一个示例中,NFS服务器515可以允许客户端设备505将文件系统555的远程目录安装在客户端设备505处的本地目录上。
NFS服务器515还可以允许客户端设备505对数据对象执行一个或多个操作。例如,客户端设备505可以打开数据对象、读取数据对象、写入数据对象、关闭数据对象、创建数据对象、锁定数据对象、删除数据对象、委托(delegate)数据对象、其组合等。NFS服务器515可以以状态的形式跟踪这些操作中的一些或全部。NFS服务器515可以跟踪与一个或多个数据对象相关联的这些状态中的一个或多个。在一些实施例中,客户端设备505可以附加地跟踪这些状态。
在一些实施例中,NFS服务器515可以首先确定客户端设备505是否具有访问存储设备550的文件系统555中的数据对象或对其执行特定操作的适当许可。如本文所使用的,“许可”定义可以应用于一个或多个用户的访问控制选项。例如,NFS服务器515可以检查与数据对象相关联的元数据,以确保发出请求的用户(例如,与客户端设备505相关联的用户ID)与数据对象的“读取”操作相关联。如果发出请求的用户不与该操作相关联,则NFS服务器515可以拒绝客户端设备505对数据对象的访问。
连续可用的NFS状态数据
网络文件系统(NFS)协议(例如,NFSv3)的先前实现是无状态的,因为它们不将状态与客户端-服务器事务相关联。一些协议受益于无状态,因为如果没有客户端-服务器事务依赖于另一个客户端-服务器事务,则可以简化应用开发。但是,NFS协议的先前实现可能由于无状态而遭受性能问题。例如,NFS协议的先前实现可能遇到可能降低恢复速度的锁管理问题。
与先前的实现不同,当前网络文件系统(NFS)协议是有状态的,这意味着操作的效果取决于先前操作的效果并且不是独立的。传统上,与非易失性存储器相比,数据对象的状态信息存储在易失性存储器中以便快速访问和更新。但是,如以上所讨论的,当存储系统断电时,易失性存储器被擦除。因此,在NFS服务器崩溃或故障的情况下,常规的NFS协议经常依赖于客户端在平稳的恢复时段中将所有先前的状态信息和/或相关数据重新发送到服务器。虽然在恢复服务中是有效的,但这样做可能在NFS服务器启动时间中带来不必要的延迟。这些延迟可能对“高可用性”NFS存储设备的性能有害。
此外,即使没有崩溃或故障,一个存储设备上的数据对象的状态信息也可能难以从易失性存储器复制到另一个存储设备上。例如,可能期望用目的地存储设备对源存储设备进行镜像以无缝地替换源存储设备或在给定时间点备份数据。在这种情况下,通常只迁移数据对象本身。可能还期望迁移数据对象的状态,以便真正在给定时间对源存储设备进行镜像。但是,在迁移期间,存储在易失性存储器中的数据(例如,状态信息)通常将不会被迁移到目的地存储设备。
因此,根据本发明的一些实施例,提供了用于捕获和存储与NFS的各种状态对应的状态信息的系统和方法。在各个方面,所公开的系统和方法可以自动地收集对NFS做出的状态改变并将其同步地写入到非易失性存储装置。在NFS系统发生故障或崩溃(例如,NFS服务器的故障)的情况下,可以从非易失性存储装置自动导入与NFS系统对应的状态信息,从而使得NFS服务能够被立即且透明地恢复。在迁移的情况下,可以将状态信息从非易失性存储装置传输到目的地存储设备,然后目的地存储设备可以将状态信息导入到存储器中以对源存储设备进行镜像。
图6是图示根据一些实施例的NFS服务器615的框图。NFS服务器615可以包括与易失性存储器630和非易失性存储装置635通信的处理器620。易失性存储器630和非易失性存储装置635可以被包括在存储设备625中。存储设备625可以是与图5的存储设备550相同或不同的存储设备。
当从客户端设备(例如,图5的客户端设备505)接收到对NFS服务器615能够访问的数据对象执行某个操作的请求时,与数据对象对应的状态改变可以从当前状态改变到新状态。执行操作的请求可以被接收为对NFS服务器615的命令。例如,客户端设备可以发出“锁定”特定数据对象的命令。因此,请求可以包括命令(例如,“锁定”),以及应该被锁定的数据对象的名称。
一旦请求被NFS服务器615接收到,它就可以被执行(例如,在上面的示例中,数据对象可以被锁定)。在执行之后,可以将与数据对象对应的状态从当前状态(例如,先前发出的关于数据对象的命令)更新为数据对象的新状态(例如,“锁定”状态)。状态(即,当前状态或新状态)可以包括例如客户端状态、服务器状态、委托状态、打开状态、锁定状态等。
客户端状态可以表示“根”状态,并且可以用于回收(reclaim)NFS服务器615上的任何其它状态。客户端状态可以用于识别客户端实例,诸如客户端重启实例。服务器状态可以用于识别服务器重启实例。委托状态可以用于将数据对象的管理委托给客户端设备。例如,NFS服务器615可以向客户端设备授予读取委托或写入委托。打开状态可以用于指示数据对象在客户端设备上是打开的。如本文所使用的,“打开”可以用于描述其中数据对象在客户端设备上被访问的状态。例如,“打开”数据对象可以包括在可显示的文件类型的情况下正在被显示的数据对象,但是也可以包括在应用或其它可执行文件类型的情况下正在被执行的数据对象。对于许多打开的数据对象,可以同时使用相同的打开拥有者(openowner)。NFS服务器615可以将打开拥有者与可以在多个进程之间共享的文件描述符进行比较。当客户端设备在数据对象上创建锁时,可以使用锁定状态。在一些实施例中,锁拥有者可以能够升级其自己的锁。
在状态被更新以反映新状态之后,NFS服务器615可以将新状态的指示与数据对象的标识符(诸如文件名或其它字母数字标识符)相关联地存储在易失性存储器630中。指示可以是例如新状态的描述(例如,状态=打开)、与特定状态字段对应的值、字节或标志(例如,打开=1)等。在一些实施例中,指示可以包括除状态之外的其它变量,诸如客户端设备的标识符或发出执行操作的请求的用户和/或作为请求的主体的客户端设备或用户的标识符。例如,指示可以包括“read_delegation=1”和“client_id=client_ip_address”二者,其中client_id表示应该向其授予对数据对象的“读取”访问权的客户端设备的IP地址。
在一些实施例中,新状态的指示可以反映数据对象的多个并发状态。例如,新状态的指示可以反映多个客户端设备的“读取”委托,例如,“read_delegation=6”或“read_delegation=0110”。新状态的指示可以附加地或替代地反映另一个状态,诸如(“打开=1”)。在一些实施例中,新状态的指示可以仅反映数据对象的特定状态的单个实例。例如,新状态的指示可以反映仅一个客户端设备的“写入”委托,因为写入委托可能与任何其它客户端设备的任何文件访问冲突。
然后,NFS服务器615可以从易失性存储器630检索新状态的指示。但是,在一些实施例中,NFS服务器615不需要从易失性存储器630检索新状态的指示。NFS服务器615可以在非易失性存储装置635中的位置处写入表示新状态的元数据。如本文所使用的,“元数据”可以指提供关于其它数据的信息的任何数据,其它数据通常与它正在为其提供信息的数据一起存储。因此,元数据可以与数据对象的相同或不同标识符(例如,相同或不同的文件名)相关联地写入到非易失性存储装置635。
存储在易失性存储器630中的新状态的指示可以与存储在非易失性存储装置635中的表示新状态的元数据相同或不同。在一些实施例中,由于易失性存储器630中可用的存储空间较小,因此存储在易失性存储器630中的新状态的指示可以小于存储在非易失性存储装置635中的表示新状态的元数据。作为一个示例,新状态和/或元数据的指示可以被存储为令牌(例如,字节值)。令牌的最高有效比特可以指定令牌类型,并因此识别抽象和相关联的元数据表。令牌还可以指定被执行的特定操作(例如,如上所述的特定状态)。
可以将元数据映射到非易失性存储装置635中的特定位置。在一些实施例中,非易失性存储装置635可以包括在单个稀疏文件(sparse file)中维护的以存储元数据的一系列持久表。作为一个具体示例,可以维护五个持久表,其直接将元数据映射到非易失性存储装置635中的特定位置。在一些实施例中,元数据的存储位置可以代数地从元数据本身计算。以下的表1提供了可以被包括在稀疏文件中的表的类型的示例。
表1:存储状态元数据的稀疏文件中的表类型
client-tab 记录clientid4值
open-tab 记录打开文件的stateid4值
lock-tab 记录文件锁的stateid4值
deleg-tab 记录委托的stateid4值
locks-tab 记录文件锁定数据(偏移量和长度)
“client-tab”表、“open-tab”表、“lock-tab”表和“deleg-tab”表的结构使其自身适用于上述直接映射方法。在一些实施例中,NFS服务器615可以在每个元数据中记录服务器引导验证器和搜索关键字。搜索关键字可以是小的标量值,当该标量值乘以每种类型的表的记录的固定尺寸时,会产生记录的固定偏移量。
“locks-tab”表的组织可能更复杂,因为它可能不具有固定的尺寸。文件锁的任何给定“stateid4”值(由“locks-tab”表中的条目持久表示)可以表示潜在无限数量的实际锁。因此,文件锁的“stateid4”值不能用作对“locks-tab”表的索引。例如,客户端可以对单个文件发送两个锁请求:LOCK文件1(file1)、偏移量1(offset1)、尺寸1(size1)和LOCK文件1(file1)、偏移量2(offset 2)、尺寸2(size 2)。这种操作的结果可以是表示两个不同锁的单个锁“stateid4”值(以及“lock-tab”表中的单个条目)。
文件锁的“stateid4”值与它们所表示的锁之间的一对多关系可能需要比其它表所需的“locks-tab”表的更复杂的元数据组织。尽管如此,上述直接映射方法可能是适用的,因为每个单独的锁可以具有固定的尺寸。“locks-tab”表的盘上(on-disk)表示可以以分配比特图开始。图中的每个比特可以表示“lock-tab”表中对应锁插槽的可用性,以及“locks-tab”表中对应锁插槽的位置。当分配新锁时,可以在“locks-tab”表比特图中分配新比特以保持锁数据。
可以通过对非易失性存储装置635的同步写入将对数据对象的每个操作应用于它所影响的各种表。例如,简单的锁定请求可以应用一个锁:LOCK(off,len)->LSID(N)+LOCK_DESCRIPTION(Z)。为了执行该锁定请求并将其记录在非易失性存储装置635中,NFS服务器615可以为文件锁分配新的“stateid4”值、从比特图分配新的锁插槽、在易失性存储器630中应用文件锁、并将修改提交给非易失性存储装置635。因此,可能需要修改非易失性存储装置635中的至少三个不同位置:“lock-tab”表中记录新锁“stateid4”值的条目、“locks-tab”表中记录实际的锁偏移和长度的条目、以及“table-tab”表比特图中反映分配的条目。
当在NFS服务器615处发生故障(例如,服务器崩溃)时,NFS服务器615可以重新建立在故障之前存在的状态(例如,客户端状态、打开状态、锁定状态等)。在客户端设备还存储状态信息的实施例中,NFS服务器615可以与客户端设备一起工作以重新建立状态。可以通过从非易失性存储装置635中的位置检索表示新状态的元数据来重新建立状态。例如,NFS服务器615可以从非易失性存储装置635中读取元数据并重建易失性存储器630中的状态。然后,NFS服务器615可以根据新状态来自动恢复服务。
在一些实施例中,可以独立地应用所有状态改变。NFS服务器615可以采用vnode(“VOP”)接口来允许分散写入(可以在单个事务中应用于意图日志)。可以允许分散写入的一个示例性VOP接口函数是“VOP_SCATTER_WRITE(vp,scatter-list,FDATASYNC)”。分散列表中的每个I/O向量可以表示进入数据对象中不同位置的I/O请求。在这个示例中,iov[0]={offset_of(key(LSID)),lsid-buf,sizeof(lsid-buf)};iov[1]={offset_of(bm-entry(L1)),bm-buf,1};并且iov[2]={offset_of(key(L1)),lock-desc-buf,sizeof(lock-desc-buf)}。
图7是图示根据一些实施例的用于连续可用的NFS状态数据的方法的流程图。在步骤705处,NFS服务器接收将与NFS服务器能够访问的数据对象对应的状态从当前状态改变为新状态的指令。指令可以响应于由客户端设备发出的访问NFS服务器能够访问的数据对象或对其执行操作的请求。请求和指令可以被封装成由NFS协议定义的标准化消息格式。一旦NFS从客户端设备接收到访问或执行操作的请求,NFS服务器就可以检查存储在数据对象的元数据中的许可,以确定客户端设备是否具有访问数据对象或执行操作的许可。如果客户端设备具有适当的许可,则NFS服务器可以允许客户端设备访问数据对象和/或执行操作。
对操作的这种访问或执行可以导致生成将数据对象的状态从当前状态改变为新状态的指令。在一些实施例中,可以替换数据对象的状态。例如,如果数据对象原先关闭但刚刚打开,则“打开”状态可以从“打开=0(open=0)”改变为“打开=1(open=1)”。在一些实施例中,仅在当前状态到期时才替换数据对象的状态。例如,当前状态可以指示与客户端设备相关联的某个IP地址具有“delegate_write”状态,但是当与新客户端设备相关联的新IP地址被分配该数据对象的“delegate_write”状态时,该当前状态可以到期。在可以使用状态的多个实例的一些实施例中,可以更新数据对象的状态。例如,如果一个客户端设备已打开数据对象,但现在四个客户端设备已打开数据对象,则“打开”状态可以从“打开=1(open=1)”改变为“打开=4(open=4)”。
在一些实施例中,可以针对特定状态指示最大数量的客户端设备。例如,可以向最多四个客户端设备(例如,userid1、userid2、userid3、userid4)分配对在任何一个时间的给定数据对象的“delegate_read”访问。例如,可以进行这样的约束以确保NFS服务器及其资源的充分性能。在该示例中,如果第五个客户端设备被分配“delegate_read”访问,则可以将先前客户端设备中的一个从该状态移除。例如,userid1可能由于该客户端设备具有最长时间的访问而被移除。在另一个示例中,userid3可能由于在客户端设备的层次结构中具有最低优先级而被移除。
在一些实施例中,可以指示特定数据对象的最大数量的状态。例如,特定数据对象可以具有可以与其相关联的最多两个数量的状态。在该示例中,数据对象可以具有指示“打开=1(open=1)”的第一状态和指示“delegate_read=1”的第二状态。如果指定了针对特定IP地址的“delegate_write=1”的第三状态改变,则可以从其与数据对象的关联中移除先前状态中的一个。例如,“delegate_read”可以被设置为0。
在一些实施例中,可能存在应用于确定是否允许特定状态改变以及新状态将如何影响当前状态的状态的层次结构。例如,第一客户端设备可以与数据对象的“delegate_read=1”状态相关联。第二客户端设备可以与数据对象的“delegate_write=1”状态相关联。第三客户端设备可以将数据对象的状态改变为“锁定=1(lock=1)”。状态“锁定=1(lock=1)”可以重置“delegate_read=0”和“delegate_write=0”,使得没有客户端设备可以从数据对象读取或写入到数据对象。
在步骤710处,NFS服务器将新状态的指示存储在易失性存储器中。如本文关于图6所讨论的,新状态的指示可以以任何合适的格式进行存储。新状态的指示可以根据NFS协议存储在易失性存储器中。
在步骤715处,在一些实施例中,NFS服务器从易失性存储器检索新状态的指示。在一些实施例中,该步骤不是必需的,并且该处理可以进行到步骤720。该指示可以与数据对象的标识符相关联地存储在易失性存储器中。数据对象的标识符可以是例如文件名或文件在非易失性存储器中的位置。
在步骤720处,NFS服务器将表示新状态的元数据写入非易失性存储装置中的位置。可以与数据对象的相同或不同标识符相关联地写入元数据。例如,指示可以与文件在非易失性存储器中的位置相关联地存储在易失性存储器中,而元数据可以与文件名相关联地写入,该文件名与在非易失性存储器中的位置处的数据对象相关联。可以以与写入到易失性存储器的新状态的指示相同或不同的格式将元数据写入到非易失性存储装置。作为一个示例,元数据可以包括令牌。在附加或替代示例中,可以将元数据写入到表和/或稀疏文件。在一些实施例中,可以将元数据同步写入到非易失性存储装置。如本文所使用的,术语“同步”意味着元数据的写入必须在连续写入操作或涉及数据对象的其它处理可以进行之前完成。
可以在出现一个或多个条件时将元数据写入到非易失性存储装置。例如,可以在将新状态的指示存储在易失性存储器中之后立即将元数据写入到非易失性存储装置。在另一个示例中,元数据可以与新状态的指示被存储在易失性存储器中并发地或同时地写入到非易失性存储装置,如由改变与数据对象对应的状态的指令所触发的。在另一个示例中,可以以特定时间间隔(例如,每秒、每10秒、每1分钟等)周期性地将元数据写入到非易失性存储装置。在另一个示例中,可以基于特定状态的重要性,仅针对某些状态立即将元数据写入到非易失性存储装置,而其余被周期性地写入。换句话说,元数据被写入的定时可以是特定于状态的。在又一个示例中,可以针对反映由某些客户端设备执行的操作的状态改变立即将元数据写入到非易失性存储装置,而其余被周期性地写入。换句话说,元数据被写入的定时可以是特定于客户端的。
在步骤725处,NFS服务器检测到涉及NFS服务器的故障。例如,故障可能是断电。断电可能是预期的或意外的。断电可以至少涉及其中存储新状态的指示的易失性存储器。可以通过例如访问易失性存储器以确定状态信息是否可用来检测断电。例如,如果没有状态信息可用于易失性存储器中的任何数据对象,则可能发生电力故障。在一些实施例中,在涉及NFS服务器的故障时,新状态的指示从易失性存储器中被擦除。这种擦除可能是由于易失性存储器不能持久地和在没有电力的情况下存储数据造成的。在另一个示例中,状态信息可以在易失性存储器中可用,其特别指示NFS服务器中发生电力故障。例如,在电力故障之后接通时,“server_restart”状态可以被设置为1。
在步骤730处,NFS服务器从非易失性存储装置中的位置检索表示新状态的元数据。在一些实施例中,在从非易失性存储装置中的位置检索表示新状态的元数据之后,NFS服务器重新填充易失性存储器中的至少一些以包括与数据对象的标识符相关联的新状态的指示。例如,NFS服务器可以将元数据转换回易失性存储器可存储和可用的形式(即,转换成先前使用的新状态的指示),该形式可以与元数据的形式不同。新状态的指示可以与数据对象的标识符相关联地存储回易失性存储器中,该标识符可以是在非易失性存储装置中使用的相同或不同的标识符。在一些实施例中,可以从非易失性存储装置检索并实现表示新状态的所有元数据。
在步骤735处,NFS服务器根据新状态来恢复服务。例如,新状态可以指示“write_delegation=1”和“client_id=client_ip_address”,其中client_id表示应该向其授予对数据对象的“写入”访问权的客户端设备的IP地址。NFS服务器可以根据该状态来恢复服务,使得允许由与client_ip_address相关联的客户端设备的IP地址对数据对象的后续写入请求。
如所指出的,计算机可读介质可以包括暂态介质,诸如无线广播或有线网络传输,或存储介质(即,非瞬态存储介质),诸如硬盘、闪存驱动器、紧凑型盘、数字视频盘、蓝光盘或其它计算机可读介质。在各种示例中,计算机可读介质可以被理解为包括各种形式的一种或多种计算机可读介质。
在前面的描述中,参考本申请的具体实施例描述了本申请的各方面,但是本领域技术人员将认识到本发明不限于此。因此,虽然本文已经详细描述了本申请的说明性实施例,但是应该理解的是,可以以其它方式不同地实施和采用本发明构思,并且除了受现有技术的限制之外,所附权利要求旨在被解释为包括这样的变型。上述发明的各种特征和方面可以被单独使用或联合使用。另外,在不脱离本说明书的更广泛的精神和范围的情况下,可以在除了本文描述的环境和应用之外的任何数量的环境和应用中利用实施例。因此,说明书和附图应被视为说明性的而非限制性的。出于说明的目的,以特定顺序描述了方法。应该认识到的是,在替代实施例中,可以以与所描述的顺序不同的顺序执行方法。
在将部件描述为执行或“被配置为”执行某些操作的情况下,这种配置可以例如通过设计电子电路或其它硬件来执行操作、通过编程可编程电子电路(例如,微处理器、或其它合适的电子电路)来执行操作或其任何组合来实现。
结合本文所公开的实施例描述的各种说明性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件、固件或其组合。为了清楚地图示硬件和软件的这种可互换性,上面已经在其功能方面对各种说明性的部件、块、模块、电路和步骤进行了一般性描述。这样的功能被实现为硬件还是软件取决于特定应用和施加在整个系统上的设计约束。技术人员可以针对每个特定应用以不同方式实现所描述的功能,但是这样的实现决策不应被解释为导致脱离本发明的范围。
本文描述的技术还可以用电子硬件、计算机软件、固件或其任何组合来实现。这些技术可以在各种设备(诸如通用计算机、无线通信设备手机,或具有包括在无线通信设备手机和其它设备中的应用的多种用途的集成电路设备)中的任何设备中实现。被描述为模块或部件的任何特征可以在集成逻辑设备中一起实现,或者作为离散但可互操作的逻辑设备单独实现。如果用软件实现,则本技术可以至少部分地由包括程序代码的计算机可读数据存储介质实现,该程序代码包括在被执行时执行上述方法中的一个或多个的指令。计算机可读数据存储介质可以形成可以包括包装材料的计算机程序产品的一部分。计算机可读介质可以包括存储器或数据存储介质,诸如随机存取存储器(RAM),诸如同步动态随机存取存储器(SDRAM)、只读存储器(ROM)、非易失性随机存取存储器(NVRAM)、电可擦除可编程只读存储器(EEPROM)、闪存(FLASH memory)、磁数据存储介质或光学数据存储介质等。附加地或替代地,本技术可以至少部分地由计算机可读通信介质实现,该计算机可读通信介质以指令或数据结构的形式(诸如传播的信号或波)携带或传送程序代码,并且可以由计算机访问、读取和/或执行。
程序代码可以由处理器执行,处理器可以包括一个或多个处理器,诸如一个或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)、或其它等效的集成或分立逻辑电路系统。这样的处理器可以被配置为执行本公开中描述的任何技术。通用处理器可以是微处理器;但是在替代方案中,处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器还可以被实现为计算设备的组合,例如多个微处理器、与DSP内核结合的一个或多个微处理器、DSP和微处理器的组合、或任何其它这样的配置。因此,如本文所使用的术语“处理器”可以指任何前述结构、前述结构的任何组合,或适合于实现本文描述的技术的任何其它结构或装置。此外,在一些方面,本文描述的功能可以在被配置用于编码和解码的专用软件模块或硬件模块内提供,或者被并入到组合的视频编码器-解码器(CODEC)中。

Claims (21)

1.一种用于提供连续可用的网络文件系统状态数据的方法,包括:
由网络文件系统NFS服务器接收将与NFS服务器能够访问的数据对象对应的状态从当前状态改变为新状态的指令;
由NFS服务器在易失性存储器中存储新状态的指示,所述指示与所述数据对象的标识符相关联地存储;
由NFS服务器在非易失性存储装置中的位置处写入表示所述新状态的元数据,其中所述元数据与所述数据对象的相同或不同标识符相关联地写入,其中在易失性存储器中存储新状态的指示和将元数据写入到非易失性存储装置是同步执行的,并且在NFS服务器允许涉及数据对象的其它处理之前执行;
由NFS服务器检测涉及NFS服务器的故障;
由NFS服务器从所述非易失性存储装置中的所述位置检索表示所述新状态的所述元数据;以及
由NFS服务器根据所述新状态来恢复服务。
2.如权利要求1所述的方法,其中在涉及NFS服务器的所述故障时,所述新状态的所述指示从所述易失性存储器中被擦除。
3.如权利要求1所述的方法,还包括:在从所述非易失性存储装置中的所述位置检索到表示所述新状态的所述元数据之后:
重新填充所述易失性存储器的至少一些以包括与所述数据对象的所述标识符相关联的所述新状态的所述指示。
4.如权利要求1所述的方法,其中所述新状态包括打开状态、锁定状态、客户端状态或委托状态中的至少一个。
5.如权利要求1所述的方法,其中响应于接收到改变与所述数据对象对应的状态的所述指令,立即写入表示所述新状态的所述元数据。
6.如权利要求1所述的方法,其中从所述非易失性存储装置检索到的表示所述新状态的所述元数据被包括在存储在所述非易失性存储装置中的表示多个数据对象的多个状态的多个元数据中,其中从所述非易失性存储装置检索所述多个元数据,并且其中根据所述新状态来恢复服务包括根据所述多个状态来恢复服务。
7.如权利要求1所述的方法,其中检测涉及NFS服务器的所述故障包括确定所述新状态的所述指示从所述易失性存储器中被擦除。
8.一种用于提供连续可用的网络文件系统状态数据的设备,包括:
一个或多个处理器;以及
包含指令的非瞬态计算机可读介质,所述指令当由所述一个或多个处理器执行时,使得所述一个或多个处理器执行包括以下的操作:
接收将与NFS服务器能够访问的数据对象对应的状态从当前状态改变为新状态的指令;
在易失性存储器中存储新状态的指示,所述指示与所述数据对象的标识符相关联地存储;
在非易失性存储装置中的位置处写入表示所述新状态的元数据,其中所述元数据与所述数据对象的相同或不同标识符相关联地写入,其中在易失性存储器中存储新状态的指示和将元数据写入到非易失性存储装置是同步执行的,并且在NFS服务器允许涉及数据对象的其它处理之前执行;
检测涉及NFS服务器的故障;
从所述非易失性存储装置中的所述位置检索表示所述新状态的所述元数据;以及
根据所述新状态来恢复服务。
9.如权利要求8所述的设备,其中在涉及NFS服务器的所述故障时,所述新状态的所述指示从所述易失性存储器中被擦除。
10.如权利要求8所述的设备,其中所述操作还包括:在从所述非易失性存储装置中的所述位置检索到表示所述新状态的所述元数据之后:
重新填充所述易失性存储器的至少一些以包括与所述数据对象的所述标识符相关联的所述新状态的所述指示。
11.如权利要求8所述的设备,其中所述新状态包括打开状态、锁定状态、客户端状态或委托状态中的至少一个。
12.如权利要求8所述的设备,其中响应于接收到改变与所述数据对象对应的状态的所述指令,立即写入表示所述新状态的所述元数据。
13.如权利要求8所述的设备,其中从所述非易失性存储装置检索到的表示所述新状态的所述元数据被包括在存储在所述非易失性存储装置中的表示多个数据对象的多个状态的多个元数据中,其中从所述非易失性存储装置检索所述多个元数据,并且其中根据所述新状态来恢复服务包括根据所述多个状态来恢复服务。
14.如权利要求8所述的设备,其中检测涉及NFS服务器的所述故障包括确定所述新状态的所述指示从所述易失性存储器中被擦除。
15.一种非瞬态机器可读存储介质,包括当由一个或多个处理器执行时使得所述一个或多个处理器执行以下操作的指令:
接收将与NFS服务器能够访问的数据对象对应的状态从当前状态改变为新状态的指令;
在易失性存储器中存储所述新状态的指示,所述指示与所述数据对象的标识符相关联地存储;
在非易失性存储装置中的位置处写入表示所述新状态的元数据,其中所述元数据与所述数据对象的相同或不同标识符相关联地写入,其中在易失性存储器中存储新状态的指示和将元数据写入到非易失性存储装置是同步执行的,并且在NFS服务器允许涉及数据对象的其它处理之前执行;
检测涉及NFS服务器的故障;
从所述非易失性存储装置中的所述位置检索表示所述新状态的所述元数据;以及
根据所述新状态来恢复服务。
16.如权利要求15所述的非瞬态机器可读存储介质,其中在涉及NFS服务器的所述故障时,所述新状态的所述指示从所述易失性存储器中被擦除。
17.如权利要求15所述的非瞬态机器可读存储介质,其中所述指令还使得所述一个或多个处理器在从所述非易失性存储装置中的所述位置检索到表示所述新状态的所述元数据之后:
重新填充所述易失性存储器的至少一些以包括与所述数据对象的所述标识符相关联的所述新状态的所述指示。
18.如权利要求15所述的非瞬态机器可读存储介质,其中响应于接收到改变与所述数据对象对应的状态的所述指令,立即写入表示所述新状态的所述元数据。
19.如权利要求15所述的非瞬态机器可读存储介质,其中从所述非易失性存储装置检索到的表示所述新状态的所述元数据被包括在存储在所述非易失性存储装置中的表示多个数据对象的多个状态的多个元数据中,其中从所述非易失性存储装置检索所述多个元数据,并且其中根据所述新状态来恢复服务包括根据所述多个状态来恢复服务。
20.如权利要求15所述的非瞬态机器可读存储介质,其中检测涉及NFS服务器的所述故障包括确定所述新状态的所述指示从所述易失性存储器中被擦除。
21.一种包括用于执行如权利要求1-7中任一项所述的方法的部件的装置。
CN201780071778.3A 2016-12-14 2017-12-14 用于连续可用的网络文件系统(nfs)状态数据的系统和方法 Active CN109983452B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/378,721 2016-12-14
US15/378,721 US10452482B2 (en) 2016-12-14 2016-12-14 Systems and methods for continuously available network file system (NFS) state data
PCT/US2017/066325 WO2018112155A1 (en) 2016-12-14 2017-12-14 Systems and methods for continuously available network file system (nfs) state data

Publications (2)

Publication Number Publication Date
CN109983452A CN109983452A (zh) 2019-07-05
CN109983452B true CN109983452B (zh) 2023-11-03

Family

ID=60991539

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780071778.3A Active CN109983452B (zh) 2016-12-14 2017-12-14 用于连续可用的网络文件系统(nfs)状态数据的系统和方法

Country Status (5)

Country Link
US (1) US10452482B2 (zh)
EP (1) EP3555772A1 (zh)
KR (1) KR102595120B1 (zh)
CN (1) CN109983452B (zh)
WO (1) WO2018112155A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10990566B1 (en) * 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10902903B2 (en) 2018-09-28 2021-01-26 Apple Inc. Purgeable memory mapped files
US11119676B2 (en) * 2019-11-08 2021-09-14 International Business Machines Corporation Using spare bits in memory systems

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1723434A (zh) * 2002-12-06 2006-01-18 思科技术公司 用于可扩展网络附接存储系统的装置和方法
CN101699825A (zh) * 2009-10-28 2010-04-28 成都市华为赛门铁克科技有限公司 网络文件系统访问方法、装置及系统
US9223612B1 (en) * 2013-04-29 2015-12-29 Seagate Technology Llc Object-based commands with quality of service identifiers
CN106104515A (zh) * 2014-01-24 2016-11-09 新加坡科技研究局 利用非易失性存储器的文件系统设计和故障恢复方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5513314A (en) 1995-01-27 1996-04-30 Auspex Systems, Inc. Fault tolerant NFS server system and mirroring protocol
US6275953B1 (en) 1997-09-26 2001-08-14 Emc Corporation Recovery from failure of a data processor in a network server
US6247139B1 (en) * 1997-11-11 2001-06-12 Compaq Computer Corp. Filesystem failover in a single system image environment
US6324581B1 (en) 1999-03-03 2001-11-27 Emc Corporation File server system using file system storage, data movers, and an exchange of meta data among data movers for file locking and direct access to shared file systems
US6496939B2 (en) * 1999-09-21 2002-12-17 Bit Microsystems, Inc. Method and system for controlling data in a computer system in the event of a power failure
US7428540B1 (en) 2000-03-03 2008-09-23 Intel Corporation Network storage system
JP2003162439A (ja) * 2001-11-22 2003-06-06 Hitachi Ltd ストレージシステム及びその制御方法
US8239486B2 (en) * 2008-03-19 2012-08-07 Oracle International Corporation Direct network file system
US8281182B2 (en) 2010-03-12 2012-10-02 Cleversafe, Inc. Dispersed storage unit selection
US8631277B2 (en) * 2010-12-10 2014-01-14 Microsoft Corporation Providing transparent failover in a file system
US9069682B1 (en) * 2012-06-29 2015-06-30 Emc Corporation Accelerating file system recovery by storing file system metadata on fast persistent storage during file system recovery
US10264071B2 (en) * 2014-03-31 2019-04-16 Amazon Technologies, Inc. Session management in distributed storage systems
US10545927B2 (en) * 2016-03-25 2020-01-28 Amazon Technologies, Inc. File system mode switching in a distributed storage service

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1723434A (zh) * 2002-12-06 2006-01-18 思科技术公司 用于可扩展网络附接存储系统的装置和方法
CN101699825A (zh) * 2009-10-28 2010-04-28 成都市华为赛门铁克科技有限公司 网络文件系统访问方法、装置及系统
US9223612B1 (en) * 2013-04-29 2015-12-29 Seagate Technology Llc Object-based commands with quality of service identifiers
CN106104515A (zh) * 2014-01-24 2016-11-09 新加坡科技研究局 利用非易失性存储器的文件系统设计和故障恢复方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
第9.1.4.2章节、第9.6.2章节、第15.12章节、第15.25章节和第15.38章节;Haynes T ET AL;《Network File System (NFS) Version 4 Protocol draft-ietf-nfsv4-rfc3530bis-35.txt》;20141204;第101-102、116-117、222-225、250-252、279-283页 *

Also Published As

Publication number Publication date
CN109983452A (zh) 2019-07-05
KR102595120B1 (ko) 2023-10-30
KR20190093642A (ko) 2019-08-09
WO2018112155A1 (en) 2018-06-21
US10452482B2 (en) 2019-10-22
EP3555772A1 (en) 2019-10-23
US20180165159A1 (en) 2018-06-14

Similar Documents

Publication Publication Date Title
US11068395B2 (en) Cached volumes at storage gateways
US20200210075A1 (en) Data management system
US8725951B2 (en) Efficient flash memory-based object store
US9274956B1 (en) Intelligent cache eviction at storage gateways
US9268651B1 (en) Efficient recovery of storage gateway cached volumes
US10606803B2 (en) Data cloning in memory-based file systems
US8868487B2 (en) Event processing in a flash memory-based object store
US20170083412A1 (en) System and method for generating backups of a protected system from a recovery system
CN108701048B (zh) 数据加载方法及装置
US9559889B1 (en) Cache population optimization for storage gateways
EP3101545B1 (en) System and method for generating backups of a protected system from a recovery system
US9547655B1 (en) Filesystem independent snapshot driver
CN109983452B (zh) 用于连续可用的网络文件系统(nfs)状态数据的系统和方法
US10387384B1 (en) Method and system for semantic metadata compression in a two-tier storage system using copy-on-write
US10073874B1 (en) Updating inverted indices
US20190050455A1 (en) Adaptive page rendering for a data management system
US10628391B1 (en) Method and system for reducing metadata overhead in a two-tier storage architecture
US11221985B2 (en) Metadata space efficient snapshot operation in page storage
US20240160355A1 (en) Asynchronous Persistent Memory Data Mirroring
US11977454B2 (en) Leveraging metadata of a deduplication storage system to perform an efficient restore of backup data
US20240160373A1 (en) Coordinated Persistent Memory Data Mirroring
Hatzieleftheriou et al. Client-side journaling for durable shared storage
Appuswamy et al. File-level, host-side flash caching with loris

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