一种基于布尔网络的分布式文件系统一致性方法与流程

摘要: 本发明涉及分布式存储领域,特别涉及一种基于布尔网络的分布式文件系统一致性方法。背景技术:1、分布式文件系统通过将文件数据与元数据分布存储于多个节点,实现文件数据...
一种基于布尔网络的分布式文件系统一致性方法与流程

本发明涉及分布式存储领域,特别涉及一种基于布尔网络的分布式文件系统一致性方法。

背景技术:

1、分布式文件系统通过将文件数据与元数据分布存储于多个节点,实现文件数据的分布式存储与并发访问。文件元数据用于描述文件的属性信息与操作状态,元数据状态包括文件锁定状态、权限持有状态、打开句柄状态、目录项状态、事务状态、校验状态和版本同步状态等多种类型。分布式文件系统中的元数据一致性维护通常采用主从复制、共识协议、版本向量与反熵协议等方式,在节点间进行元数据状态的传播与同步。元数据状态的转换受到文件操作语义的约束,不同元数据状态之间存在逻辑关联关系,文件操作的执行会触发元数据状态的转换。分布式文件系统在运行过程中需要持续维护各节点间元数据状态的一致性,确保文件操作的正确执行。

2、现有分布式文件系统的元数据一致性方案中,元数据状态的合法性判定多基于预设规则或版本号比较,缺乏对元数据状态之间逻辑关联关系的形式化刻画,难以全面描述元数据状态的合法状态范围,导致元数据状态合法性判定的依据不够明确。分布式节点间进行元数据状态同步时,合并后的元数据状态缺乏基于状态空间结构的合法性校验机制,难以在状态同步过程中及时识别元数据状态不一致的情形,不一致状态可能在节点间进一步传播。元数据出现不一致状态时,现有方案的恢复操作缺乏基于状态空间结构的目标态选择依据与执行顺序约束,恢复过程可能对元数据状态产生不必要的修改,恢复后的状态缺乏自动收敛至合法状态的机制。

技术实现思路

1、本发明的目的在于克服现有技术的不足,提供一种基于布尔网络的分布式文件系统一致性方法。

2、本发明的目的是通过以下技术方案来实现的:

3、提供了一种基于布尔网络的分布式文件系统一致性方法,该方法包括以下步骤:

4、s1.对分布式文件系统中文件元数据进行状态位提取,将文件元数据包含的状态位映射为布尔网络节点,每个布尔网络节点取值为布尔量,得到元数据布尔网络;

5、s2.为元数据布尔网络中每个布尔网络节点定义更新函数,更新函数以全部布尔网络节点的当前状态与外部输入向量为自变量,通过更新函数对元数据布尔网络进行演化,计算元数据布尔网络的吸引子与吸引域,得到合法状态空间;

6、s3.将元数据布尔网络状态编码为状态向量,通过状态向量在分布式文件系统节点间进行交换,对交换得到的状态向量进行合并,将合并后状态输入元数据布尔网络执行更新得到更新后状态,检查更新后状态是否处于合法状态空间内;

7、s4.对更新后状态进行吸引域检查,将处于吸引域外的状态标记为异常状态,对异常状态执行恢复操作,将异常状态恢复至吸引子内。

8、进一步的,步骤s1中的状态位提取与布尔网络节点映射,包括以下子步骤:

9、s1.1.从文件元数据中提取状态位,状态位包括文件锁定状态、写权限持有状态、读权限持有状态、打开句柄有效状态、目录项有效状态、事务进行中状态、数据块校验有效状态和元数据版本同步状态;

10、s1.2.将每个状态位映射为一个布尔网络节点,布尔网络节点取值为第一布尔值或第二布尔值,第一布尔值对应状态位的激活状态,第二布尔值对应状态位的未激活状态;

11、s1.3.对计数类状态位对应的布尔网络节点进行阈值映射,计数类状态位包括打开句柄计数和读者数量,将计数类状态位的计数值与设定值进行比较,计数值大于设定值时将计数类状态位对应的布尔网络节点取值映射为第一布尔值,计数值等于设定值时将计数类状态位对应的布尔网络节点取值映射为第二布尔值;

12、s1.4.将经过阈值映射的全部布尔网络节点按照文件元数据的归属关系组合为元数据布尔网络。

13、进一步的,步骤s2中的更新函数定义与吸引子计算,包括以下子步骤:

14、s2.1.为每个布尔网络节点定义更新函数,更新函数以全部布尔网络节点的当前状态与外部输入向量为自变量,更新函数输出对应布尔网络节点下一时刻的布尔值,更新函数由文件元数据状态转换的约束规则推导得到,更新函数以析取范式表示;

15、s2.2.采用异步更新模式通过更新函数对元数据布尔网络进行演化,每个布尔网络节点按自身状态变化触发更新,不采用全局时钟同步更新;

