zhengwei_zw 发表于 2009-04-06 20:14

FreeBSD下建立MFS分布式文件系统

MFS分布式文件系统架设笔记
什么是MFS文件系统?
    Moose File System 是一个具备容错功能的网络分布式文件系统,它将数据分布在网络中的不同服务器上,MooseFS 通过 FUSE 使之看起来就是一个 Unix 的文件系统。
MFS文件系统个人理解: 将分布在各个范围的计算机,将他们未使用的分区统一进行管理使用的一种文件系统.
http://www.moosefs.com/img/architecture.png
MFS文件系统结构:
包含3种角色:
      管理服务器managing server (master)
      数据存储服务器data servers (chunkservers)
      客户机挂载使用client computers

个人理解3种角色作用:
      管理服务器:负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝
      数据存储服务器:负责连接管理服务器,听从管理服务器调度,提供存储空间.
      客户端:挂接远程管理服务器上所管理的数据存储服务器,通过fuse内核接口.看起来共享的文件系统和
本地unix文件系统使用一样的效果.


架设过程:

服务器2台
(最少是2台,一台服务器做管理服务器,数据存储服务器,以及客户端3种角色,另外一台计算机做数据存储和客户端)
称第1台计算机为A机,机器上跑3种角色,第2台计算机称B机,跑两种角色.要是你计算机多的话可以只跑1种客户端角色或者数据存储角色,根据具体情况决定.
操作系统:FreeBSD6.x or Freebsd 7.x   minni安装 升级ports树
1.在A机器上安装
/sysutils/fusefs-kmod
./devel/pkg-config
这两个ports包
pkg_info的结果为
b# pkg_info
fusefs-kmod-0.3.9.p1.20080208 Kernel module for fuse
fusefs-libs-2.7.2_1 FUSE allows filesystem implementation in userspace
libiconv-1.9.2_2    A character set conversion library
pkg-config-0.21   A utility to retrieve information about installed libraries
b# 然后在rc.conf中添加
fusefs_enable="YES"
2.在http://www.moosefs.com/index.html下载mfs-1.5.12.tar.gz
#fetch http://www.moosefs.com/files/mfs-1.5.12.tar.gz
#tar xvzf mfs-1.5.12.tar.gz
#cd mfs-1.5.12
#./configure (这样制作出来的bin文件和sbin文件以及元数据在/usr/local/sbin和/usr/local/bin,配置文件在/usr/local/etc 元数据存放在/usr/local/var/mfs下)默认不带任何参数编译出来的,可以做数据和管理服务器.
#make && make install 就完成了两种角色服务器的安装
##################下面是在A机上编译出客户机的执行文件#################################
#make clean && ./configure --prefix=/clien --enable-mfsmount && make && make install即可,在/client目录下就产生了一个mfs的客户端连接软件
2.在B机器上安装
/sysutils/fusefs-kmod
./devel/pkg-config这两个ports包
pkg_info的结果为
b# pkg_info
fusefs-kmod-0.3.9.p1.20080208 Kernel module for fuse
fusefs-libs-2.7.2_1 FUSE allows filesystem implementation in userspace
libiconv-1.9.2_2    A character set conversion library
pkg-config-0.21   A utility to retrieve information about installed libraries
b#
然后在rc.conf中添加
fusefs_enable="YES"
2.在http://www.moosefs.com/index.html下载mfs-1.5.12.tar.gz
#fetch http://www.moosefs.com/files/mfs-1.5.12.tar.gz
#tar xvzf mfs-1.5.12.tar.gz
#cd mfs-1.5.12
#./configure --disable-mfsmaster --enable-mfsmount(这样制作出来的二进制文件可以做数据存储服务器和有了mfsmount文件,默认编译是没有mfsmount的).
#make && make install 就完成了数据存储角色服务器和客户端的安装

下面开始配置
A机器上挂载一个空闲的,比较大的分区
#mount /dev/ad1s1 /mnt/mfs
#cd /usr/local/etc
#ls
-rw-r--r--1 rootwheel434 Mar 31 11:34 mfschunkserver.cfg
-rw-r--r--1 rootwheel   36 Mar 31 11:34 mfshdd.cfg
-rw-r--r--1 rootwheel425 Mar 31 11:34 mfsmaster.cfg

