Skip to content

Commit e5905f7

Browse files
committed
Add MooseFS
1 parent 79b8f4f commit e5905f7

File tree

3 files changed

+126
-0
lines changed

3 files changed

+126
-0
lines changed

MooseFS/README.md

+126
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
# MooseFS
2+
3+
## MooseFS 架构
4+
5+
MooseFS 主要分为4种服务器,分别提供不同的服务。对应的关系如下:
6+
7+
- Managing server (master server)
8+
是一个单独的服务器,用来管理整个文件系统。它存储了文件系统中每个文件的元数据(包括文件的大小,属性以及文件存储的位置等)。
9+
10+
- Data servers (chunk server)
11+
由若干台机器组成的数据服务器,用来实际存储文件的数据。它们之间还可以互相同步数据(这是因为每个文件在文件系统中可能拥有多个 copy,copy 的数量可以自行配置,见下文)。
12+
13+
- Metadata backup server(s) (metalogger server)
14+
由一台及以上机器组成,用来存储元数据的 `change logs`,并且周期性地从 Managing server 中下载最新的 `main metadata file`。当 Managing server 挂掉的时候,系统会从 `Metadata backup Servers` 中选择一台作为 `Managing server` 使用。
15+
16+
- Clients
17+
使用 `MooseFS` 的客户机。通过 `mfsmount` 进程和 `Managing server` 进行通信执行各种文件操作。
18+
19+
## MooseFS 内部操作流程
20+
21+
`Metadata` 被存储在 `Managing server` 中的内存中,周期性地写回磁盘(并且更新日志)。同时这些内容会被同步到 metaloggers 中。每个文件被分割为若干个 `fragments(chunks)`,每个 `chunk` 是一个单独的文件,存储在 `data server` 上,单个大小最大为64MB。 通过为每个文件设置 “goal” 值来保证该文件的 copy 数量,以此保证文件系统的可靠性。
22+
23+
`Clients` 上的 mfsmount 进程在以下情况会直接和 managing server 通信:
24+
1. 新建/删除文件
25+
2. 读取目录内容
26+
3. 读取/修改属性(个人理解为修改文件系统属性)
27+
4. 改变文件大小
28+
5. 读取/写入文件开始时
29+
6. 修改任何一个特殊文件的 METADATA 时 mfsmount 会直接 data server 通信。
30+
31+
当写入一个文件结束时,mfsmount 会通知 managing server 来修改该文件的元数据。同时,多个 `data server` 之间也会相互通信,来保证相同文件在不同机器上的同步。
32+
33+
这里使用 MooseFS 官网的两张图片说明执行文件操作时的内部执行流程:
34+
35+
![https://github.com/dreamsxin/example/blob/master/MooseFS/img/mfs01.png](https://github.com/dreamsxin/example/blob/master/MooseFS/img/mfs01.png?raw=true)
36+
37+
![https://github.com/dreamsxin/example/blob/master/MooseFS/img/mfs02.png](https://github.com/dreamsxin/example/blob/master/MooseFS/img/mfs02.png?raw=true)
38+
39+
## 安装与配置
40+
41+
Ubuntu:
42+
```shell
43+
# wget -O - http://ppa.moosefs.com/moosefs.key | apt-key add -
44+
wget http://ppa.moosefs.com/stable/apt/moosefs.key
45+
sudo apt-key add moosefs.key
46+
# echo "deb http://ppa.moosefs.com/moosefs-3/apt/ubuntu/trusty trusty main" > /etc/apt/sources.list.d/moosefs.list
47+
echo "deb http://ppa.moosefs.com/stable/apt/ubuntu/trusty trusty main" > /etc/apt/sources.list.d/moosefs.list
48+
apt-get update
49+
```
50+
51+
For Master Servers:
52+
```shell
53+
# apt-get install moosefs-master
54+
# apt-get install moosefs-cli
55+
sudo apt-get install moosefs-ce-master
56+
```
57+
配置:
58+
```shell
59+
cd /etc/mfs
60+
cp mfsmaster.cfg.dist mfsmaster.cfg
61+
cp mfsexports.cfg.dist mfsexports.cfg
62+
```
63+
64+
修改`mfsexports.cfg`中第一行,该行表示访问权限,在最后添加`,password=pwdtext`,为文件系统添加密码。
65+
修改`/etc/default/moosefs-ce-master`中的`MFSMASTER_ENABLE``true`,使得该服务开机启动。
66+
通过service命令控制该服务的开启等操作:
67+
```shell
68+
sudo service moosefs-ce-master start
69+
```
70+
71+
For Chunkservers:
72+
```shell
73+
# apt-get install moosefs-chunkserver
74+
sudo apt-get install moosefs-ce-chunkserver
75+
```
76+
配置如同上一步:
77+
```shell
78+
cd /etc/mfs
79+
cp mfschunkserver.cfg.dist mfschunkserver.cfg
80+
cp mfshdd.cfg.dist mfshdd.cfg
81+
```
82+
`mfshdd.cfg`中添加:
83+
```text
84+
/mnt/mfschunk1
85+
/mnt/mfschunk2
86+
```
87+
然后手动创建上面的两个目录,然后修改用户 mfs 的权限,使其能够写入该分区:
88+
```shell
89+
chown -R mfs:mfs /mnt/mfschunks1
90+
chown -R mfs:mfs /mnt/mfschunks2
91+
```
92+
最后修改
93+
94+
`/etc/default/moosefs-ce-chunkserver`中的`MFSCHUNKSERVER_ENBLE``true`保证开机启动,并通过service来控制当前运行情况:
95+
```shell
96+
sudo service moosefs-ce-chunkserver start
97+
```
98+
99+
For Metaloggers:
100+
```shell
101+
apt-get install moosefs-metalogger
102+
```
103+
104+
For Clients:
105+
```shell
106+
apt-get install moosefs-client
107+
```
108+
挂载:
109+
```shell
110+
mkdir -p /mnt/mfs
111+
mfsmount /mnt/mfs -p -H mfsmaster-server
112+
```
113+
114+
安装 MooseFS Client 之后,可以在 `/etc/fstab` 增加条目实现自动加载`MooseFS`
115+
```text
116+
mfsmount /mnt/mfs fuse defaults 0 0
117+
```
118+
119+
## 错误恢复
120+
121+
启动 `master server` 的时候提示找不到 `metadata.mfs` 文件,启动失败。这是因为非法关机导致主元数据文件(main metadata file)不完整,需要将元数据变更日志整合进该文件中。只需执行以下命令:
122+
123+
```shell
124+
mfsmaster -a
125+
```
126+
然后重启服务即可。

MooseFS/img/mfs01.png

77.4 KB
Loading

MooseFS/img/mfs02.png

89.3 KB
Loading

0 commit comments

Comments
 (0)