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