CN117203607A - 集群文件系统中的直接读取 - Google Patents
集群文件系统中的直接读取 Download PDFInfo
- Publication number
- CN117203607A CN117203607A CN202180097359.3A CN202180097359A CN117203607A CN 117203607 A CN117203607 A CN 117203607A CN 202180097359 A CN202180097359 A CN 202180097359A CN 117203607 A CN117203607 A CN 117203607A
- Authority
- CN
- China
- Prior art keywords
- node
- resource
- initiator
- write
- participant
- 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.)
- Pending
Links
- 239000003999 initiator Substances 0.000 claims abstract description 145
- 238000000034 method Methods 0.000 claims abstract description 64
- 238000013500 data storage Methods 0.000 claims abstract description 45
- 230000004044 response Effects 0.000 claims abstract description 37
- 238000012546 transfer Methods 0.000 claims abstract description 4
- 230000015654 memory Effects 0.000 claims description 31
- 238000011084 recovery Methods 0.000 claims description 25
- 238000012423 maintenance Methods 0.000 claims description 13
- 230000005540 biological transmission Effects 0.000 claims description 9
- 230000004048 modification Effects 0.000 claims description 8
- 238000012986 modification Methods 0.000 claims description 8
- 238000011010 flushing procedure Methods 0.000 claims description 7
- 230000000977 initiatory effect Effects 0.000 claims description 6
- 206010000210 abortion Diseases 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 27
- 238000004891 communication Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000006855 networking Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 239000007787 solid Substances 0.000 description 3
- 238000013475 authorization Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 230000009012 visual motion Effects 0.000 description 1
Classifications
-
- 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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- 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/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0637—Permissions
-
- 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/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本文中描述了集群文件系统中的直接读取。如本文中描述的方法可以包括针对由发起方节点发起的对由数据存储系统存储的资源的写入操作,确定针对该资源的参考计数,该参考计数包括在写入操作期间将由写入数据修改的数据存储系统的目标存储区域的数目;促进将从该发起方节点向锁定协调器节点传送针对该资源的该参考计数;促进从该发起方节点向分别被指派给该目标存储区域的相应参与者节点传送该写入数据和针对该写入操作的密钥值;以及促进使相应参与者节点响应于相应参与者节点向该目标存储区域写入该写入数据而传送包括密钥值的相应通知。
Description
相关申请的交叉引用
本申请要求于2021年4月21日提交的、名称为“DIRECT READ IN CLUSTERED FILESYSTEMS”的美国非临时申请序列号17/236,520的优先权,该申请的全部内容并入本文。
背景技术
分布式计算系统中的设备可以利用协议,诸如结构上的NVMe(非易失性快速存储器)或NVMeoF,以使得多个主机能够直接访问系统中的(多个)相同存储设备。虽然诸如NVMeoF的协议可以带来显著的性能优势,但在某些情况下,它们也会引入计算和/或网络开销。例如,在分布式集群文件系统的上下文中,由于需要在主机之间进行协调以避免访问过时数据,对NVMeoF和/或其他类似协议的使用可能会产生附加开销。
发明内容
以下发明内容是本文中公开的各种实施例的一般概述,并且并不旨在穷举或限制所公开的实施例。在考虑以下结合附图和权利要求的详细描述之后,可以更好地理解实施例。
在一种实现中,本文中描述了一种数据存储系统。数据存储系统可以包括存储可执行组件的存储器和执行被存储在存储器中的可执行组件的处理器。可执行组件可以包括参考计数调整组件,参考计数调整组件针对由数据存储系统的发起方节点发起的对由数据存储器系统存储的资源的写入操作,确定针对资源的参考计数值,参考计数值包括与数据存储系统相关联的受影响存储区域的数目,受影响存储区域将利用与写入操作相关联的写入数据而被改变。可执行组件还可以包括锁定协调器接口组件,锁定协调器接口组件促进从数据存储系统的发起方节点向数据存储系统的锁定协调器节点发送针对资源的参考计数值。可执行组件还可以包括参与者接口组件,参与者接口组件促进从数据存储系统的发起方节点向分别被指派给受影响存储区域的数据存储系统的相应参与者节点发送与写入操作相关联的写入数据和与写入操作对应的锁定密钥。锁定密钥可以使相应参与者节点响应于相应参与者节点将与写入操作相关联的写入数据冲刷到受影响存储区域而向锁定协调器节点提供包括锁定密钥的相应通知。
在另一实现中,本文中描述了一种方法。该方法可以包括由操作地耦合到处理器的系统,针对由系统的发起方节点发起的对由系统存储的资源的写入操作,确定针对资源的计数值,计数值表示将由与写入操作相关联的写入数据来修改的系统的目标存储区域的数目。该方法还可以包括由系统促进从发起方节点向系统的锁定协调器节点传送针对资源的计数值。该方法还可以包括由系统促进从发起方节点向分别被指派给目标存储区域的系统的相应参与者节点传送与写入操作相关联的写入数据和针对写入操作的密钥值。该方法还可以包括由系统促进响应于相应参与者节点将写入数据写入目标存储区域而使相应参与者节点传送包括密钥值的相应通知。
在附加实现中,本文中描述了一种包括计算机可执行指令的非瞬态机器可读介质。该指令在由数据存储系统的处理器执行时可以促进操作的执行,该操作包括针对由数据存储系统的发起方节点发起的对由数据存储系统存储的资源的写入操作,获取计数值,计数值表示将由写入数据经由写入操作来修改的数据存储系统的受影响存储单元的数目;从发起方节点向数据存储系统的锁定协调器节点传输计数值;从发起方节点向分别管理受影响存储单元的数据存储系统的相应参与者节点传输写入数据和与写入操作相关联的密钥值;以及响应于相应参与者节点将写入数据记录到受影响存储单元,使相应参与者节点向锁定协调器节点发送包括密钥值的相应通知。
附图说明
参考以下附图描述本主题公开的各种非限制性实施例,其中除非另有规定,否则相同的附图标记始终指代相同的部分。
图1是根据本文中描述的各种实现的促进集群文件系统中的直接读取的系统的框图。
图2至图3是根据本文中描述的各种实现的用于在集群文件系统中进行写入操作的相应方法的流程图。
图4是根据本文中描述的各种实现的促进维护所存储的资源的参考计数的系统的框图。
图5是根据本文中描述的各种实现的用于在集群文件系统中进行读取操作的方法的流程图。
图6至图7是根据本文中描述的各种实现的促进执行图5的读取操作的相应系统的框图。
图8是根据本文中描述的各种实现的促进集群文件系统中的崩溃恢复的系统的框图。
图9是描绘根据本文中描述的各种实现的用于集群文件系统中的写入操作的示例消息传递流的图。
图10是根据本文中描述的各种实现的促进集群文件系统中的直接读取的方法的流程图。
图11是本文中描述的各种实施例可以在其中起作用的示例计算环境的图。
具体实施方式
以下描述中提供了所公开的实施例的各种具体细节。然而,本领域技术人员将认识到,在一些情况下,本文中描述的技术可以在没有一个或多个特定细节的情况下或者使用其他方法、组件、材料等来实践。在其他情况下,为了避免混淆主题,公知的结构、材料或操作未详细示出或描述。
现在参考附图,图1示出了根据本文中描述的各种实现的促进集群文件系统中的直接读取的系统100的框图。如图1所示,系统100包括参考计数调整组件110、锁定协调器接口组件120和参与者接口组件130,它们可以如下面进一步详细描述的那样操作。在一种实现中,系统100的组件110、120、130可以用硬件、软件或硬件和软件的组合来实现。例如,组件110、120、130可以被实现为计算机可执行组件,例如,被存储在存储器上并且由处理器执行的组件。以下参考图11进一步详细地示出和描述包括处理器和存储器的计算机架构的示例,该处理器和存储器可以用于实现组件110、120、130以及将在本文中描述的其他组件。
在一种实现中,组件110、120、130可以与与文件存储系统和/或其他数据存储系统相关联的计算节点和/或其他计算设备相关联。例如,如系统100中所示的组件110、120、130每个与系统100的发起方节点10相关联,发起方节点10被定义为系统100的计算节点,该计算节点正在试图读取和/或写入由系统100存储的文件或其他资源。注意,在本文中的一些实现中,在发起读取操作的读取发起方与发起写入操作的写入发起方之间进行区分。例如,系统100中所示的发起方节点10可以作为与对文件或其他资源的写入操作相关联的写入发起方节点来操作。然而,还应当注意,本文中使用的读取发起方与写入发起方之间的区别仅用于描述的目的,并且本文中使用的通用术语“发起方节点”可以是指读取发起方或写入发起方,具体取决于上下文。
另外地或替代地,组件110、120、130和/或下文将进一步详细描述的其他组件可以在其他计算节点或设备内实现,诸如锁定协调器节点20、参与者节点30和/或其他合适的系统节点。系统100中所示的锁定协调器节点20可以维持相应锁的状态,这些状态控制对由系统100存储的相应资源的读取和/或写入访问。在一种实现中,发起方节点10可以被配置为在其被允许对给定资源执行操作之前向锁定协调器节点20请求对该资源的锁定。锁定协调器节点20继而可以在不存在所请求的资源的其他竞争锁定器时向发起方节点10授予锁定访问。
如系统100中进一步所示,(多个)参与者节点30被指派给与系统100相关联的相应存储区域40,并且负责修改被存储在相应存储区域40上的数据。如本文中使用的,术语“存储区域”(在本文中也称为“存储单元”)是数据存储系统的可用存储装置的可定义子集。例如,存储区域或单元可以对应于存储盘,例如,一组存储盘中的存储盘;一个或多个字节;数据块;存储盘的地址范围、分区和/或其他子集,例如,其构成存储盘的少于全部;和/或用于分区和跟踪存储的指派的任何其他预先存在的或专门构建的划分。
在一种实现中,参与者节点30可以在将修改冲刷到存储区域40之前,将修改缓冲在中间非易失性存储库中。对存储区域40的修改是事务性地执行的,例如,使用诸如2PC版本2(2PCv2)协议等扩展的两阶段提交(2PC)协议,并且该修改经由发起方节点10、锁定协调器节点20和(多个)参与者节点30之间的通信来促进。下面参考图9进一步详细描述可以用于促进对存储区域40的修改的示例事务。如下面将进一步描述的,相应参与者节点30可以利用本地非易失性存储装置来在事务期间准备文件系统更新。
虽然系统100中所示的发起方节点10、锁定协调器节点20和(多个)参与者节点30在逻辑上是不同的并且被示出为不同实体,但应当注意,发起方节点10,锁定协调器节点20和(多个)参与者节点30不必在物理上不同。例如,发起方节点10、锁定协调器节点20和/或(多个)参与者节点30可以由公共物理机箱和/或其他装置容纳,尽管它们在逻辑上是分离的系统节点。替代地,节点10、20、30中的相应节点可以位于不同物理设备中。不管物理实现如何,相应节点10、20、30都可以被配置为用于通过后端网络进行通信,例如,经由任何合适的有线或无线通信协议,以交换与文件系统事务相关联的消息。
如上所述,发起方节点10可以从锁定协调器节点20获取锁定,该锁定使得发起方节点10能够开始对被存储在存储区域40上的资源(块、文件等)进行读取或写入操作。锁定继而可以通过阻止由多个系统节点试图同时访问同一资源而导致的访问冲突来保护目标资源的完整性。因此,例如,发起方节点10可以在获取资源的锁定时保证,在其访问资源的同时,资源的内容和/或位置不会被其他系统节点改变。
在读取操作的情况下,发起方节点10获取给定资源的锁定,并且随后向负责所请求的资源被存储在其上的(多个)存储区域40的(多个)参与者节点30提交读取请求。响应于读取请求,参与者节点30可以返回被存储在对应存储区域40上的所请求的数据,或者,如果参与者节点30知道被存储在存储区域40上的所请求的数据过时,则返回资源的本地暂存(stage)版本。在一些情况下,可以利用本文中描述的各种实现来使得发起方节点10能够绕过(多个)负责的参与者节点30并且直接访问被存储在(多个)存储区域40上的所请求的数据,从而减少与读取操作相关联的消息传递开销的量。可以执行的直接读取操作和间接读取操作的示例在本文中关于图5至图7进行描述。
通过实现如本文中描述的用于促进集群文件系统中的直接读取的技术,可以实现可以提高计算系统的功能的各种优点。这些优点可以包括但不限于以下方面。可以减少与由参与者节点针对读取事务而执行的计算相关联的计算资源(例如,处理器周期、存储器使用、功耗等)。可以减少针对读取事务的与发起方节点与参与者节点之间的通信相关联的时间、网络带宽和/或其他开销。其他优点也是可能的。
现在参考如图1所示的系统100的组件110、120、130,系统100的参考计数调整组件110可以针对由发起方节点10发起的对由存储区域40存储的文件或其他资源的写入操作来确定针对资源的参考计数值。在一种实现中,资源的参考计数值可以包括与写入操作相关联的受影响存储区域的数目,例如,将利用与写入操作相关联的写入数据而被改变的存储区域40的数量。可以用于确定和维护资源的参考计数值的技术在下文中关于图3至图4进一步详细描述。
系统100的锁定协调器接口组件120可以促进从发起方节点10向锁定协调器节点20发送由参考计数组件110确定的资源的参考计数值,例如,以促进对由锁定协调器节点20维护的资源的参考计数的调整,这将在下面关于图4进一步详细描述。在一种实现中,锁定协调器节点20可以向发起方节点10提供与该资源相关联的锁定,例如,在从发起方节点10接收到该资源的参考计数值之前或者响应于从发起方节点10接收到该资源的参考计数值。
系统100的参与者接口组件130可以促进从发起方节点10向“拥有”或以其他方式被指派给存储区域40的受影响存储区域的相应参与者节点30发送与写入操作相关联的写入数据。参与者接口组件130可以进一步促进向参与者节点30发送锁定密钥或其他密钥值,该锁定密钥或其他密钥值随后可以被参与者节点30用来响应于参与者节点30将写入操作的写入数据冲刷到存储区域40而向锁定协调器节点20提供包括锁定密钥的通知。这些通知在下文中关于图4进行进一步详细描述。
接下来参考图2,示出了根据本文中描述的各种实现的用于在集群文件系统中进行写入操作的方法200的流程图。方法200可以由类似于系统100的系统执行,例如,包括发起方(这里是写入发起方)、锁定协调器、以及分别管理对应(磁)盘的一个或多个参与者的系统。注意,虽然下面的描述涉及针对盘而执行的操作,但是在不脱离说明书的范围的情况下,除了或代替盘,还可以使用其他类型的存储区域。
在202,写入发起方可以获取锁定,以从负责目标文件或其他资源的锁定协调器获取对该文件或资源的写入访问。如上所述,获取目标资源的锁定可以使得写入发起方能够独占地访问目标资源和/或以其他方式将存储有目标资源的物理块地址保持在固定状态,以确保写入操作可以无争议地进行。
在204,写入发起方可以读取描述目标文件或资源的当前状态的元数据和/或其他布局信息,以便确定要用于目标文件或资源的写入操作类型。例如,基于在204处获取的信息,写入发起方可以准备重写、追加和/或其他合适类型的写入操作。
在206,写入发起方可以通过确定要在写入操作中修改的任何元数据和/或数据块的新内容来计算写入事务。在一种实现中,在206处执行的计算可能导致目标文件或资源的写入数据,例如,如以上关于图1所述。
在208,写入发起方可以启动写入操作的事务,并且向负责包含目标文件或资源的(多个)盘的(多个)参与者发送目标文件或资源的写入数据。在一种实现中,写入数据可以由写入发起方针对要在写入事务中修改的所有块以事务更新的形式提供。
在210,响应于(多个)参与者在208处从写入发起方接收到具有写入数据的事务更新,(多个)参与者可以将在208处接收的(多个)更新被存储在相应参与者处的本地存储装置(例如,非易失性存储器等)中。由于写入数据由(多个)参与者在本地暂存,在从210开始并且在由(多个)参与者将与写入操作相关联的写入数据冲刷到盘时结束的时段期间,写入操作的目标块的盘上状态可以不同于由写入操作指定的预期块状态。
一旦参与者在210处对目标文件或资源进行(多个)更新,写入事务就可以在发起方和参与者处被提交,例如,根据2PC协议和/或其他合适的事务协议。随后,在212,写入发起方可以释放对目标文件或资源的锁定,并且(多个)参与者可以将在210处暂存的数据从本地非易失性存储装置冲刷到盘,从而使写入操作的目标块的盘上状态再次匹配其预期状态。
现在转向图3,并且进一步参考图1至图2,示出了用于在集群文件系统中进行写入操作的替代方法300的流程图。如图3所示,方法300可以被实现为方法200的扩展,其使得锁定协调器能够确定给定块的盘上状态是否是该块的最新状态,而无需与(多个)参与者进行附加消息传递以确认块状态。为了简洁起见,在图3中经由虚线来指示方法200与300之间共同的动作,并且省略了对这些动作的重复描述。
如图3所示,在206之后,方法300进行到302,在302中,写入发起方可以对有多少不同盘将接收与写入操作相关联的具有用户数据的写入进行计数(例如,通过如系统100中所示的发起方节点10的参考计数调整组件110)。写入发起方然后可以(例如,通过锁定协调器接口组件120)向负责目标文件或资源的锁定协调器(例如,系统100中所示的锁定协调器节点20)发送消息,以获取关于要更新的文件或资源的部分的参考计数。
在304,写入发起方可以启动事务,并且(例如,通过参与者接口组件130)向负责所讨论的(多个)盘的(多个)参与者发送所有修改的块的事务更新,例如,以类似于上文关于方法200中的208所述的方式。除了事务更新之外,写入发起方可以在在208处发送给(多个)参与者的写入消息中包括锁定密钥,例如,使得一旦所有事务更新都被冲刷到盘,(多个)参与者就可以在锁定协调器处递减参考计数。
在在304处执行的动作完成之后,事务可以被提交,并且对应写入数据可以被冲刷到盘,例如,如上文关于方法200中的210和212所述。如图3中进一步所示,在写入数据在212处已经被(多个)参与者冲刷到盘之后,方法300可以在306处结束,在306中,(多个)参与者可以通知锁定协调器递减与目标文件或资源相关联的参考计数。
接下来参考图4,示出了根据本文中描述的各种实现的促进维护存储的资源的参考计数的系统的框图。为了简洁起见,省略了对本文中描述的其他实施例中采用的类似元素的重复描述。如图4所示,系统400可以包括发起方节点10、锁定协调器节点20和一个或多个参与者节点30,其中的每个可以如上文关于图1大体上所述的那样操作。如图4中进一步所示,系统400的锁定协调器节点20可以与计数维护组件410相关联,该计数维护组件410维护由系统400存储(例如,经由存储区域40)的文件或资源的参考计数或其他合适的计数值。虽然计数维护组件410在图4中被示出为与锁定协调器节点20相关联,但是应当注意,计数维护组件41可以与系统400中的任何合适的节点相关联和/或被实现为系统400中的独立组件。
在一种实现中,计数维护组件410可以将相应参考计数指派给由系统400存储(例如,经由存储区域40)的相应文件或其他资源。由计数维护组件410维护的文件或其他资源的参考计数可以具有默认值,例如0,该默认值可以响应于由锁定协调器节点20从系统400中的一个或多个其他节点接收的消息而调整。例如,响应于发起方节点10向锁定协调器节点20发送包含计数调整值(例如,如在方法300中的302处所述,该计数调整值是基于在请求的写入操作期间接收写入数据的盘(或其他存储区域)的数目而确定的)的消息,计数维护组件410可以递增被指派给给定资源或以其他方式与给定资源相关联的参考计数。替代地,计数维护组件410可以基于其他合适的消息或系统事件来维护和/或调整由系统400存储的相应资源的参考计数。
如图4所示,写入事务的参与者节点30可以向锁定协调器节点20提供相应通知,该通知包括由发起方节点10针对该事务而提供给参与者节点30的锁定密钥或其他密钥值,例如,如方法300的306处所述。作为响应,计数维护组件410可以递减由锁定协调器节点20指派给写入事务的目标资源的参考计数。
在一种实现中,如上所述的参考计数可以与现有锁定机制结合使用,以串行化对文件或其他逻辑资源的访问。如本文中描述的参考计数的使用在读取操作期间不会产生附加消息传递开销,并且在写入操作期间添加最小附加消息传递,该写入操作可以与其他操作并行执行,因此不会影响整体操作性能。
例如,由计数维护组件410维护的资源的参考计数可以使得锁定协调器节点20能够确定是否存在对该资源的未决更新。例如,当给定资源的参考计数达到零时,锁定协调器节点20可以确定在该资源的任何非易失性存储器(例如,与相应参与者节点30相关联的非易失存储器)中没有未完成的更新。虽然这是真的,但是当发起方节点10请求读取锁定时,锁定协调器节点20可以响应于任何读取请求而提供特殊“直接读取”锁定。当发起方节点10接收到读取直接锁定时,发起方节点10可以例如经由NVMeoF执行直接读取,而不必经过(多个)参与者节点30。
接下来转到图5,并且附加参考图6至图7,示出了根据本文中描述的各种实现的用于在集群文件系统中进行读取操作的方法500的流程图。根据方法500而执行的读取操作可以利用如上所述的文件的参考计数和/或改进的写入操作,以促进被存储在集群文件系统中的文件或其他资源的附加状态可见性。这继而可以使得文件或其他资源能够直接从盘被读取,例如,在某些情况下,经由NVMeoF。注意,虽然下面的描述涉及针对盘而执行的操作,但是在不脱离说明书的范围的情况下,除了或代替盘,还可以使用其他类型的存储区域。
方法500开始于502,在502中,读取发起方(例如,其是经由发起方节点10实现的)获取锁定,以从负责目标文件或资源的锁定协调器(例如,锁定协调器节点20)获取对该文件或资源的读取访问。在一种实现中,取决于由锁定协调器维护的与目标文件或资源相关联的参考计数的值(例如,经由计数维护组件410),在502授予读取发起方的锁定可以是直接或间接读取锁定。例如,如果目标文件或资源的参考计数大于零,则这可以指示在与至少一个参与者节点30相关联的非易失性存储器中存在对文件或资源的未完成的更新。结果,在502,锁定协调器可以授予间接读取锁定,使得读取发起方经由具有未完成的更新的(多个)参与者访问目标文件或资源。替代地,如果文件或资源的参考计数等于零,则这可以指示对文件或资源不存在未决更新,从而使得锁定协调器能够在502向读取发起方授予直接读取锁定,以在不涉及(多个)负责参与者的情况下直接访问文件或资源。
在504,读取发起方可以读取元数据、布局信息和/或其他合适的信息,这些信息描述了要经由写入操作来读取的数据的位置。
在506,方法500可以基于在502处授予读取发起方的锁定的类型来进行分支。如果在502处向读取发起方授予间接读取锁定,则方法500可以从506进行到508,在508中,读取发起方可以向拥有包含与目标文件或资源相关联的数据的(多个)盘的(多个)参与者发送读取请求。接下来,在508,(多个)参与者可以通过从其本地非易失性存储装置(例如,如果存在的话)或从其(多个)相应盘和/或与这些(多个)盘相关联的高速缓存返回对应数据来响应于在506处提供的读取请求。
图6中的系统600进一步详细地示出了用于间接读取锁定的方法500的示例操作。如图6所示,发起方节点10的读取发起组件610(这里是读取发起方)可以促进从发起方节点10向给定资源的锁定协调器节点20发送对针对该资源的读取访问的请求。如果锁定协调器节点20例如基于资源的参考计数大于零而确定存在与资源相关联的未完成的写入或其他更新,则锁定协调器节点20的访问控制组件620可以向发起方节点10提供间接读取授权,该间接读取授权促进使得发起方节点10能够经由相应参与者节点30来访问资源,该参与者节点30管理与该资源对应的数据被存储在其上的相应存储区域40。参与者节点30继而可以向发起方节点10提供与被存储在参与者节点30的本地存储设备50处的资源相关联的尚未被写入存储区域40的暂存数据(如果这样的数据存在于参与者节点30处)。如果参与者节点30处不存在暂存和未冲刷的数据,则参与者节点30可以转而返回与被存储在存储区域40上的资源对应的数据。
返回到方法500,如果在502处向读取发起方授予直接读取锁定,则方法500可以从506进行到512,在512中,读取发起方可以直接访问盘上的文件或资源,例如,而无需经过(多个)对应盘的(多个)参与者节点。
图7中的系统700进一步详细地示出了用于直接读取锁定的方法500的示例操作。类似于图6中的系统600,发起方节点10处的读取发起组件610可以促进向锁定协调器节点20发送对针对资源的读取访问的请求。响应于锁定协调器节点20例如基于资源的参考计数等于零而确定不存在对资源的未完成的更新,锁定协调器节点20的访问控制组件620可以向发起方节点10提供直接读取授权,该直接读取授权促进发起方节点10对被存储在存储区域40上的资源的直接访问,例如独立于管理与该资源相关联的存储区域40的任何参与者节点30。
再次返回方法500,在508-510处针对间接读取授权的动作、或者512处针对直接读取授权的行动完成之后,方法500可以在514处结束,在514中,读取发起方可以核对与资源对应的数据并且返回资源的锁定,例如,经由从读取发起方到锁定协调器的通知。在一种实现中,在514处释放对资源的锁定表示,读取发起方已经完成对资源的访问,从而使得锁定能够被授予其他请求者以用于对资源的进一步操作。
现在参考图8,示出了根据本文中描述的各种实现的促进集群文件系统中的崩溃恢复的系统800的框图。为了简洁起见,省略了对本文中描述的其他实施例中采用的类似元素的重复描述。在一种实现中,系统800的发起方节点10、锁定协调器节点20和(多个)参与者节点30可以经由根据2PC协议等而进行的事务来促进对由相应存储区域40存储的文件的写入操作,例如,如将在下面参考图9所述的。为了保护该修改的写入过程免受过程的相应阶段的节点故障和/或断开连接的影响,系统800包括崩溃恢复组件810,崩溃恢复组件810可以响应于写入操作期间节点10、20、30中的一个或多个变得不可用而例如通过将文件修改为已知稳定状态来促进文件的恢复。例如,崩溃恢复组件810可以阻止在写入操作期间节点10、20、30的故障或断开连接导致泄漏的参考,这些参考将导致(永久)拒绝读取直接访问,丢失的参考可能导致读取陈旧或损坏数据,或者其他问题。
在一种实现中,崩溃恢复组件810可以经由扩展的锁重建过程来恢复给定资源的参考计数。每当集群的组成发生变化时,例如,由于节点分别获取或失去连接而从活动节点集中添加或删除节点,锁定的重新建立可能导致任何锁持有者重新断言其当前与(新的)锁定协调器持有的所有锁定。该过程可以恢复例如锁定协调器上在崩溃或断开连接之后丢失的任何锁定状态信息。崩溃恢复组件810可以根据需要或请求使用并且扩充该过程,以还恢复文件或资源的参考计数。
图9中的图900描绘了与文件系统写入和/或类似操作相关联的2PCv2事务的示例消息传递流。图900所示的消息传递流可以在发起对一个或多个数据或元数据块(例如,与文件或其他资源对应的一个或多个块等)的更新的发起方(例如,发起方节点10)、维护要更新的块的锁定状态的锁定协调器(例如,锁定协调器节点20)、以及管理与块相关联的盘或其他存储区域40的相应参与者(例如,参与者节点30)(这里是两个参与者)之间进行。虽然图900中示出了一个发起方、一个锁定协调器和两个参与者以促进说明,但是应当理解,与图900所示的那些类似的消息传递流也可以用于涉及多个发起方和/或参与者的事务。例如,在不脱离本说明书的范围的情况下,可以将与图900所示的类似的消息传递流用于涉及一个参与者或三个或更多个参与者的事务。此外,在图900中所示的消息传递流的相应阶段示出了相应潜在故障点60、62、64、66,这将在对消息传递流进行讨论之后进行进一步详细的讨论。
如时间910所示,发起方可以向锁定协调器发送对文件的写入访问锁定的请求。该请求可以包括与文件的参考计数相关联的信息,例如,由参考计数组件110所确定的,如系统100中所示和/或如关于方法300中的302进一步所述的。这里,发起方确定写入操作将导致对文件的两个部分(例如,块)的更新,因此发起方将参考计数设置为2,并且将该参考计数发送到锁定协调器。因此,在图900中所示的示例中,针对将参与事务的每个参与者存在一个参考。然而,应当注意,参考计数可以与事务的参与者的数目不同,例如,基于每个参与者要修改的块的数目和/或基于其他标准。
在时间920,发起方可以发送与事务相关联的写入数据,例如,以写入和/或增量消息的形式,其共同包括要在相应参与者处更新的块的副本。虽然在图900中未示出,但是由发起方在时间920发送的每个写入或增量消息(例如,write_block、write_delta、write_elide、write_inode、lin_super_write等)也可以被发送到为图900中所示的参与者提供冗余的附加参与者,例如,辅助或伙伴参与者。在一种实现中,发起方可以并行地向相应参与者发送写入数据,例如,作为指向所有参与者的公共消息,和/或在单独的消息中。如在920处进一步示出的,由发起方在时间920发送给参与者的消息还可以包括与文件对应的锁定密钥和/或其他值。在一种实现中,锁定密钥可以使得参与者能够在事务完成之后在提供给锁定协调器的通知中引用文件。
在时间920传输写入和/或增量消息之后,事务的后续解决可以按照2PCv2协议进行。例如,发起方可以在时间930向相应参与者发送事务准备(txn_prepare)消息,相应参与者继而可以分别在时间940和942用事务准备(txn_prepared)消息进行响应。响应于接收到txn_prepared消息,发起方然后可以在时间950向相应参与者发送事务提交(txn_commit)消息,相应参与者继而可以分别在时间960和962用事务提交(txn_committed)消息进行响应。在该阶段,由发起方在时间920发送到相应参与者的写入数据由参与者暂存在相应本地存储设备(例如,如图6至图7所示的本地存储设备50)处,以传输到由相应参与者管理的存储区域。
响应于发起方接收到由参与者在时间960和962发送的txn_committed消息,发起方可以通过在时间970向锁定协调器发送消息以释放对文件的锁定来开始事务的终止,从而使得能够对文件执行其他事务。此外,虽然在图900中未示出,但是发起方还可以向相应参与者发送返回txn_committed消息,以便确认事务。
作为对参与者提交事务并且发送如时间960和962所示的对应txn_committed消息的进一步响应,参与者可以在980将任何暂存的写入数据冲刷到盘。随后,如图900所示的消息传递流可以在时间990和992结束,其中相应参与者可以向锁定协调器提供通知,该通知包括在时间920提供给参与者的锁定密钥或其他密钥值。这继而可以使得锁定协调器能够递减文件的参考计数,例如,如以上关于图4所述。
如上所述,系统800的崩溃恢复组件810可以促进在写入操作中涉及的一个或多个计算节点发生故障或断开连接之后恢复文件和/或锁定状态。下文将进一步详细描述可以利用的恢复过程的各种实例,例如,参考图9中的故障点60、62、64、66。然而,应当注意,其他故障条件也可以由崩溃恢复组件810以与下面描述的恢复过程类似的方式来处理。
在一种实现中,如果锁定协调器在图900所示的过程中的任何时刻崩溃或以其他方式发生故障,则崩溃恢复组件810可以促进新锁定协调器的指定。随后,任何锁定和/或参考计数持有者都可以向新锁定协调器重新断言其锁定和/或参考状态。
如图900中故障点60所示,如果在获取锁定和参考计数之后,但在向任何参与者发送引用密钥和/或写入数据之前,写入发起方崩溃或以其他方式变得不可用,则该发起方将不是锁定重新断言的一部分。因此,崩溃恢复组件810可以简单地移除与目标文件对应的锁定和参考计数,例如,通过取消写入操作并且将文件的参考计数设置为零。这些步骤可以由崩溃恢复组件810进行,例如,由于此时写入发起方的崩溃没有导致对文件的任何更新。
如图900中的故障点62所示,如果在向参与者发送参考密钥和写入数据之后,但在到达事务的提交阶段之前,写入发起方崩溃或以其他方式变得不可用,则崩溃恢复组件810可以使参与者重新断言其所拥有的参考计数,而不重新断言锁定本身。此外,由于写入操作没有进行到提交阶段,所以崩溃恢复组件810可以使参与者中止事务。此外,参与者可以响应于中止操作而向锁定协调器提交通知以递减(多个)相关联的参考计数,例如,以与上面关于图4描述的方式类似的方式。
类似地,如图900中的故障点64所示,如果参与者在事务到达准备阶段之前崩溃或以其他方式变得不可用,则崩溃恢复组件810可以中止事务,并且可以相应地释放与事务相关联的任何锁定和/或参考计数。事务中仍然可用的任何节点都可以释放其锁定和参考计数,作为中止处理的一部分,并且崩溃和/或断开连接的(多个)节点可以被配置为不重新断言其参考计数,并且在重新加入集群之后也中止事务。
如图900中的故障点66所示,如果参与者在准备好事务更新之后崩溃或以其他方式变得不可用(例如,通过在将写入数据冲刷到盘之前将写入数据暂存在本地存储装置中),则崩溃的参与者将无法重新断言其参考计数,但仍在其本地存储装置中保留潜在的提交更新。此外,与崩溃的参与者相关联的驱动器在参与者自身能够再次访问之前不可用。因此,当参与者再次变得可用时,崩溃恢复组件810可以阻止对由崩溃的参与者管理的驱动器的直接NVMeoF访问,例如,对由发起方节点独立于崩溃的参与者对受影响的(多个)驱动器的访问,直到参与者建立了所有进行中事务的结果并且解决了这些事务,例如,通过冲刷或中止与这些事务相关联的数据。在一种实现中,这可以通过利用盘上的持久保留系统来实现,例如,当盘位于单独的外壳中时,或者通过不在参与者的NVMeoF控制器上公布受影响盘的可用性来实现。
如果参与者在事务提交之后但在能够将数据冲刷到盘之前崩溃或以其他方式变得不可用,则崩溃恢复组件810也可以执行与针对故障点66而描述的操作类似的操作。因此,在解决所有事务并且将其冲刷到盘之前,可以阻止对(多个)受影响盘的直接访问。
在其中本地非易失性存储装置在多个参与者之间(例如,在主要参与者与辅助或伙伴参与者之间)被复制的实现中,崩溃恢复组件810可以使得辅助参与者能够接管并且重新建立崩溃的主要参与者的参考计数,并且即使在崩溃的参与者已经恢复之前也允许对(多个)受影响盘的直接访问。
接下来参考图10,示出了根据本文中描述的各种实现的促进集群文件系统中的直接读取的方法1000的流程图。在1002,被操作地耦合到处理器的系统可以(例如,通过参考计数组件110)针对由系统存储的文件或其他资源(例如,经由与系统相关联的一组盘或其他存储区域40)的写入操作,确定由系统的发起方节点(例如,与参考计数组件110相关联的发起方节点10)发起的计数值,计数值表示将由与写入操作相关联的写入数据来修改的系统的目标存储区域的数目。
在1004,系统可以促进(例如,通过锁定协调器接口组件120)从发起方节点向系统的锁定协调器节点(例如,锁定协调器节点20)传送在1002处确定的针对资源的计数值。
在1006,系统可以促进(例如,通过参与者接口组件130)从发起方节点向分别被指派给目标存储区域的系统的相应参与者节点(例如,参与者节点30)传送与写入操作相关联的写入数据和针对写入操作的密钥值。
在1008,系统可以促进(例如,通过参与者接口组件130)响应于相应参与者将写入数据写入目标存储区域(例如,如图900中的时间980处所示)而使相应参与者节点传送包括在1006处提供给参与者节点的密钥值的相应通知。
如上所述的图2、图3、图5和图10示出了根据本公开的某些实施例的方法。尽管为了解释的简单性,已经将方法示出和描述为一系列动作,但是应当理解和理解,本公开不受动作顺序的限制,因为一些动作可以以不同顺序和/或与本文所示和所述的其他动作同时发生。例如,本领域技术人员将理解并且理解,方法可以替代地表示为一系列相互关联的状态或事件,诸如在状态图中。此外,实现根据本公开的某些实施例的方法并非需要所有图示的动作。
为了为本文中描述的各种实施例提供附加上下文,图11和下面的讨论旨在提供可以在其中实现本文所述实施例的相应实施例的合适的计算环境1100的简要的一般性描述。虽然以上已经在可以在一个或多个计算机上运行的计算机可执行指令的一般上下文中描述了实施例,但是本领域技术人员将认识到,实施例还可以与其他程序模块组合和/或作为硬件和软件的组合来实现。
通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构等。此外,本领域技术人员将理解,各种方法可以与其他计算机系统配置一起实践,包括单处理器或多处理器计算机系统、小型计算机、大型计算机、物联网(IoT)设备、分布式计算系统以及个人计算机、手持计算设备、基于微处理器或可编程的消费电子产品等,其中的每个操作地耦合到一个或多个相关联的设备。
本文中所示的实施例的示例也可以在分布式计算环境中实践,其中某些任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于本地和远程存储器存储设备两者中。
计算设备通常包括各种介质,这些介质可以包括计算机可读存储介质、机器可读存储介质和/或通信介质,这两个术语在本文中如下以不同方式使用。计算机可读存储介质或机器可读存储介质可以是可以由计算机访问的任何可用存储介质,并且包括易失性和非易失性介质、可移动介质和不可移动介质。作为示例而非限制,计算机可读存储介质或机器可读存储介质可以结合用于存储诸如计算机可读或机器可读指令、程序模块、结构化数据或非结构化数据等信息的任何方法或技术来实现。
计算机可读存储介质可以包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、闪存或其他存储技术、光盘只读存储器(CDROM)、数字多用盘(DVD)、蓝光光盘(BD)或其他光盘存储、磁带、盘存储或其他磁存储设备、固态驱动器或其他固态存储设备、或者可以用于存储期望信息的其他有形和/或非暂态介质。在这方面,本文中应用于存储装置、存储器或计算机可读介质的术语“有形”或“非暂态”应当被理解为仅排除传播暂态信号本身作为修饰语,并且不放弃对本身不仅传播暂态信号的所有标准存储装置、存储器或计算机可读介质的权利。
计算机可读存储介质可以由一个或多个本地或远程计算设备访问,例如,经由访问请求、查询或其他数据检索协议,以对由介质存储的信息进行各种操作。
通信介质通常在数据信号中体现计算机可读指令、数据结构、程序模块或其他结构化或非结构化数据,诸如调制数据信号,例如载波或其他传输机制,并且包括任何信息传递或传输介质。术语“调制数据信号”是指一种信号,其一个或多个特性以将信息编码在一个或多个信号中的方式设置或改变。作为示例而非限制,通信介质包括有线介质(诸如有线网络或直接有线连接)和无线介质(诸如声学、RF、红外和其他无线介质)。
再次参考图11,用于实现本文中描述的各种实施例的示例环境1100包括计算机1102,计算机1102包括处理单元1104、系统存储器1106和系统总线1108。系统总线1108将系统组件(包括但不限于系统存储器1106)耦合到处理单元1104。处理单元1104可以是各种市售处理器中的任何一种。双微处理器和其他多处理器架构也可以用作处理单元1104。
系统总线1108可以是若干类型的总线结构中的任何一种,这些总线结构可以进一步互连到使用各种商用总线架构中的任何一种的存储器总线(具有或不具有存储器控制器)、外围总线和本地总线。系统存储器1106包括ROM 1110和RAM 1112。基本输入/输出系统(BIOS)可以被存储在非易失性存储器中,诸如ROM、可擦除可编程只读存储器(EPROM)、EEPROM,该BIOS包含有助于在计算机1102内的元件之间传输信息的基本例程,诸如在启动期间。RAM 1112还可以包括高速RAM,诸如用于高速缓存数据的静态RAM。
计算机1102还包括内部硬盘驱动器(HDD)1114(例如,EIDE、SATA)、一个或多个外部存储设备1116(例如,磁软盘驱动器(FDD)、记忆棒或闪存驱动器读取器、存储卡读取器等)和光盘驱动器1120(例如,其可以从CD-ROM盘、DVD、BD等读取或写入)。虽然内部HDD1114被示出为位于计算机1102内,但是内部HDD 1114也可以被配置为在合适的机箱(未示出)中用于外部使用。此外,虽然在环境1100中未示出,但是除了或代替HDD 1114,可以使用固态驱动器(SSD)。HDD 1114、(多个)外部存储设备1116和光盘驱动器1120可以分别通过HDD接口1124、外部存储接口1126和光盘驱动接口1128连接到系统总线1108。用于外部驱动器实现的接口1124可以包括通用串行总线(USB)和电气与电子工程师协会(IEEE)1394接口技术中的至少一者或两者。其他外部驱动器连接技术在本文中描述的实施例的考虑范围内。
驱动器及其相关计算机可读存储介质提供数据、数据结构、计算机可执行指令等的非易失性存储。对于计算机1102,驱动器和存储介质适应以合适的数字格式存储任何数据。尽管以上对计算机可读存储介质的描述涉及相应类型的存储设备,但是本领域技术人员应当理解,计算机可读的其他类型的存储介质(无论是当前存在的还是将来开发的)也可以在示例操作环境中使用,并且进一步地,任何这样的存储介质都可以包含用于执行本文中描述的方法的计算机可执行指令。
很多程序模块可以被存储在驱动器和RAM 1112中,包括操作系统1130、一个或多个应用程序1132、其他程序模块1134和程序数据1136。操作系统、应用、模块和/或数据的全部或部分也可以被高速缓存在RAM 1112中。本文中描述的系统和方法可以利用各种商业上可获取的操作系统或操作系统组合来实现。
计算机1102可以选择性地包括仿真技术。例如,管理程序(未示出)或其他中介可以仿真操作系统1130的硬件环境,并且所仿真的硬件可以可选地不同于图11所示的硬件。在这样的实施例中,操作系统1130可以包括托管在计算机1102处的多个虚拟机(VM)中的一个VM。此外,操作系统1130可以为应用1132提供运行时环境,诸如Java运行时环境或.NET框架。运行时环境是允许应用1132在包括运行时环境的任何操作系统上运行的一致执行环境。类似地,操作系统1130可以支持容器,并且应用1132可以是容器的形式,容器是轻量级的、独立的、可执行的软件包,其包括例如应用的代码、运行时、系统工具、系统库和设置。
此外,计算机1102可以启用安全模块,诸如可信处理模块(TPM)。例如,对于TPM,引导组件散列下一实时引导组件,并且等待结果与安全值匹配,然后再加载下一引导组件。该过程可以发生在计算机1102的代码执行堆栈中的任何层,例如,应用于应用执行级别或操作系统(OS)内核级别,从而实现代码执行的任何级别的安全性。
用户可以通过一个或多个有线/无线输入设备(例如,键盘1138、触摸屏1140和指示设备,诸如鼠标1142)将命令和信息输入计算机1102。其他输入设备(未示出)可以包括麦克风、红外(IR)遥控器、射频(RF)遥控器或其他遥控器、操纵杆、虚拟现实控制器和/或虚拟现实头戴式耳机、游戏板、手写笔、图像输入设备(例如,(多个)相机)、姿势传感器输入设备、视觉运动传感器输入设备、情绪或面部检测设备、生物特征输入设备(例如,指纹或虹膜扫描仪)等。这些和其他输入设备通常通过可以耦合到系统总线1108的输入设备接口1144连接到处理单元1104,但是可以通过其他接口连接,诸如并行端口、IEEE 1394串行端口、游戏端口、USB端口、IR接口、接口等。
监视器1146或其他类型的显示设备也可以经由接口连接到系统总线1108,诸如视频适配器1148。除了监视器1146之外,计算机通常还包括其他外围输出设备(未示出),诸如扬声器、打印机等。
计算机1102可以使用经由有线和/或无线通信到一个或多个远程计算机(诸如(多个)远程计算机1150)的逻辑连接在网络环境中操作。(多个)远程计算机1150可以是工作站、服务器计算机、路由器、个人计算机、便携式计算机、基于微处理器的娱乐设备、对等设备或其他公共网络节点,并且通常包括相对于计算机1102描述的很多或全部元件,尽管为了简洁起见,仅示出了存储器/存储设备1152。所描绘的逻辑连接包括到局域网(LAN)1154和/或更大的网络(例如,广域网(WAN)1156)的有线/无线连接。这样的LAN和WAN网络环境在办公室和公司中很常见,并且有利于企业范围的计算机网络,诸如内部网,所有这些网络都可以连接到全球通信网络,例如互联网。
当在LAN网络环境中使用时,计算机1102可以通过有线和/或无线通信网络接口或适配器1158连接到本地网络1154。适配器1158可以促进到LAN 1154的有线或无线通信,LAN1154还可以包括设置在其上的用于在无线模式下与适配器1158通信的无线接入点(AP)。
当在WAN网络环境中使用时,计算机1102可以包括调制解调器1160,或者可以通过用于在WAN 1156上建立通信的其他方式(诸如通过互联网)连接到WAN 1156的通信服务器。调制解调器1160(可以是内部或外部的并且是有线或无线设备)可以经由输入设备接口1144连接到系统总线1108。在网络环境中,相对于计算机1102或其部分而描绘的程序模块可以被存储在远程存储器/存储设备1152中。所示的网络连接是示例,并且可以使用在计算机之间建立通信链路的其他方式。
当在LAN或WAN网络环境中使用时,除了或代替上述外部存储设备1116,计算机1102可以访问云存储系统或其他基于网络的存储系统。通常,计算机1102与云存储系统之间的连接可以通过LAN 1154或WAN 1156来建立,例如分别通过适配器1158或调制解调器1160。在将计算机1102连接到相关联的云存储系统时,外部存储接口1126可以在适配器1158和/或调制解调器1160的帮助下,像管理其他类型的外部存储一样管理由云存储系统提供的存储。例如,外部存储接口1126可以被配置为提供对云存储源的访问,就好像这些源被物理连接到计算机1102一样。
计算机1102可以可操作用于与操作地被设置在无线通信中的任何无线设备或实体通信,例如打印机、扫描仪、台式机和/或便携式计算机、便携式数据助理、通信卫星、与无线可检测标签相关联的任何设备或位置(例如,售货亭、报摊、货架等)以及电话。这可以包括无线保真(Wi-Fi)和无线技术。因此,通信可以是与传统网络一样的预定义结构,或者仅仅是至少两个设备之间的自组织通信。
以上描述包括各种实施例的非限制性示例。当然,为了描述所公开的主题,不可能描述组件或方法的每个可想到的组合,并且本领域技术人员可以认识到,各种实施例的其他组合和排列是可能的。所公开的主题旨在包括落入所附权利要求的精神和范围内的所有这样的改变、修改和变化。
关于由上述组件、装置、电路、系统等执行的各种功能,除非另有说明,否则用于描述这样的组件的术语(包括对“手段”的引用)还应包括执行所述组件的指定功能的任何结构(例如,功能等效物),即使在结构上不等同于所公开的结构。此外,虽然所公开的主题的特定特征可以仅针对若干实现中的一个而被公开,但是这样的特征可以与其他实现的一个或多个其他特征相结合,这对于任何给定或特定应用来说都是期望的和有利的。
本文中使用的术语“示例性”和/或“示范性”旨在表示用作示例、实例或说明。为了避免疑义,本文中公开的主题不受这样的示例的限制。此外,本文中描述为“示例性”和/或“示范性”的任何实施例或设计不一定被解释为优于或优选于其他实施例或设计,也不表示排除本领域技术人员已知的等效结构和技术。此外,在说明书或权利要求书中使用术语“包括(includes)”、“具有(has)”、“包含(contains)”和其他类似词语的范围内,这些术语旨在具有包括性,其方式类似于作为开放过渡词的术语“包括(comprising)”,而不排除任何附加或其他元素。
本文中使用的术语“或”旨在表示包括性的“或”,而不是排他性的“或”。例如,短语“A或B”旨在包括A、B以及A和B两者的实例。此外,本申请和所附权利要求中使用的冠词“一个(a)”和“一个(an)”通常应解释为“一个或多个”,除非另有规定或从上下文中清楚地指向单数形式。
本文中使用的术语“集合”不包括空集,即其中没有元素的集合。因此,主题公开中的“集合”包括一个或多个元素或实体。同样,本文中使用的术语“组”是指一个或多个实体的集合。
除非上下文另有明确规定,否则权利要求中使用的术语“第一”、“第二”和“第三”等仅为清楚起见,而不以其他方式指示或暗示任何时间顺序。例如,“第一确定”、“第二确定”和“第三确定”并不表示或暗示第一确定将在第二确定之前做出,反之亦然,等等。
本文中提供的主题公开的所示实施例的描述(包括摘要中所描述的内容)并不旨在穷举或将所公开的实施例限制为所公开的精确形式。尽管本文中出于说明的目的描述了具体的实施例和示例,但是本领域技术人员可以认识到,在这样的实施例和示例的范围内考虑的各种修改是可能的。在这方面,尽管本文中结合各种实施例和相应附图描述了主题,但在适用的情况下,应当理解,可以使用其他类似的实施例,或者可以对所描述的实施例进行修改和添加,以执行所公开的主题的相同、类似、可替换、或替代功能,而不偏离所公开的主题。因此,所公开的主题不应限于本文中描述的任何单个实施例,而是应根据以下所附权利要求在广度和范围上进行解释。
Claims (20)
1.一种数据存储系统,包括:
存储器,存储可执行组件;以及
处理器,执行被存储在所述存储器中的所述可执行组件,其中所述可执行组件包括:
参考计数调整组件,针对由所述数据存储系统的发起方节点发起的对由所述数据存储器系统存储的资源的写入操作,确定针对所述资源的参考计数值,所述参考计数值包括与所述数据存储系统相关联的受影响存储区域的数目,所述受影响存储区域将利用与所述写入操作相关联的写入数据而被改变;
锁定协调器接口组件,促进从所述数据存储系统的所述发起方节点向所述数据存储系统的锁定协调器节点发送针对所述资源的所述参考计数值;以及
参与者接口组件,促进从所述数据存储系统的所述发起方节点向分别被指派给所述受影响存储区域的所述数据存储系统的相应参与者节点发送与所述写入操作相关联的所述写入数据和与所述写入操作对应的锁定密钥,其中所述锁定密钥使所述相应参与者节点响应于所述相应参与者节点将与所述写入操作相关联的所述写入数据冲刷到所述受影响存储区域而向所述锁定协调器节点提供包括所述锁定密钥的相应通知。
2.根据权利要求1所述的数据存储系统,其中所述可执行组件还包括:
计数维护组件,响应于所述锁定协调器接口组件促进向所述锁定协调器节点发送针对所述资源的所述参考计数值,使所述锁定协调器节点将被指派给所述资源的参考计数递增所述参考计数值。
3.根据权利要求2所述的数据存储系统,其中所述计数维护组件响应于所述锁定协调器节点从所述参与者节点中的参与者节点接收到包括所述锁定密钥的所述相应通知中的通知,使所述锁定协调器节点递减被指派给所述资源的所述参考计数。
4.根据权利要求3所述的数据存储系统,其中所述发起方节点是写入发起方节点,并且其中所述可执行组件还包括:
读取发起组件,促进从所述数据存储系统的读取发起方节点向所述锁定协调器节点发送对针对所述资源的读取访问的请求;以及
访问控制组件,响应于所述读取发起组件促进对针对所述读取访问的所述请求的所述发送,并且进一步响应于由所述锁定协调器节点指派给所述资源的所述参考计数被确定为等于零,促进由所述读取发起方节点独立于所述相应参与者节点对所述资源的访问。
5.根据权利要求3所述的数据存储系统,其中所述发起方节点是写入发起方节点,并且其中所述可执行组件还包括:
读取发起组件,促进从所述数据存储系统的读取发起方节点向所述锁定协调器节点发送对针对所述资源的读取访问的请求;以及
访问控制组件,响应于所述读取发起组件促进对针对所述读取访问的所述请求的所述发送,并且进一步响应于针对所述资源的所述参考计数被确定为大于零,促进使得所述读取发起方节点能够经由所述相应参与者节点访问所述资源。
6.根据权利要求1所述的数据存储系统,其中所述参与者接口组件响应于从所述参与者接口组件接收到所述写入数据而使所述相应参与者节点将与所述写入操作相关联的所述写入数据暂存在与所述相应参与者节点相关联的本地存储设备处,从而产生暂存的写入数据,并且将所述暂存的写入数据冲刷到所述受影响存储区域,并且其中所述可执行组件还包括:
崩溃恢复组件,响应于从包括所述发起方节点和所述相应参与者节点的组选择的节点在所述写入操作期间变得不可用而促进所述资源向已知稳定状态的修改。
7.根据权利要求6所述的数据存储系统,其中所述崩溃恢复组件响应于所述发起方节点在所述参与者接口组件促进与所述写入操作相关联的所述写入数据向所述相应参与者节点的所述发送之前变得不可用,取消所述写入操作并且将针对所述资源的所述参考计数重置为零。
8.根据权利要求6所述的数据存储系统,其中所述崩溃恢复组件响应于所述节点在所述参与者接口组件促进与所述写入操作相关联的所述写入数据向所述相应参与者节点的所述发送之后并且在所述写入数据被暂存在与所述相应参与者节点相关联的所述本地存储设备处之前变得不可用,中止所述写入操作,并且使所述相应参与者节点响应于所述写入操作被中止而向所述锁定协调器节点提供所述相应通知。
9.根据权利要求6所述的数据存储系统,其中所述崩溃恢复组件响应于所述相应参与者节点中的参与者节点在将所述写入数据暂存在与所述参与者节点相关联的本地存储设备处之后并且在所述参与者节点将所述暂存的写入数据冲刷到所述受影响存储区域之前变得不可用,阻止由所述发起方节点独立于所述参与者节点对所述受影响存储区域中的至少一个受影响存储区域的访问,等待所述参与者节点的可用性被恢复和所述写入操作被解决。
10.根据权利要求1所述的数据存储系统,其中所述受影响存储区域对应于从包括存储盘、字节、数据块和包括少于所有所述存储盘的盘的子集的组选择的单元。
11.一种方法,包括:
由被操作地耦合到处理器的系统,针对由所述系统的发起方节点发起的对由所述系统存储的资源的写入操作,确定针对所述资源的计数值,所述计数值表示将由与所述写入操作相关联的写入数据修改的所述系统的目标存储区域的数目;
由所述系统促进从所述发起方节点向所述系统的锁定协调器节点传送针对所述资源的所述计数值;
由所述系统促进从所述发起方节点向分别被指派给所述目标存储区域的所述系统的相应参与者节点传送与所述写入操作相关联的所述写入数据和针对所述写入操作的密钥值;以及
由所述系统促进响应于所述相应参与者节点将所述写入数据写入所述目标存储区域而使所述相应参与者节点传送包括所述密钥值的相应通知。
12.根据权利要求11所述的方法,还包括:
由所述系统响应于所述计数值从所述发起方节点被传送到所述锁定协调器节点,将在所述锁定协调器节点处被指派给所述资源的参考计数递增所述计数值;以及
由所述系统响应于所述锁定协调器节点接收到包括所述密钥值的所述相应通知中的通知,递减在所述锁定协调器节点处被指派给所述资源的所述参考计数。
13.根据权利要求12所述的方法,其中所述发起方节点是写入发起方节点,并且其中所述方法还包括:
由所述系统促进从所述系统的读取发起方节点向所述锁定协调器节点传送对针对所述资源的读取访问的请求;以及
响应于对所述读取访问的所述请求被传送,并且进一步响应于由所述锁定协调器节点指派的针对所述资源的所述参考计数被确定为等于零,由所述系统独立于所述相应参与者节点向所述读取发起方节点授予对所述资源的访问。
14.根据权利要求11所述的方法,还包括:
响应于针对所述写入操作的所述写入数据被所述相应参与者节点接收到,由所述系统指示所述相应参与者节点将所述写入数据暂存在所述相应参与者节点的本地存储设备处,从而产生暂存的写入数据,并且将所述暂存的写入数据写入所述目标存储区域。
15.根据权利要求14所述的方法,还包括:
响应于从包括所述发起方节点和所述相应参与者节点的组选择的节点在所述相应参与者节点接收到所述写入数据之后并且在所述写入数据被暂存在所述相应参与者节点的所述本地存储设备处之前变得不可用,由所述系统中止所述写入操作并且由所述系统指示所述相应参与者节点向所述锁定协调器节点传送所述相应通知。
16.一种包括计算机可执行指令的非暂态机器可读介质,所述计算机可执行指令在由数据存储系统的处理器执行时促进操作的执行,所述操作包括:
针对由所述数据存储系统的发起方节点发起的对由所述数据存储系统存储的资源的写入操作,获取计数值,所述计数值表示将由写入数据经由所述写入操作修改的所述数据存储系统的受影响存储单元的数目;
从所述发起方节点向所述数据存储系统的锁定协调器节点传输所述计数值;
从所述发起方节点向分别管理所述受影响存储单元的所述数据存储系统的相应参与者节点传输所述写入数据和与所述写入操作相关联的密钥值;以及
响应于所述相应参与者节点将所述写入数据记录到所述受影响存储单元,使所述相应参与者节点向所述锁定协调器节点发送包括所述密钥值的相应通知。
17.根据权利要求16所述的非暂态机器可读介质,其中所述操作还包括:
将在所述锁定协调器节点处被指派给所述资源的参考计数递增所述计数值;以及
响应于所述锁定协调器节点接收到包括所述密钥值的所述相应通知中的通知,递减在所述锁定协调器节点处被指派给所述资源的所述参考计数。
18.根据权利要求17所述的非暂态机器可读介质,其中所述发起方节点是写入发起方节点,并且其中所述操作还包括:
从所述数据存储系统的读取发起方节点向所述锁定协调器节点传输对所述资源的读取访问请求;以及
响应于所述读取访问请求,并且进一步响应于由所述锁定协调器节点指派给所述资源的所述计数值被确定为等于零,在没有来自所述相应参与者节点的干预的情况下向所述读取发起方节点授予对所述资源的访问。
19.根据权利要求16所述的非暂态机器可读介质,其中所述操作还包括:
响应于所述写入数据被所述相应参与者节点接收到,使所述相应参与者节点将所述写入数据暂存在所述相应参与者节点的本地存储设备处,从而产生暂存的写入数据,并且进一步使所述相应参与者节点将所述暂存的写入数据记录到所述受影响存储单元。
20.根据权利要求19所述的非暂态机器可读介质,其中所述操作还包括:
响应于所述相应参与者节点中的参与者节点在所述参与者节点的本地存储设备处暂存所述写入数据之后并且在所述参与者节点将所述暂存的写入数据记录到所述受影响存储单元之前变得不可用,阻止所述发起方节点在没有来自所述参与者节点的干预的情况下对所述受影响存储单元中的至少一个受影响存储单元的访问,等待所述参与者节点的可用性被恢复和所述写入操作被解决。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/236,520 | 2021-04-21 | ||
US17/236,520 US11422715B1 (en) | 2021-04-21 | 2021-04-21 | Direct read in clustered file systems |
PCT/US2021/032746 WO2022225540A1 (en) | 2021-04-21 | 2021-05-17 | Direct read in clustered file systems |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117203607A true CN117203607A (zh) | 2023-12-08 |
Family
ID=76306047
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180097359.3A Pending CN117203607A (zh) | 2021-04-21 | 2021-05-17 | 集群文件系统中的直接读取 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11422715B1 (zh) |
CN (1) | CN117203607A (zh) |
DE (1) | DE112021007135T5 (zh) |
WO (1) | WO2022225540A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220393975A1 (en) * | 2021-06-07 | 2022-12-08 | Microsoft Technology Licensing, Llc | Transmitting multi-dimensional data between devices |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6973455B1 (en) * | 1999-03-03 | 2005-12-06 | Emc Corporation | File server system providing direct data sharing between clients with a server acting as an arbiter and coordinator |
US7120631B1 (en) * | 2001-12-21 | 2006-10-10 | Emc Corporation | File server system providing direct data sharing between clients with a server acting as an arbiter and coordinator |
US8145817B2 (en) * | 2009-04-28 | 2012-03-27 | Microsoft Corporation | Reader/writer lock with reduced cache contention |
US20170123674A1 (en) * | 2015-11-03 | 2017-05-04 | Kabushiki Kaisha Toshiba | Storage system that includes a plurality of routing circuits and a plurality of node modules connected thereto |
US11874816B2 (en) * | 2018-10-23 | 2024-01-16 | Microsoft Technology Licensing, Llc | Lock free distributed transaction coordinator for in-memory database participants |
US11507600B2 (en) * | 2019-05-20 | 2022-11-22 | Netapp Inc. | Dependency aware parallel splitting of operations |
-
2021
- 2021-04-21 US US17/236,520 patent/US11422715B1/en active Active
- 2021-05-17 DE DE112021007135.1T patent/DE112021007135T5/de active Pending
- 2021-05-17 WO PCT/US2021/032746 patent/WO2022225540A1/en active Application Filing
- 2021-05-17 CN CN202180097359.3A patent/CN117203607A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
DE112021007135T5 (de) | 2023-12-21 |
WO2022225540A1 (en) | 2022-10-27 |
US11422715B1 (en) | 2022-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10552372B2 (en) | Systems, methods, and computer-readable media for a fast snapshot of application data in storage | |
US11675746B2 (en) | Virtualized server systems and methods including domain joining techniques | |
US10375167B2 (en) | Low latency RDMA-based distributed storage | |
US10496671B1 (en) | Zone consistency | |
US8676851B1 (en) | Executing transactions in distributed storage systems | |
RU2380749C2 (ru) | Способ и система для транзакционных файловых операций по сети | |
US9213717B1 (en) | Managing concurrent I/OS in file systems | |
US8868610B2 (en) | File system with optimistic I/O operations on shared storage | |
US8862561B1 (en) | Detecting read/write conflicts | |
WO2019061352A1 (zh) | 数据加载方法及装置 | |
US20180218024A1 (en) | Distributed Reservation Systems And Methods | |
US20150074070A1 (en) | System and method for reconciling transactional and non-transactional operations in key-value stores | |
JP2023541298A (ja) | トランザクション処理方法、システム、装置、機器、及びプログラム | |
US9910808B2 (en) | Reflective memory bridge for external computing nodes | |
CN117203607A (zh) | 集群文件系统中的直接读取 | |
US11449241B2 (en) | Customizable lock management for distributed resources | |
US11669516B2 (en) | Fault tolerance for transaction mirroring | |
JP2014038564A (ja) | データベースに対する処理を行うシステム及び方法 | |
US11507545B2 (en) | System and method for mirroring a file system journal | |
CN115344550A (zh) | 一种分布式文件系统目录克隆方法、装置及介质 | |
US20220138164A1 (en) | Address mirroring of a file system journal | |
JP7031919B1 (ja) | トランザクション処理システム及び方法 | |
US11416160B1 (en) | Volume operation propagation for synchronous remote copy | |
US20230004448A1 (en) | Balanced winner assignment for deadlock resolution | |
WO2023033153A1 (ja) | トランザクション処理システム及び方法 |
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 |