Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9268530
  • 博文数量: 1669
  • 博客积分: 16831
  • 博客等级: 上将
  • 技术积分: 12594
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-25 07:23
个人简介

柔中带刚,刚中带柔,淫荡中富含柔和,刚猛中荡漾风骚,无坚不摧,无孔不入!

文章分类

全部博文(1669)

文章存档

2023年(4)

2022年(1)

2021年(10)

2020年(24)

2019年(4)

2018年(19)

2017年(66)

2016年(60)

2015年(49)

2014年(201)

2013年(221)

2012年(638)

2011年(372)

分类: 系统运维

2013-12-30 16:19:59

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


作者:  发表于:2009-04-29 08:31:29
【】 【】 【】【】

MFS分布式文件系统架设笔记 
什么是MFS文件系统? 
    Moose File System 是一个具备容错功能的网络分布式文件系统,它将数据分布在网络中的不同服务器上,MooseFS 通过 FUSE 使之看起来就是一个 Unix 的文件系统。 
MFS文件系统个人理解: 将分布在各个范围的计算机,将他们未使用的分区统一进行管理使用的一种文件系统. 
 
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.在下载mfs-1.5.12.tar.gz 
#fetch 

#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.在下载mfs-1.5.12.tar.gz 
#fetch 

#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 root  wheel  434 Mar 31 11:34 mfschunkserver.cfg

-rw-r--r--  1 root  wheel   36 Mar 31 11:34 mfshdd.cfg

-rw-r--r--  1 root  wheel  425 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 编辑 ]








  回复于:2009-04-06 20:17:27

zhengwei_zw 的强文喔,顶起:mrgreen: 
应该是跟hammer是一类的FS吧

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


  回复于:2009-04-06 20:19:04

我按照这里来的 


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


  回复于:2009-04-06 20:20:06

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


  回复于:2009-04-06 20:32:54

好文。收藏备用。 

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


  回复于:2009-04-06 20:40:25

引用:原帖由 lsstarboy 于 2009-4-6 20:32 发表 [url=] 
好文。收藏备用。 

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



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


  回复于:2009-04-06 21:25:34

引用:原帖由 zhengwei_zw 于 2009-4-6 20:40 发表 [url=] 


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


牛气,分布地够火候了,看起来不错,但是我想知道如果有节点断了它会怎么个表现?


  回复于:2009-04-07 22:22:28

可以自己测试下看看撒


  回复于:2009-04-09 15:01:25

不错,转载了,呵呵


  回复于:2009-04-09 23:11:46

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

我最近好懒啊。。。


  回复于:2009-04-12 10:56:09

如果用于生产系统是否稳定可靠?


  回复于:2009-04-13 12:11:10

这个不错,不知道有没有实施的案例???


  回复于:2009-04-13 13:50:05

Apr 13 12:29:52 B mfschunkserver: config: using default value for option 'SYSLOG_IDENT' - 'mfschunkserver' 
Apr 13 12:29:52 B mfschunkserver[4143]: config: using default value for option 'WORKING_USER' - 'nobody' 
Apr 13 12:29:52 B mfschunkserver[4143]: config: using default value for option 'WORKING_GROUP' - 'nogroup' 
Apr 13 12:29:52 B mfschunkserver[4143]: set gid to 65533 
Apr 13 12:29:52 B mfschunkserver[4143]: set uid to 65534 
Apr 13 12:29:52 B mfschunkserver[4143]: config: using default value for option 'DATA_PATH' - '/usr/local/var/mfs' 
Apr 13 12:29:52 B mfschunkserver[4145]: config: using default value for option 'LOCK_FILE' - '/var/run/mfs/mfschunkserver.lock' 
Apr 13 12:29:52 B mfschunkserver[4145]: can't kill previous process (No such process). 
Apr 13 12:29:52 B mfschunkserver[4145]: config: using default value for option 'HDD_CONF_FILENAME' - '/usr/local/etc/mfshdd.cfg' 
Apr 13 12:29:52 B mfschunkserver[4145]: config: using default value for option 'CSSERV_LISTEN_HOST' - '*' 
Apr 13 12:29:52 B mfschunkserver[4145]: config: using default value for option 'CSSERV_LISTEN_PORT' - '9422' 
Apr 13 12:29:52 B mfschunkserver[4145]: config: using default value for option 'CSSERV_TIMEOUT' - '60' 
Apr 13 12:29:52 B mfschunkserver[4145]: listen on *:9422 
Apr 13 12:29:52 B mfschunkserver[4145]: config: using default value for option 'CSTOCS_TIMEOUT' - '60' 
Apr 13 12:29:52 B mfschunkserver[4145]: config: using default value for option 'MASTER_RECONNECTION_DELAY' - '5' 
Apr 13 12:29:52 B mfschunkserver[4145]: config: using default value for option 'MASTER_HOST' - 'mfsmaster' 
Apr 13 12:29:52 B mfschunkserver[4145]: config: using default value for option 'MASTER_PORT' - '9420' 
Apr 13 12:29:52 B mfschunkserver[4145]: config: using default value for option 'MASTER_TIMEOUT' - '60' 
Apr 13 12:29:52 B mfschunkserver[4145]: config: using default value for option 'BACK_LOGS' - '50'
Apr 13 12:29:52 B mfschunkserver[4145]: connect failed, error: Connection refused 