16、s2.3.从元数据布尔网络的每个初始状态出发,按异步更新模式迭代演化直至进入循环,记录全部吸引子,吸引子包括单点吸引子和极限环,单点吸引子对应文件元数据的稳定无操作状态,极限环对应文件元数据的周期性操作状态;

17、s2.4.对每个吸引子计算吸引域,吸引域为演化后最终进入对应吸引子的初始状态集合,吸引域内的状态为合法过渡态,吸引域外的状态为异常态。

18、进一步的,步骤s3中的状态向量交换与合并,包括以下子步骤:

19、s3.1.将元数据布尔网络状态编码为状态向量,状态向量的每一位对应一个布尔网络节点的取值,状态向量附加版本号与节点标识;

20、s3.2.通过gossip协议在分布式文件系统节点间周期性交换状态向量,交换周期为设定值;

21、s3.3.对收到的状态向量与本地状态向量进行版本号比较,取版本号较大的状态向量作为基准状态向量;

22、s3.4.收到的状态向量与本地状态向量版本号相同时,对收到的状态向量与本地状态向量按状态位执行逻辑或操作,逻辑或操作的结果作为合并后状态中对应状态位的取值;收到的状态向量与本地状态向量版本号不同时,将基准状态向量作为合并后状态;

23、s3.5.将合并后状态输入元数据布尔网络执行一步异步更新得到更新后状态,检查更新后状态是否处于合法状态空间内,处于合法状态空间内时更新本地状态并递增版本号,处于合法状态空间外时触发异常状态恢复流程。

24、进一步的,步骤s4中的异常状态检测与恢复,包括以下子步骤:

25、s4.1.在每次元数据布尔网络状态更新或状态向量合并后,检查当前状态是否处于任一吸引子的吸引域内;

26、s4.2.将处于吸引域外的状态标记为异常状态,记录异常状态向量与触发操作,异常状态包括有锁无写者状态、已删除文件仍有打开句柄状态和事务中但版本落后状态;

27、s4.3.计算异常状态到全部吸引子的汉明距离,选择汉明距离最小的吸引子作为恢复目标态;

28、s4.4.确定异常状态与恢复目标态之间需要翻转的布尔网络节点集合,按更新函数约束的顺序依次翻转布尔网络节点取值,每步翻转后检查状态是否进入吸引域;

29、s4.5.布尔网络节点取值翻转完成且状态进入吸引域后,广播恢复后的状态向量,通知分布式文件系统中其他节点同步状态。

30、进一步的,在步骤s1中,对计数类状态位的计数值进行本地维护,计数值的精确值由分布式文件系统节点本地维护,元数据布尔网络仅维护计数类状态位的零值与非零值映射结果,计数类状态位的计数值发生变化时重新执行阈值映射并更新对应布尔网络节点的取值。

31、进一步的,在步骤s2中,对元数据布尔网络的状态空间采用二元决策图进行压缩表示,通过二元决策图枚举全部状态,从全部状态出发计算吸引子与吸引域,二元决策图的节点对应布尔网络节点的取值分支,二元决策图的路径对应元数据布尔网络的状态。

32、进一步的,在步骤s3中,收到文件操作请求时将文件操作请求编码为外部输入向量,文件操作请求包括文件打开操作、文件关闭操作、文件读取操作、文件写入操作、文件加锁操作、文件解锁操作和文件删除操作,将外部输入向量输入元数据布尔网络执行更新,更新后状态处于合法状态空间内时提交文件操作请求并广播状态向量变更,更新后状态处于合法状态空间外时拒绝文件操作请求。

33、进一步的,在步骤s4中,对分布式锁操作中存在文件间锁依赖的情形,将存在文件间锁依赖的文件对应的元数据布尔网络组合为乘积布尔网络,在乘积布尔网络状态空间中检测极限环,极限环中存在双向等待模式时判定为死锁,双向等待模式为第一文件的锁定状态依赖第二文件的写权限释放且第二文件的锁定状态依赖第一文件的写权限释放,选择操作优先级最低的操作发起方执行锁释放。

34、进一步的,在步骤s4.4中,异常状态由未完成操作导致时,根据操作日志执行补偿操作,补偿操作包括回滚未提交事务和释放未正常释放的锁,补偿操作执行完成后继续执行布尔网络节点取值翻转,翻转完成后将状态输入元数据布尔网络执行一步异步更新验证状态是否进入吸引域。

35、本发明的有益效果是:

36、(1)通过将文件元数据状态位映射为布尔网络节点并构建元数据布尔网络,以吸引子与吸引域刻画合法状态空间,使元数据状态的合法性判定具备形式化依据,为分布式一致性维护提供明确判定标准;

37、(2)状态向量在分布式节点间交换合并后输入元数据布尔网络执行更新,结合合法状态空间检查,能够在状态同步过程中及时识别元数据状态不一致的情形;

38、(3)通过汉明距离选择恢复目标态并按更新函数约束顺序翻转布尔网络节点取值,将异常状态引导至吸引域内实现自动恢复,降低元数据不一致引发文件操作异常的概率。