本次实验计算机硬件环境
cpu:E5300    
内存:2G
显卡:ATI HD 4350
硬盘:500G
主板:
显示器:17寸
操作系统: Windows XP Professional sp3 Lenovo OEM
虚拟机
硬件:Vmware Workstation 6.0
      cpu:
      内存:128
      网卡:桥接1网口
      硬盘:8G

拓扑草图
图片

操作系统:CentOS Linux
应用软件版本:Moosefs 1.6.17
复制同样的 CentOS 系统在虚拟机中 4 台,并配置如下的IP地址
 
      主控服务器Master server: 10.0.1.1    [T1]
      主控备份服务器Metalogger server: 10.0.1.2  [T2]
      存储块服务器Chunk servers: 10.0.1.101  [T3] and 10.0.1.102  [T4]
      客户端主机 (clients): 10.0.2.x  [T5] (操作系统Redhat E5.5)
      查看监控服务器:Red hat E 5.5


安装主服务器
主控服务器Master server 安装
当我们安装主控服务器时,在配置过程中(./configure),可以取消安装chunk server
(--disable-mfschunkserver)以及MooseFS 客户端(--disable-mfsmount). 安装
主控服务器master 的具体步骤为:
1、添加mfs 组
#groupadd mfs
2、新增系统用户mfs
#useradd -g mfs mfs
3、切换目录
#cd /usr/src
4、解包归档文件
#tar -zxvf mfs-1.6.15.tar.gz
5、进入安装目录
#cd mfs-1.6.15
6、配置
#./configure --prefix=/usr --sysconfdir=/etc \--localstatedir=/var/lib --with-default-user=mfs \--with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
7、编译并安装
#make
#make install
成功安装master 以后,系统会在/etc 目录自动生成样例配置文件,这些样例文件是以.dist后缀命名。这里我们将借用这些样例文件作为MooseFS 主控服务器的目标配置文件:
1、切换目录
#cd /etc
2、复制样例文件,以得到master 所需的配置文件
#cp mfsmaster.cfg.dist mfsmaster.cfg
#cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
#cp mfsexports.cfg.dist mfsexports.cfg
想知道关于该配置文件更多的信息,请查看它的手册页(使用命令manmfsmaster.cfg)。
配置文件mfsexports.cfg 指定那些客户端主机可以远程挂接MooseFS 文件系统,以及授予挂接客户端什么样的访问权限。
例如,我们指定只有10.1.1.x 网段的主机可以以读写模式访问MooseFS 的整个共享结构资源(/)。在配置文件mfsexports.cfg 文件的第一行,先取消注释,然后把星号(*)改成10.0.1.0/24,以便我们可以得
到下面的文本行:
10.0.1.0/24 / rw,alldirs,maproot=0
二进制文件metadata 和文本文件changelog 将被保存在目录/var/lib/mfs,这是因为我们安
装过程的configure 步骤使用了选项 --localstatedir=/var/lib 。首次安装master 时,会自
动生成一个名为metadata.mfs.empty 的元数据文件metadata,该文件是空的。MooseFS
master 运必须有文件metadata.mfs,这个文件是从metadata.mfs.empty 改名而来:
1、切换目录
#cd /var/lib/mfs
2、重命名文件
#cp metadata.mfs.empty metadata.mfs
修改/etc/hosts 文件,以绑定主机名mfsmaster 与ip 地址10.0.1.1:
10.0.1.1 mfsmaster
运行master 服务(服务将以安装配置configure 指定的用户运行,这我们的案例里,它是mfs):
#/usr/sbin/mfsmaster start
在一个生产环境里,我们应当设置自动启动脚本,以便操作系统重新启动时,MooseFS master也能自动运行。为了监控MooseFS 当前运行状态,运行CGI 监控服务,这样就可以用浏览器查看整个MooseFS 的运行情:
#/usr/sbin/mfscgiserv
现在,我们在浏览器地址栏输入http://10.0.1.1:9425 即可查看master 的运行情况(这个时候,是不能看见chunk server 的数据)。