按照帖子 出现以上错误?


  回复于:2009-04-13 14:26:37

挂载了 如何卸载?


  回复于:2009-04-14 15:38:48

卸载就umount了


  回复于:2009-04-14 15:39:46

umount /mfs


  回复于:2009-04-24 21:27:28

我参考你的贴子:
在虚拟机里配置了MFS 
前面配置都成功了,但是最后文件写入时出错。 
挂载的文件系统里可以建目录,便是不能cp文件进去。 

日志如下: 
# tail -f /var/log/messages 
Apr 24 18:42:00  mfsmaster[1163]: inodes: 4 
Apr 24 18:42:00  mfsmaster[1163]: dirnodes: 1 
Apr 24 18:42:00  mfsmaster[1163]: filenodes: 3 
Apr 24 18:42:00  mfsmaster[1163]: chunks: 0 
Apr 24 18:42:00  mfsmaster[1163]: chunks to delete: 0 
Apr 24 18:42:00  mfsmaster[1163]: chunkservers status: 
Apr 24 18:42:00  mfsmaster[1163]: server 1 (192.168.1.50): usedspace: 441628672 (0 GB), totalspace: 441628672 (0 GB), usage: 100.00% 
Apr 24 18:42:00  mfsmaster[1163]: total: usedspace: 441628672 (0 GB), totalspace: 441628672 (0 GB), usage: 100.00% 
Apr 24 18:42:02  mfsmount: file: 4, index: 0, chunk: 0, version: 0 - fs_writechunk returns status 12 
Apr 24 18:42:02  mfsmount: file: 4, index: 0, chunk: 0, version: 0 - write(flush) error (try counter: 29) 

兄弟我如今火烧眉毛了,希望指导一下。等我回成都请你喝酒。


  回复于:2009-04-25 22:19:26

已经自已解决:) 
原来必存储单元必须挂载为分区。 
呵呵!希望朋友们不要和我一样粗心。目前正在五个虚拟机上测试:)


  回复于:2009-04-27 08:51:43

好文章多了 :em15:


  回复于:2009-04-28 16:29:02

请问这个和Hadoop,哪一个更好一点?


  回复于:2009-04-29 01:09:06

做好了 
 这个好象和drdb一样吧 
  我两个服务器分给他们的是 8GB 
 显示也是8GB 
/dev/fuse0     7.7G    891M    6.9G    11%    /data 
  那如果 
控制服务器挂了不就完蛋了 
   不知道可以连接两个控制器不 
 还有这玩意 如果出了问题 数据不就拿不出来了 
 他是0       2       4       6       8       A       C       E 
 这样的存储 如果NFS一样 直接存储就好了  
  不知道这个和 pNFS有什么区别和drdb 
   
 观望中

[ 本帖最后由 啊泰 于 2009-4-29 01:24 编辑 ]


  回复于:2009-04-29 08:31:29

稳定压倒一切




原文链接:
转载请注明作者名及原文出处
阅读(1416) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~