解释这3个文件的作用
mfsmaster.cfg是管理服务器初始化文件,不需要任何修改既可使用.里面主要就是设置监听端口这些.
我们用默认既可
mfschunkserver.cfg是数据存储文件配置文件.当数据存储和管理服务器不在一起的时候,要修改
# MASTER_HOST = mfsmaster这个值为管理服务器的ip地址或主机名
# MASTER_PORT = 9420
mfshdd.cfg这个是在mfschunkserver.cfg中制定的文件名,这个文件里面存放本地存储分区路径.
我这里mfshdd.cfg内容就是一行
#cat mfshdd.cfg
/mnt/mfs
#启动顺序
启动管理服务器 ----->启动数据存储服务器---->挂接管理服务器mfs文件系统
#/usr/local/sbin/mfsmaster start
#netstat -na|grep 942 看是否有两个942* 为listen的端口,若有就开启成功了.
#/usr/local/sbin/mfschunkserver start
#netstat -na|grep 942 查看是不是多了一个9422的端口,若有则开启成功了
也可以使用sockstat -4查看
如果启动不成功,一般情况就是挂载目录权限问题.默认编译的mfs是按nobody权限来的.要修改/mnt/mfs权限为nobody既可.
经过上面两部管理服务器和存储服务器就启动起来了.下面是进行本地挂载和在B机器上挂载
在A机器上 执行
#/client/bin/mfsmount -h A机ip -w /mfs   将管理机ip 挂接到/mfs目录
A机器上就可以使用mfs系统了,挂接点是/mfs

下面是加入B机的数据存储和B机自己使用mfs
B机
#配置挂接空闲的,比较大的分区,然后修改mfshdd.cfg内容为挂接地点.修改mfschunkserver.cfg的MASTER_HOST =值
启动mfschunkserver
#/usr/local/sbin/mfschunkserver start
挂接管理机的mfs文件系统
#/client/bin/mfsmount -h A机ip -w /mfs

我在做MFS试验的时候,田逸给了我些帮助,在这里感谢他。

用vmware做mfs数据存储服务器的时候,虚拟的硬盘一定要大点,最好大于256M的硬盘。否则used永远都是100%

我的生产系统

[ 本帖最后由 zhengwei_zw 于 2009-4-14 15:45 编辑 ]

axlrose 发表于 2009-04-06 20:17

zhengwei_zw 的强文喔,顶起:mrgreen:
http://www.dragonflybsd.org/hammer/ 应该是跟hammer是一类的FS吧

[ 本帖最后由 axlrose 于 2009-4-6 20:22 编辑 ]

zhengwei_zw 发表于 2009-04-06 20:19

我按照这里来的
http://www.moosefs.com/pages/userguides.html

可以分布做webroot文件系统
我的服务器之间速度都比较快。所以做webroot没啥问题

fhzxt 发表于 2009-04-06 20:20

可惜我被windows套牢了, wpf...要疯了
不过帮顶一下

lsstarboy 发表于 2009-04-06 20:32

好文。收藏备用。

对存储这块不是很懂,小声问一句,这个和iscsi,NAS,SAN有什么区别?

zhengwei_zw 发表于 2009-04-06 20:40

原帖由 lsstarboy 于 2009-4-6 20:32 发表 http://bbs3.chinaunix.net/images/common/back.gif
好文。收藏备用。

对存储这块不是很懂,小声问一句,这个和iscsi,NAS,SAN有什么区别?

可以让每个客户端都做数据存储服务器

lsstarboy 发表于 2009-04-06 21:25

原帖由 zhengwei_zw 于 2009-4-6 20:40 发表 http://bbs3.chinaunix.net/images/common/back.gif


可以让每个客户端都做数据存储服务器
牛气,分布地够火候了,看起来不错,但是我想知道如果有节点断了它会怎么个表现?

zhengwei_zw 发表于 2009-04-07 22:22

可以自己测试下看看撒

剑心通明 发表于 2009-04-09 15:01

不错,转载了,呵呵

Chrome 发表于 2009-04-09 23:11

找个时间回去测试去。。。

我最近好懒啊。。。
页: [1] 2 3
查看完整版本: FreeBSD下建立MFS分布式文件系统