备份服务器Backup server (metalogger) 安装
用来安装metalogger 的主机,在性能上应该比master 强大(至少有更多的内存)。一旦主控服务器master 失效,只要导入changelogs 到元数据文件,备份服务器metalogger 将能接替发生故障的master,行使管理服务器的职能(更多细节请参看http://www.moosefs.org/minihowtos.html#redundant-master)。
备份服务器Metalogger 安装跟主控服务器master 安装非常类似。其安装命令如下:
1、 创建组mfs
#groupadd mfs
2、创建用户mfs
#useradd -g mfs mfs
3、切换目录
#cd /usr/src
4、解包归档文件
#tar -zxvf mfs-1.6.15.tar.gz
5、切换目录
#cd mfs-1.6.15
6、配置
#./configure --prefix=/usr --sysconfdir=/etc \--localstatedir=/var/lib --with-defaultuser=mfs \--with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
7、编译及安装
#make
#make install
8、产生配置文件
#cd /etc
#cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
类似地,修改/etc/hosts 文件,增加下面的行:
10.0.1.1 mfsmaster
运行备份服务mfsmetaloger:
#/usr/sbin/mfsmetalogger start
在一个生产环境里,应当设置自动启动脚本,以便操作系统重新启动时,MooseFSmfsmetalogger 服务也能自动运行。

存储块服务器Chunk servers 安装

在每个chunk server 主机上执行下面的命令:
#groupadd mfs
#useradd -g mfs mfs
#cd /usr/src
#tar -zxvf mfs-1.6.15.tar.gz
#cd mfs-1.6.15
6
#./configure --prefix=/usr --sysconfdir=/etc \--localstatedir=/var/lib --with-default-user=mfs \--with-default-group=mfs --disable-mfsmaster
#make
#make install
准备chunk server 服务所需的配置文件:
#cd /etc/
#cp mfschunkserver.cfg.dist mfschunkserver.cfg
#cp mfshdd.cfg.dist mfshdd.cfg
为了测试这个安装,我们保留mfschunkserver.cfg 文件不做任何改动;如果读者想了解配置文件mfschunkserver.cfg 更详细的信息,请查看手册页 (manmfschunkserver.cfg)。在配置文件mfshdd.cfg 中,我们给出了用于客户端挂接MooseFS 分布式文件系统根分区所使用的共享空间位置。建议在chunk server 上划分单独的空间给 MooseFS 使用,这样做的好处是便于管理剩余空间。
假定要使用两个共享点/mnt/mfschunks1 和/mnt/mfschunks2,为此,在mfshdd.cfg 加入下面的文本行:
/mnt/mfschunks1
/mnt/mfschunks2
在启动chunk server 前,需确保用户mfs 有权限读写将要被挂接的分区(因为chunk server 运行时要在此创建一个.lock 的文件):
#chown -R mfs:mfs /mnt/mfschunks1
#chown -R mfs:mfs /mnt/mfschunks2
类似地,修改/etc/hosts 文件,增加下面的行:
10.0.1.1 mfsmaster
开始启动chunk server:
#/usr/sbin/mfschunkserver start
现在再通过浏览器访问 http://10.0.1.1:9425/ 应该可以看见这个MooseFS 系统的全部信息,包括主控master 和存储服务chunkserver 。

客户端Users’ computers 安装

为了挂接基于MooseFS 分布式文件,客户端主机必须安装FUSE 软件包( fuse 版本号至少2.6,推荐使用版本号大于2.7.2 的fuse)。如果系统没有安装fuse,你必须手动对其进行安装。一种常见的安装方式是从源码进行编译安装-我们可以从http://sourceforge.net/projects/fuse/取得安装源码。
#cd /usr/src
#tar -zxvf fuse-2.8.3.tar.gz
#cd fuse-2.8.3
#./configure
#make
#make install
安装客户端软件 mfsmount 的步骤:
#cd /usr/src
#tar -zxvf mfs-1.6.15.tar.gz
#cd mfs-1.6.15
#./configure --prefix=/usr --sysconfdir=/etc \--localstatedir=/var/lib --with-default-=mfs \--with-default-group=mfs --disable-mfsmaster \--disable-mfschunkserver
#make
#make install
修改文件/etc/hosts ,增加如下的文本行:
10.0.1.1 mfsmaster
假定客户端的挂接点是/mnt/mfs,使用MooseFS 分布式共享文件系统:
1、 创建挂接点
#mkdir -p /mnt/mfs
2、开始挂接操作
#/usr/bin/mfsmount /mnt/mfs -H mfsmaster
执行命令df –h | grep mfs 检查分区情况,可能的输出如下:
/storage/mfschunks/mfschunks1
2.0G 69M 1.9G 4% /mnt/mfschunks1
/storage/mfschunks/mfschunks2
2.0G 69M 1.9G 4% /mnt/mfschunks2
mfs#mfsmaster:9421 3.2G 0 3.2G 0% /mnt/mfs

本文安装步骤参照 田逸 翻译moosefs官方安装文档,其中ip地址,以及测试环境有本人设定,在安装过程中遇到了种种问题,比如说,gcc编译器不完整、环境参数不完整之类的,经过查阅资料,以及mfs讨论群的帮助,完成了mfs的实验。

在编译装moosefs的客户端的时候出现
checking for FUSE... no 
******************************** mfsmount disabled ******************************** 
fuse library is too old or not installed - mfsmount needs version 2.6 or higher * 
***********************************************************************************
可实际上蚊子已经安装了fuse-2.8.4,网上找了一下,发现田逸已经遇到过此问题了,他的解决办法是:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
然后编译就过去了,然后蚊子查了一下,PKG_CONFIG_PATH路径提供了找到.pc文件位置,默认的libdir和datadir是pkg-config文件安装时的默认目录,蚊子于是看了一下,pkgconfig的默认安装路径是/usr,所以libdir的目录就是/usr/lib,所以,蚊子之后想了另外一个解决办法,就是,在安装fuse的时候指定prefix,即
./configure --prefix=/usr
这样装好fuse之后,什么都不用改,moosefs的客户端就可以顺利完成。

当出现这样的问题的时候

#/usr/bin/mfsmount /mnt/mfs -H mfsmaster

mfsmaster register error: Permission denied

解决办法:
#export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig