mfsmaster可以理解为元数据的意思:::

位置:PREFIX/etc  
mfsmaster.cfg是主配置文件,mfsexports.cfg是被挂接目录及权限设置。


masterserver的启动过程(关键看启动 过程。。。)

1▲首先读取命令行参数和配置文件。如果当前用户是root,切换到默认用户。检查masterserver主进程是否已经启动。

mfsmaster start

启动mfsmetalogger进程

2▲初始化日志。

3▲启动对chunkserver的监听。

4▲启动对客户端的监听。

=====客户端的链接是常连接么?

5▲初始化文件系统,初始化存储文件节点的数组fsnodehash和存储块的数组chunkhash,全部初始化为空。

这个东西----要多少大的内存呢,文件节点+chunk数组:

Server: nginx/1.2.1


 
application/octet-stream是一种在网络通讯协议中定义的内容类型,如果火狐接收到这种类型的内容都会打开下载对话框提示下载,但是,理论上来说,网页都不应该使用这种内容.

Content-Type: application/octet-stream
Connection: keep-alive
Keep-Alive: timeout=65
x-l-fs-attr: 25706496
x-l-fs-inode: 12583682
x-l-fs-size: 4096
x--fs-ctime: Tue, 09 Jul 2013 15:52:43 GMT  ===
x-l-fs-mtime: Tue, 09 Jul 2013 15:52:43 GMT ===
x-l-fs-nlink: 2
x-l-fs-label: 20972033
x-l-fs-mode: 0 ====
x-l-fs-uid: 0 ==
x-ld-fs-gid: 0 ==
x-l-fs-btime: Tue, 09 Jul 2013 15:52:43 GMT---btime?atime

===



1.     uint32_t id;
2.     uint32_t ctime,mtime,atime;
3.     uint8_t type;
4.     uint8_t goal;
5.     uint16_t mode;
6.     uint32_t uid;
7.     uint32_t gid;
8.     uint32_t trashtime;

chunk 链表



1. typedef struct
2.     uint64_t chunkid;
3.     uint32_t version;
4.     uint8_t goal;
5.     uint32_t lockedto;
6.     flist *flisthead;
7. struct
8. } chunk


6▲从元数据存储文件(metadata.mfs)中读取所有的文件节点(fsnode)数据和存储块(chunk)的信息。在读取完数据后会把metadata.mfs重命名为metadata.mfs.back。====〉若发现.back,基本上运行过了

7核心长时间运行的循环中。

▲进行用于数据统计的相关初始化工作。

▲进入到主循环(mainloop)。 

我是一云存储公司实习生,工作就是给mfs源码进行注释和修改--- 业界:联想/xx创 多是基于moosefs完善更好...

存储结构

metadata.mfs是最重要的一个文件,其中保存了所有的元数据,里面的具体内容如下:

imatest教程SFR mastertrim教程_元数据

最前面的是元数据的格式,说明按照什么格式去读取,每个fsnode中的数据可以看前面他的定义,目录、文件并没有分开存放,都作为一个节点,文件节点信息这部分更具maxnodeid可以知道读到什么地方结束。freenode和chunk的结构比较简单,注意chunk结构里面虽然有goal(每个文件需要多少个备份)的值,但是这个值是从chunk所属的fsnode中取得的。