现将前段时间分析的glusterfs分布式,冗余部分的部分操作执行过程粘贴出来,供互相学习,欢迎互相探讨:
1、冗余卷创建文件
1)对每个子卷加非阻塞项锁,加锁成功的子卷数等于up子卷,才算加锁成功,否则会解除之前加成功的锁;
2)如果非阻塞锁失败了,会调用阻塞锁进行加锁;
3)在所有的up子卷上创建文件,中间可能有创建失败的,所有创建操作完成后将信息返回给父卷,返回的最后一个子卷创建操作返回的op_errno;
op_ret返回最后一个成功的返回值;
4)设置xattr中的待定标识;
5)解锁
注:如果最后一个子卷创建文件失败呢??;创建文件完成后,会返回哪次返回的属性给客户端内核,让内核做相应的决策呢
2、冗余写文件
1)对每个子卷加非阻塞inde锁,