文件系统的数据一致性语义大概有以下几种
不可修改文件语义规定文件一旦创建便不可修改,针对共享文件的修改操作
将导致创建该文件的一个新版本,该文件的每个版本都被作为一个完整的文件
事务语义通过事务处理机制控制对共享文件的并发访问,隶属于相同事务
的各个文件操作要么全都执行,要么全都不执行,其中间的状态结果对外不可
见,以保证对共享文件操作的原子性和可串行性。
1.UNIX 语义(UNIX Semantics)
这种语义源于 UNIX 的本地文件系统,基于本地时钟(物理的或逻辑的),
任何互斥操作之间都有一个绝对的时间顺序(可能需要借助某些同步/互斥机
制),操作结果由这个确定的操作顺序唯一决定。该语义规定:任何读写操作都
应该基于之前最近的针对该共享文件写操作的结果。如果忽略网络延迟所带来
的影响,上述 UNIX 语义可以推广到分布式文件系统中。
2.会话语义(Session Semantics)
会话语义规定对一个打开的共享文件所进行的修改操作只对操作进程(或客
户节点)本身可见,当该共享文件被关闭之后其修改结果才对其他进程(或客
户节点)可见。
3.类 NFS 语义(NFSAnalogy Semantics)
会话语义面临这样的问题:当同一个共享文件被多个进程(或客户节点)同
时独立打开并且修改,然后再各自独立的关闭时,则该文件的最终内容应该如
何确定?——不论使用哪个进程(或客户节点)的修改结果都可能导致其他进
程(或客户节点)修改结果的非交叠(或称为伪交叠)缺失。
类 NFS 语义对会话语义进行加强,该语义下对共享文件的修改操作与该操
作结果对全局可见之间的时间间隔不能超过某个限定值(暂称为间隔时间),间
隔时间限定了节点 cache 的有效时间以及脏数据写回周期。通过修改该间隔时
义,其下限是关闭时间间隔,语义等价于会话语义。
不可修改文件语义规定文件一旦创建便不可修改,针对共享文件的修改操作
将导致创建该文件的一个新版本,该文件的每个版本都被作为一个完整的文件
对待。
事务语义通过事务处理机制控制对共享文件的并发访问,隶属于相同事务
的各个文件操作要么全都执行,要么全都不执行,其中间的状态结果对外不可
见,以保证对共享文件操作的原子性和可串行性。