分布式文件系统(2013-3-2)

MFS文件系统结构:

1. 管理服务器:负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝。
2. 元数据日志服务器: 负责备份 master 服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在 master server 出问题的时候接替其进行工作。
3. 数据存储服务器:负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输。
4. 客户端: 通过 fuse 内核接口挂接远程管理服务器上所管理的数据存储服务器,看起来共享的文件系统和本地 unix 文件系统使用一样的效果。
MFS部署:

系统:rhel6.3 selinux and iptables disabled

master:192.168.1.120

chunkserver1:192.168.1.122

chunkserver2:192.168.1.123

client:192.168.1.124

软件下载 http://www.moosefs.org

---------------------------------------------------------------------------------------------------------------------------------------------------------

首先在master(192.168.1.120)配置:

将下载下来的tar包编译成rpm,方便安装

yum install -y gcc make rpm-build fuse-devel zlib-devel

rpmbuild -tb mfs -1.6.27.1.tar.gz (此时会报错:可作如下改动)

mv mfs-1.6.27.1.tar.gz  mfs-1.6.27.tar.gz (因为rpmbuild是读取tar包里面的.spec文件进行编译,但是.spec里面写的是mfs-1.6.27.tar.gz,所以需要将原tar包的名字改成与spec里面一致,要不然会提示无法找到文件)

然后再执行:rpmbuild -tb mfs -1.6.27.tar.gz

完成之后进入:cd  /rpmbuild/RPMS/x86_64

rpm -ivh mfs-cgi-1.6.27-2.x86_64.rpm mfs-cgiserv-1.6.27-2.x86_64.rpm mfs-master-1.6.27-2.x86_64.rpm

其中cgi文件是为了通过web界面进行管理,比较方便

cd /etc/mfs

将配置文件的模板(.dist),复制成真正的配置文件(.cfg)

cp mfsexports.cfg.dist mfsexports.cfg

cp mfsmaster.cfg.dist mfsmaster.cfg

cp mfstopology.cfg.dist mfstopology.cfg

打开mfsmaster.cfg可以看到默认WORKING_USER=nobody,SYSLOG_IDENT = mfsmaster,前者代表运行matser server的用户,后者代表master server在整个分布式系统中的标识,都可以根据自己需要更改,但是后续配置参数要保持一致即可。为了方便,这里不做任何改动,保持默认值。

vi /etc/hosts

添加:192.168.1.120  mfsmaster

cd /var/lib/mfs

cp metadata.mfs.empty etadata.mfs

chown nobody .-R(这里面写了数据的挂载目录,只用用户有读写权限,需将运行master server的用户改成对metadata.mfs可以读写,这里使用的是默认用户nobody)

启动mfsmaster start

用rpm -ql mfs-cgi 查看mfscgi管理工具安装目录为:/usr/share/mfscgi

cd /usr/share/mfscgi

chmod +x *.cgi(添加可执行权限)

mfscgiserv start

启动成功后可看到监听端口:9425

打开浏览器,输入192.168.1.120:9425回车,可看到MFS的网页管理界面,可以查看整个分布式文件系统的信息。

---------------------------------------------------------------------------------------------------------------------------------------------------------

chunckserver1(192.168.1.122)端的配置:

将master中编译的rpm包(cd /root/home/rpmbuild/RPMS/ x86_64 )中的mfs-chunkserver-1.6.27.x86_64.rpm复制到192.168.1.122中,这里复制到/root/home

cd /root/home

rpm -ivh mfs-chunkserver-1.6.27.x86_64.rpm

cd /etc/mfs

cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg

vi mfshdd.cfg

添加/mnt/chunk1

mkdir /mnt/chunk1

mkdir /var/lib/mfs(在配置文件中,默认moosefs产生的数据记录在这个目录中,需要手动创建)

chown nobody /var/lib/mfs

vi /etc/hosts

添加:192.168.1.120  mfsmaster

将一个lv(logical volum,lv的创建可参考我的另一篇关于lvm的文字)格式化:

mkfs.ext4 /dev/newvg/demo (demo是192.168.1.122上的lv)

mount /dev/newvg/demo /mnt/chunk1/并将挂载信息写如fstable中,以便开启自动挂载

然后mount -a 检查挂载是否正确

mfschunkserver start

然后刷新MFS网页管理界面,可以看到一个chunk server已经成功加入系统

chunkserver2(192.168.1.123)的配置和上面所述完全一样,也就是说后续想加入多个chunkserver配置均可参考上述步骤。

---------------------------------------------------------------------------------------------------------------------------------------------------------

client配置:

将master中编译的rpm包(cd /root/home/rpmbuild/RPMS/ x86_64 )中的mfs-client-1.6.27.x86_64.rpm复制到192.168.1.124中,这里复制到/root/home

yum localinstall mfs-client-1.6.27-2.x86_64.rpm (这里之所以不用rpm -ivh安装是因为客户端安装存在依赖性问题,yum可以自动检测并解决依赖性)

 cd /etc/mfs/

cp mfsmount.cfg.dist mfsmount.cfg
vi mfsmount.cfg
mkdir /mnt/mfs

vi /etc/hosts

添加:192.168.1.120  mfsmaster

mfsmount

然后df可以看到/mnt/mfs已经自动挂载了mfsmaster:9421

这时在客户端读写数据,就是在向MFS读写数据,chunkserver1和chunkserver2可以对数据进行存储,和备份,轮循。

posted @ 2014-03-02 13:45  90Zeng  阅读(200)  评论(0编辑  收藏  举报