1. 多客户端并发读写一致性
-
并发写场景
对于同一个chunk不可机器client的并发写,后写的会覆盖之前写的;元数据更新是事务更新,数据更新是写时复制(不覆盖)
对于跨chunk的不同机器client的并发写,juicefs本身是不提供原子保证的,需应用自己调用SetLk接口来实现互斥
对于同机器同一挂载点不同client的并发写,juicefs通过fileWriter.Lock来保证互斥 -
并发读写场景
close-to-open一致性,写者close后open的读者能读到最新
2. 分布式缓存一致性
-
元数据缓存
内核元数据缓存时间受到mount参数控制(只有过期失效),open时默认会绕过内核的文件属性缓存,到达juicefs客户端,如果--opem-cache为false(默认是false),则会绕过客户端内存的文件属性缓存,去元数据服务器同步文件属性 -
数据缓存
数据缓存,在元数据同步发现“已更新”时,会标记失效