moosefs简单学习--mfsmount

分三块来看MOOsefs,mfsmount/metaserver然后就是chunkServer.

mfs_statfs、mfs_lookup…mfs_write、mfs_access是由mfsmount去实现的函数,一共23种文件操作,mfsmount全部要自己去实现一遍。当在fuse注册的挂载点上(默认对应/mnt/mfs)进行文件操作时,fuse就会使用mfsmount的实现去实现这些操作。 例如,我们在/mnt/mfs创建一个text.txt文件,fuse就会调用mfs_create去进行操作(当然需要传递文件名等必要的参数)

23个文件操作:

目录结构的数据被存在了masterserver上,客户端是没有这些数据的。根目录(/mnt/mfs)的ino被定为0。

  1. void mfs_rmdir(fuse_req_t req, fuse_ino_t parentconst char *name) {
  2.     uint32_t nleng;
  3.     int status;
  4.     const struct fuse_ctx *ctx;
  5.  
  6.     /*...........*/
  7.  
  8.     ctx = fuse_req_ctx(req);
  9.     status = fs_rmdir(parent,nleng,(const uint8_t*)name,ctx->uid,ctx->gid);
  10.     status = mfs_errorconv(status);
  11.     if (status!=0) {
  12.         fuse_reply_err(req, status);
  13.     } else {
  14.         fuse_reply_err(req, 0);
  15.     }
  16. }

在客户端,进行mfsmount的OS上,mfsMount一旦启动,相关的thread全部待命/也可能是call-back,先通过儿童组

mfsmount的工作过程

▲mfsmount启动后,首先会读取命令行的参数和配置。

▲然后使用fuse定义好挂载点,并对应上mfsmount实现的文件操作函数。

▲设置好到masterserver的连接参数。

▲启动线程fs_nop_thread(keep alive)用于保持与masterserver的连接状态。fs_receive_thread,连接到masterserver并进行通讯,在masterserver上注册,并做一些初始化工作。(挂接客户端,就直接开始尝试连接masterserver) 

▲开始响应客户端的输入(由fuse中转)。

重点解释下响应用户输入的过程,输入就是我们所做的创建、修改文件的操作,这些操作会被移交到在fuse_lowlevel_ops中定义好的各个具体的函数,在这些具体的函数中去和masterserver进行通信。

每次用户所做一个文件操作,就会生成一个threc类型的数据:threc// 这个数据类型确实太重要了///===fs_createpacket(rec,CUTOMA_FUSE_READ_CHUNK,8); 一般由这个fs_createpacket来创建


===这种架构中,得master-server的压力还是不小的,尤其大量的目录浏览操作来自不同的很多的终端。。

除了read和write外,其它操作都只需要从masterserver获取数据。而read和write操作则需要先和masterserver通信,取得数据所在的chunkserver的地址和端口后,再从chunkserver读写数据。read和write和masterserver通讯的时候仍然使用threc结构//

mfsmount然后更具这些信息与chunkserver通信去获取数据,数据读取到后控制权交还给fuse::::整个fuse的操作过程可以比较长,交给mfsmount可以执行几个调用后,再回掉--回fuse//

读源代码,分析mfsfuse如何实现了23个接口,会有多次调用的,应该在read/write。 而且对应的meta-Server的方法如何实现并返回的很重要。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值