Moosefs


主控服务器 Master server: 192.168.1.1
主控备份服务器 Metalogger server: 192.168.1.2
存储块服务器 Chunk servers: 192.168.1.101 and 192.168.1.102
客户端主机 (clients): 192.168.2.x



主控服务器 Master server 安装
yum -y install gcc zlib-devel zlib fuse fuse-devel fuse-libs ntp

useradd mfs
echo "123" | passwd --stdin mfs

tar zxvf mfs-1.6.20-2.tar.gz
cd mfs-1.6.20-2
./configure --prefix=/usr/local/mfs --with-default-user=mfs \
--with-default-group=mfs --disable-mfschunkserver --disable-mfsmount

make
make install

cd /usr/local/mfs/etc
cp mfsmaster.cfg.dist mfsmaster.cfg
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
cp mfsexports.cfg.dist mfsexports.cfg

cd /usr/local/mfs/var/mfs
cp metadata.mfs.empty metadata.mfs

启动 master
/usr/local/mfs/sbin/mfsmaster start

浏览器监控 master
/usr/local/mfs/sbin/mfscgiserv
iptables
开启 9425:tcp
http://192.168.0.121:9425

iptables
开启端口:9419 9420 9421 9425



备份服务器Backup servermetalogger)安装
useradd mfs
echo "123" | passwd --stdin mfs

tar zxvf mfs-1.6.20-2.tar.gz
cd mfs-1.6.20-2

# .
./configure --prefix=/usr/local/mfs --with-default-user=mfs \
--with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
make
make install

产生配置文件
cd /etc
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

类似地,修改/etc/hosts 文件,增加下面的行:
192.168.1.1 mfsmaster

运行备份服务 mfsmetaloger:
#/usr/local/mfs/sbin/mfsmetalogger start

working directory: /var/lib/mfs
lockfile created and locked
initializing mfsmetalogger modules ...
mfsmetalogger daemon initialized properly

# lsof -i
端口 9419
# ps -ef | grep mfs

停止 metalogger 服务
# mfsmetalogger -s



存储块服务器Chunk servers 安装
useradd mfs
echo "123" | passwd --stdin mfs

tar zxvf mfs-1.6.20-2.tar.gz
cd mfs-1.6.20-2

./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster
make
make install

cd /usr/local/mfs/etc
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg

fdisk -l
分区
mkfs.ext3 /dev/sdb1
mkfs.ext3 /dev/sdc1

mkdir -p /mnt/mfschunks1
mkdir -p /mnt/mfschunks2

mount /dev/sdb1 /mnt/mfschunks1
mount /dev/sdc1 /mnt/mfschunks2

chown -R mfs:mfs /mnt/mfschunks1
chown -R mfs:mfs /mnt/mfschunks2

# cat /usr/local/mfs/etc/mfshdd.cfg
/mnt/mfschunks1
/mnt/mfschunks2

启动 chunk server
/usr/local/mfs/sbin/mfschunkserver start

iptables
开启端口:9422
lokkit --port=9422:tcp -q



客户端安装
客户端主机必须安装 FUSE 软件包
useradd mfs
echo "123" | passwd --stdin mfs

tar zxvf mfs-1.6.20-2.tar.gz
cd mfs-1.6.20-2

./configure --prefix=/usr/local/mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount --with-default-user=mfs --with-default-group=mfs
make
make install

假定客户端的挂接点是 /data1
1.
创建挂接点
mkdir -p /data1

2.
开始挂接操作
# /usr/local/mfs/bin/mfsmount /data1 -H 192.168.0.121

3.
执行 df -h 检查分区情况
# df
h



MooseFS
的特定的操作
1
、设定的目标 目标(goal),是指文件被拷贝的份数,设定了拷贝的份数后是可以通过可以 mfsgetgoal 命令来证实的,也可以通过 mfssetgoal 来改变设定。
例如:
mfsgetgoal
命令查看副本数:
# /usr/local/mfs/bin/mfsgetgoal /data1/app/test.txt
/data1/app/test.txt: 2


mfssetgoal
设置副本 3
# /usr/local/mfs/bin/mfssetgoal 3 /data1/app/test.txt
/data1/app/test.txt: 3


下面设置整个目录数副本为 3-r 选项是递归:
# /usr/local/mfs/bin/mfssetgoal -r 2 /data1/app
/data1/app:
inodes with goal changed: 2
inodes with goal not changed: 0
inodes with permission denied: 0



实际的拷贝份数可以通过 mfscheckfile mfsfileinfo 命令来证实
例如:
# /usr/local/mfs/bin/mfscheckfile /data1/app/test.txt
/data1/app/test.txt:
2 copies: 1 chunks

# ./mfsfileinfo /data1/app/test.txt
/data1/app/test.txt:
chunk 0: 0000000000000001_00000001 / (id:1 ver:1)
copy 1: 192.168.100.101:9422
copy 2: 192.168.100.202:9422


整个目录树的内容摘要可以用一个功能增强的等同于 du -s 的命令 mfsdirinfomfsdirinfo MooseFS 列出具体的信息。
例如: $ mfsdirinfo /mnt/mfs/test/:



MooseFS
维护
一、启动MooseFS集群
最安全的启动MooseFS集群(避免任何读或写的错误数据或类似的问题)的方式是按照以下命令步骤:
1)
、启动 mfsmaster 进程
2)
、启动所有的 mfschunkserver 进程
3)
、启动mfsmetalogger进程(如果配置了 mfsmetalogger) 当所有的chunkservers连接到MooseFS master后,任何数目的客户端可以利用mfsmount去挂载被export的文件系统。(可以通过检查master的日志或CGI监视器来查看是否所有的chunkserver被连接)


二、停止MooseFS集群
安全的停止MooseFS集群:
1)
、在所有的客户端卸载 MooseFS 文件系统(用umount命令或者是其它等效的命令)
2)
、用 mfschunkserver -s 命令停止 chunkserver 进程
3)
、用 mfsmetalogger -s 命令停止 metalogger 进程
4)
、用mfsmaster -s 命令停止master进程


停止 MooseFS
为了安全停止MooseFS 集群,建议执行如下的步骤:
在所有客户端用 umount 命令先卸载文件系统(本例将是: umount /mnt/mfs)
停止chunk server 进程: /usr/sbin/mfschunkserver stop
停止 metalogger 进程: /usr/sbin/mfsmetalogger stop
停止主控 master server 进程: /usr/sbin/mfsmaster stop