<div class="showContent">
<div class="MsoNormal">&lt; body&gt;</div>
<div align="center" class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">分布式文件系统MFS(moosefs)实现存储共享</span></font></div>
<div align="center" class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">作者:田逸(<a href="mailto:sery@163.com">sery@163.com</a>) from: <a href="http://net.it168.com/a2009/0403/270/000000270867.shtml">[url]http://net.it168.com/a2009/0403/270/000000270867.shtml[/url]</a></span></font></div>
<div align="center" class="MsoNormal" style="margin: 0cm 0cm 0pt;">&nbsp;</div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">由于用户数量的不断攀升</span><span lang="EN-US" style="">,</span><span style="font-family: 宋体;">我对访问量大的应用实现了可扩展、高可靠的集群部署(即</span><span lang="EN-US" style="">lvs+keepalived</span><span style="font-family: 宋体;">的方式),但仍然有用户反馈访问慢的问题。通过排查个服务器的情况,发现问题的根源在于共享存储服务器</span><span lang="EN-US" style="">NFS</span><span style="font-family: 宋体;">。在我这个网络环境里,</span><span lang="EN-US" style="">N</span><span style="font-family: 宋体;">个服务器通过</span><span lang="EN-US" style="">nfs</span><span style="font-family: 宋体;">方式共享一个服务器的存储空间,使得</span><span lang="EN-US" style="">NFS</span><span style="font-family: 宋体;">服务器不堪重负。察看系统日志,全是</span><span lang="EN-US" style="">nfs</span><span style="font-family: 宋体;">服务超时之类的报错。一般情况下,当</span><span lang="EN-US" style="">nfs</span><span style="font-family: 宋体;">客户端数目较小的时候,</span><span lang="EN-US" style="">NFS</span><span style="font-family: 宋体;">性能不会出现问题;一旦</span><span lang="EN-US" style="">NFS</span><span style="font-family: 宋体;">服务器数目过多,并且是那种读写都比较频繁的操作,所得到的结果就不是我们所期待的。下面是某个集群使用</span><span lang="EN-US" style="">nfs</span><span style="font-family: 宋体;">共享的示意图:<img border="0" alt="" src="https://s4.51cto.com/attachment/200904/200904091239248490014.jpg" /></span></font></div>
<font size="3"><span style="font-family: 宋体;">
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体;">这种架构除了性能问题而外,还存在单点故障,一旦这个</span><span lang="EN-US"><font face="Times New Roman">NFS</font></span><span style="font-family: 宋体;">服务器发生故障,所有靠共享提供数据的应用就不再可用,尽管用</span><span lang="EN-US"><font face="Times New Roman">rsync</font></span><span style="font-family: 宋体;">方式同步数据到另外一个服务器上做</span><span lang="EN-US"><font face="Times New Roman">nfs</font></span><span style="font-family: 宋体;">服务的备份,但这对提高整个系统的性能毫无帮助。基于这样一种需求,我们需要对</span><span lang="EN-US"><font face="Times New Roman">nfs</font></span><span style="font-family: 宋体;">服务器进行优化或采取别的解决方案,然而优化并不能对应对日益增多的客户端的性能要求,因此唯一的选择只能是采取别的解决方案了;通过调研,分布式文件系统是一个比较合适的选择。采用分布式文件系统后,服务器之间的数据访问不再是一对多的关系(</span><span lang="EN-US"><font face="Times New Roman">1</font></span><span style="font-family: 宋体;">个</span><span lang="EN-US"><font face="Times New Roman">NFS</font></span><span style="font-family: 宋体;">服务器,多个</span><span lang="EN-US"><font face="Times New Roman">NFS</font></span><span style="font-family: 宋体;">客户端),而是多对多的关系,这样一来,性能大幅提升毫无问题。</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font face="Times New Roman">&nbsp;</font></span></div>
<div class="MsoNormal" style="margin: 12pt 0cm 0pt;"><span style="font-family: 宋体;">到目前为止,有数十种以上的分布式文件系统解决方案可供选择,如</span><span lang="EN-US"><font face="Times New Roman">lustre,hadoop,Pnfs</font></span><span style="font-family: 宋体;">等等。我尝试了</span><span lang="EN-US"><font face="Times New Roman">PVFS,hadoop,moosefs</font></span><span style="font-family: 宋体;">这三种应用,参看了</span><span lang="EN-US"><font face="Times New Roman">lustre</font></span><span style="font-family: 宋体;">、</span><span lang="EN-US"><font face="Times New Roman">KFS</font></span><span style="font-family: 宋体;">等诸多技术实施方法,最后我选择了</span><span lang="EN-US"><font face="Times New Roman">moosefs</font></span><span style="font-family: 宋体;">(以下简称</span><span lang="EN-US"><font face="Times New Roman">MFS</font></span><span style="font-family: 宋体;">)这种分布式文件系统来作为我的共享存储服务器。为什么要选它呢?我来说说我的一些看法:</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt;"><span lang="EN-US" style=""><span style=""><font face="Times New Roman">1、<span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;"><font size="3">&nbsp; </font></span></font></span></span><span style="font-family: 宋体;">实施起来简单。</span><span lang="EN-US"><font face="Times New Roman">MFS</font></span><span style="font-family: 宋体;">的安装、部署、配置相对于其他几种工具来说,要简单和容易得多。看看</span><span lang="EN-US"><font face="Times New Roman">lustre 700</font></span><span style="font-family: 宋体;">多页的</span><span lang="EN-US"><font face="Times New Roman">pdf</font></span><span style="font-family: 宋体;">文档,让人头昏吧。</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt;"><span lang="EN-US" style=""><span style=""><font face="Times New Roman">2、<span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;"><font size="3">&nbsp; </font></span></font></span></span><span style="font-family: 宋体;">不停服务扩容。</span><span lang="EN-US"><font face="Times New Roman">MFS</font></span><span style="font-family: 宋体;">框架做好后,随时增加服务器扩充容量;扩充和减少容量皆不会影响现有的服务。注:</span><span lang="EN-US"><font face="Times New Roman">hadoop</font></span><span style="font-family: 宋体;">也实现了这个功能。</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt;"><span lang="EN-US" style=""><span style=""><font face="Times New Roman">3、<span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;"><font size="3">&nbsp; </font></span></font></span></span><span style="font-family: 宋体;">恢复服务容易。除了</span><span lang="EN-US"><font face="Times New Roman">MFS</font></span><span style="font-family: 宋体;">本身具备高可用特性外,手动恢复服务也是非常快捷的,原因参照第</span><span lang="EN-US"><font face="Times New Roman">1</font></span><span style="font-family: 宋体;">条。</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt;"><span lang="EN-US" style=""><span style=""><font face="Times New Roman">4、<span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;"><font size="3">&nbsp; </font></span></font></span></span><span style="font-family: 宋体;">我在实验过程中得到作者的帮助,这让我很是感激。</span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><img border="0" alt="" src="https://s4.51cto.com/attachment/200904/200904091239248559990.jpg" /></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><b style=""><span lang="EN-US" style="font-size: 9pt;">MFS</span></b><b style=""><span style="font-size: 9pt; font-family: 宋体;">文件系统的组成</span></b></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt;"><span lang="EN-US" style=""><span style=""><font size="3">1、</font><span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;">&nbsp; </span></span></span><font size="3"><span style="font-family: 宋体;">元数据服务器。在整个体系中负责管理管理文件系统,目前</span><span lang="EN-US" style="">MFS</span><span style="font-family: 宋体;">只支持一个元数据服务器</span><span lang="EN-US" style="">master</span><span style="font-family: 宋体;">,这是一个单点故障,需要一个性能稳定的服务器来充当。希望今后</span><span lang="EN-US" style="">MFS</span><span style="font-family: 宋体;">能支持多个</span><span lang="EN-US" style="">master</span><span style="font-family: 宋体;">服务器,进一步提高系统的可靠性。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt;"><span lang="EN-US" style=""><span style=""><font size="3">2、</font><span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;">&nbsp; </span></span></span><font size="3"><span style="font-family: 宋体;">数据存储服务器</span><span lang="EN-US" style="">chunkserver</span><span style="font-family: 宋体;">。真正存储用户数据的服务器。存储文件时,首先把文件分成块,然后这些块在数据服务器</span><span lang="EN-US" style="">chunkserver</span><span style="font-family: 宋体;">之间复制(复制份数可以手工指定,建议设置副本数为</span><span lang="EN-US" style="">3</span><span style="font-family: 宋体;">)。数据服务器可以是多个,并且数量越多,可使用的&ldquo;磁盘空间&rdquo;越大,可靠性也越高。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt 18pt; text-indent: -18pt;"><span lang="EN-US" style=""><span style=""><font size="3">3、</font><span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;">&nbsp; </span></span></span><font size="3"><span style="font-family: 宋体;">客户端。使用</span><span lang="EN-US" style="">MFS</span><span style="font-family: 宋体;">文件系统来存储和访问的主机称为</span><span lang="EN-US" style="">MFS</span><span style="font-family: 宋体;">的客户端,成功挂接</span><span lang="EN-US" style="">MFS</span><span style="font-family: 宋体;">文件系统以后,就可以像以前使用</span><span lang="EN-US" style="">NFS</span><span style="font-family: 宋体;">一样共享这个虚拟性的存储了。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style=""><font size="3">&nbsp;</font></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><b style=""><span style="font-size: 9pt; font-family: 宋体;">元数据服务器安装和配置</span></b></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">元数据服务器可以是</span><span lang="EN-US" style="">linux,</span><span style="font-family: 宋体;">也可以是</span><span lang="EN-US" style="">unix,</span><span style="font-family: 宋体;">你可以根据自己的使用习惯选择操作系统</span><span lang="EN-US" style="">,</span><span style="font-family: 宋体;">在我的环境里</span><span lang="EN-US" style="">,</span><span style="font-family: 宋体;">我是用</span><span lang="EN-US" style="">freebsd</span><span style="font-family: 宋体;">做为</span><span lang="EN-US" style="">MFS</span><span style="font-family: 宋体;">元数据的运行平台。</span><span lang="EN-US" style="">GNU</span><span style="font-family: 宋体;">源码,在各种类</span><span lang="EN-US" style="">unix</span><span style="font-family: 宋体;">平台的安装都基本一致。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style=""><font size="3">&nbsp;</font></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt 36pt; text-indent: -36pt;"><span lang="EN-US" style=""><span style=""><font size="3">(一)</font><span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;">&nbsp;&nbsp; </span></span></span><font size="3"><span style="font-family: 宋体;">安装元数据服务</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US" style="">1</span><span style="font-family: 宋体;">、下载</span><span lang="EN-US" style="">GNU</span><span style="font-family: 宋体;">源码</span><span lang="EN-US" style=""> wget <a href="http://www.moosefs.com/files/mfs-1.5.12.tar.gz"><font color="#0000ff">[url]http://www.moosefs.com/files/mfs-1.5.12.tar.gz[/url]</font></a></span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US" style="">2</span><span style="font-family: 宋体;">、解包</span><span lang="EN-US" style=""> tar zxvf mfs-1.5.12.tar.gz</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US" style="">3</span><span style="font-family: 宋体;">、切换目录</span><span lang="EN-US" style=""> cd mfs-1.5.12</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US" style="">4</span><span style="font-family: 宋体;">、创建用户</span><span lang="EN-US" style=""> useradd mfs &ndash;s /sbin/nologin<span style="">&nbsp; </span></span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US" style="">5</span><span style="font-family: 宋体;">、配置</span><span style=""> </span><span lang="EN-US">./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US" style="">6</span><span style="font-family: 宋体;">、编译安装</span><span lang="EN-US" style=""> make ; make install</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style=""><font size="3">&nbsp;</font></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt 36pt; text-indent: -36pt;"><span lang="EN-US" style=""><span style=""><font size="3">(二)</font><span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;">&nbsp;&nbsp; </span></span></span><font size="3"><span style="font-family: 宋体;">配置元数据服务</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">元数据服务器的配置文件是</span><span lang="EN-US" style="">mfsmaster.cfg,</span><span style="font-family: 宋体;">我在安装</span><span lang="EN-US" style="">MFS</span><span style="font-family: 宋体;">时指定了前缀,因此这个文件的位置在</span><span lang="EN-US" style="">/usr/local/mfs/etc/mfsmaster.cfg.</span><span style="font-family: 宋体;">我们打开这个配置文件,看看都有哪些内容:<span style="font-family: 宋体;"><img border="0" alt="" src="https://s4.51cto.com/attachment/200904/200904091239248623823.jpg" /></span></span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体;"><font size="3">尽管每行都被注释掉了,但它们却是配置文件的默认值,要改变这些值,需要取消注释,然后明确指定其取值。接下来说明一下其中一些项目的含义。</font></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt;"><span lang="EN-US" style="font-family: 宋体;"><span style=""><font size="3">◆</font><span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font size="3"><span lang="EN-US" style="">LOCK_FILE = /var/run/mfs/mfsmaster.pid </span><span style="font-family: 宋体;">文件锁所在的位置,它的功能是避免启动多次启动同一个守护进程。由于系统中本来不存在目录</span><span lang="EN-US" style=""> /var/run/mfs</span><span style="font-family: 宋体;">,因此需要手动创建</span><span lang="EN-US" style=""> mkdir /var/run/mfs</span><span style="font-family: 宋体;">,然后更改其属主</span><span lang="EN-US" style=""> chown &ndash;R mfs:mfs /var/run/mfs </span><span style="font-family: 宋体;">这样</span><span lang="EN-US" style="">MFS </span><span style="font-family: 宋体;">服务就能对这个目录有创建</span><span lang="EN-US" style="">/</span><span style="font-family: 宋体;">写入</span><span lang="EN-US" style=""> mfsmaster.pid </span><span style="font-family: 宋体;">文件的权限了。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt;"><span lang="EN-US" style="font-family: 宋体;"><span style=""><font size="3">◆</font><span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font size="3"><span lang="EN-US" style="">DATA_PATH = /usr/local/mfs/var/mfs </span><span style="font-family: 宋体;">数据存放路径,只元数据的存放路径。那么这些数据都包括哪些呢?进目录看看,大致分</span><span lang="EN-US" style="">3</span><span style="font-family: 宋体;">种类型的文件:</span></font></div>
<div><span lang="EN-US" style=""><img border="0" alt="" src="https://s4.51cto.com/attachment/200904/200904091239248673306.jpg" /></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: 21pt;"><font size="3"><span style="font-family: 宋体;">这些文件也同样要存储在其他数据存储服务器的相关目录。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt;"><span lang="EN-US" style="font-family: 宋体;"><span style=""><font size="3">◆</font><span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font size="3"><span lang="EN-US" style="">MATOCS_LISTEN_PORT = 9420 MATOCS--master to chunkserver</span><span style="font-family: 宋体;">,即元数据服务器使用</span><span lang="EN-US" style="">9420</span><span style="font-family: 宋体;">这个监听端口来接受数据存储服务器</span><span lang="EN-US" style="">chunkserver</span><span style="font-family: 宋体;">端的连接。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt;"><span lang="EN-US" style="font-family: 宋体;"><span style=""><font size="3">◆</font><span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font size="3"><span lang="EN-US" style="">MATOCU_LISTEN_PORT = 9421 </span><span style="font-family: 宋体;">元数据服务器在</span><span lang="EN-US" style="">9421</span><span style="font-family: 宋体;">端口监听,用以接受客户端对</span><span lang="EN-US" style="">MFS</span><span style="font-family: 宋体;">进行远程挂接(客户端以</span><span lang="EN-US" style="">mfsmount</span><span style="font-family: 宋体;">挂接</span><span lang="EN-US" style="">MFS</span><span style="font-family: 宋体;">)</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt;"><span lang="EN-US" style="font-family: 宋体;"><span style=""><font size="3">◆</font><span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体;"><font size="3">其他部分看字面意思都不难理解。还有几个与时间有关的数值,其单位是秒。</font></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">这个配置文件,不必做修改就能工作了。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style=""><font size="3">&nbsp;</font></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt 36pt; text-indent: -36pt;"><span lang="EN-US" style=""><span style=""><font size="3">(一)</font><span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;">&nbsp;&nbsp; </span></span></span><font size="3"><span style="font-family: 宋体;">元数据服务器</span><span lang="EN-US" style="">master</span><span style="font-family: 宋体;">启动</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">元数据服务器可以单独启动,即使没有任何数据存储服务器(</span><span lang="EN-US" style="">chunkserver</span><span style="font-family: 宋体;">)也是能正常工作的,因此当我们安装配置完</span><span lang="EN-US" style="">MFS</span><span style="font-family: 宋体;">后,即可启动它。执行命令</span><span lang="EN-US" style=""> /usr/local/mfs/sbin/mfsmaster start </span><span style="font-family: 宋体;">,如果没有意外,元数据库服务器就应该作为一个守护进程运行起来。现在我们可以通过</span><span lang="EN-US" style="">3</span><span style="font-family: 宋体;">个方面来检查一下</span><span lang="EN-US" style="">MFS master</span><span style="font-family: 宋体;">的运行状况:</span></font></div>
<div><span lang="EN-US" style=""><img border="0" alt="" src="https://s4.51cto.com/attachment/200904/200904091239248710627.jpg" /></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-family: 宋体;"><font size="3">(四)、关闭元数据服务器</font></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">关闭元数据服务器,务必使用</span><span lang="EN-US"> /usr/local/mfs/sbin/mfsmaster &ndash;s </span><span style="font-family: 宋体;">这种方式,如果直接使用</span><span lang="EN-US">kill</span><span style="font-family: 宋体;">杀死进程,将导致下次启动时出现找不到相关文件,而不能正常启动服务器。这个一定要谨慎。当然,如果发生了这个事情,还是可以通过</span><span lang="EN-US"> mfsmetastore </span><span style="font-family: 宋体;">来恢复的。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US"><font size="3">&nbsp;</font></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><b style=""><span style="font-size: 9pt; font-family: 宋体;">数据存储</span></b><b style=""><span lang="EN-US" style="font-size: 9pt;">chunkserver</span></b><b style=""><span style="font-size: 9pt; font-family: 宋体;">服务器的安装配置</span></b></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">数据存储服务器</span><span lang="EN-US" style="">chunkserver</span><span style="font-family: 宋体;">也是可以运行在各种类</span><span lang="EN-US" style="">unix</span><span style="font-family: 宋体;">平台的,因此不再多说。一个</span><span lang="EN-US" style="">MFS</span><span style="font-family: 宋体;">环境到底能集群多少服务器,作者的说法是上</span><span lang="EN-US" style="">PB</span><span style="font-family: 宋体;">容量,个人建议,最好</span><span lang="EN-US" style="">3</span><span style="font-family: 宋体;">台以上;并且专门用来做存储,不要把它跟</span><span lang="EN-US" style="">master</span><span style="font-family: 宋体;">搞到一个机器(理论上没问题,实现也是可以的,但这不是一个好策略)。因为每个数据存储服务器的安装和配置都是相同的,所以只需按照一个服务器的操作就可以了。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style=""><font size="3">&nbsp;</font></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">(一)、安装数据存储服务器</span><span lang="EN-US" style=""> chunkserver</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US" style="">1</span><span style="font-family: 宋体;">、下载</span><span lang="EN-US" style="">GNU</span><span style="font-family: 宋体;">源码</span><span lang="EN-US" style=""> wget <a href="http://www.moosefs.com/files/mfs-1.5.12.tar.gz"><font color="#0000ff">[url]http://www.moosefs.com/files/mfs-1.5.12.tar.gz[/url]</font></a></span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US" style="">2</span><span style="font-family: 宋体;">、解包</span><span lang="EN-US" style=""> tar zxvf mfs-1.5.12.tar.gz</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US" style="">3</span><span style="font-family: 宋体;">、切换目录</span><span lang="EN-US" style=""> cd mfs-1.5.12</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US" style="">4</span><span style="font-family: 宋体;">、创建用户</span><span lang="EN-US" style=""> useradd mfs &ndash;s /sbin/nologin<span style="">&nbsp; </span></span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US" style="">5</span><span style="font-family: 宋体;">、配置</span><span style=""> </span><span lang="EN-US">./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US" style="">6</span><span style="font-family: 宋体;">、编译安装</span><span lang="EN-US" style=""> make ; make install</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span lang="EN-US" style=""><font size="3">&nbsp;</font></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">(二)配置数据存储服务器</span><span lang="EN-US" style="">chunkserver</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">数据存储服务器有</span><span lang="EN-US" style="">2</span><span style="font-family: 宋体;">个配置服务器需要修改,一个是主配置文件</span><span lang="EN-US" style=""> mfschunkserver.cfg ,</span><span style="font-family: 宋体;">另一个配置文件是</span><span lang="EN-US" style=""> mfshdd.cfg</span><span style="font-family: 宋体;">。每个服务器用来分配给</span><span lang="EN-US" style=""> MFS</span><span style="font-family: 宋体;">使用的空间最好是一个单独的硬盘或者一个</span><span lang="EN-US" style="">raid</span><span style="font-family: 宋体;">卷,最低要求是一个分区。作者举的例子是创建一个大文件,然后挂接在本地,这不好,只能用来做实验了。</span></font></div>
<span lang="EN-US" style="font-size: 10.5pt;">1</span><span style="font-size: 10.5pt; font-family: 宋体;">、修改配置文件</span><span lang="EN-US" style="font-size: 10.5pt;"> /usr/local/mfs/etc/mfschunkserver.cfg</span><span style="font-size: 10.5pt; font-family: 宋体;">。下面是修改了的配置文件:</span>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div><span lang="EN-US" style=""><img border="0" alt="" src="https://s4.51cto.com/attachment/200904/200904091239248762099.jpg" /></span></div>
<span lang="EN-US" style="">
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">这个配置文件里,没有注释符号&ldquo;</span><span lang="EN-US" style="">#</span><span style="font-family: 宋体;">&rdquo;就是被修改过的项了,接下来是里面某些项的含义说明:</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt;"><span lang="EN-US" style="font-family: 宋体;"><span style=""><font size="3">◆</font><span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font size="3"><span lang="EN-US" style="">MASTER_HOST = 192.168.0.19 </span><span style="font-family: 宋体;">元数据服务器的名称或地址,可以是主机名,也可以是</span><span lang="EN-US" style="">ip</span><span style="font-family: 宋体;">地址,只要数据存储服务器能访问到元数据服务器就行。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt;"><span lang="EN-US" style="font-family: 宋体;"><span style=""><font size="3">◆</font><span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font size="3"><span lang="EN-US" style="">LOCK_FILE = /var/run/mfs/mfschunkserver.pid </span><span style="font-family: 宋体;">与元数据服务器</span><span lang="EN-US" style="">master</span><span style="font-family: 宋体;">的处理完全相同</span><span lang="EN-US" style="">.</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt;"><span lang="EN-US" style="font-family: 宋体;"><span style=""><font size="3">◆</font><span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font size="3"><span lang="EN-US" style="">CSSERV_LISTEN_PORT = 9422 CSSERV&mdash;chunkserver,</span><span style="font-family: 宋体;">这个监听端口用于与其它数据存储服务器间的连接,通常是数据复制。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt 39pt; text-indent: -18pt;"><span lang="EN-US" style="font-family: 宋体;"><span style=""><font size="3">◆</font><span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;">&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang="EN-US" style=""><font size="3">HDD_CONF_FILENAME = </font><a name="OLE_LINK1"><font size="3">/usr/local/mfs/etc/mfshdd.cfg</font></a><font size="3"> </font></span><font size="3"><span style="font-family: 宋体;">分配给</span><span lang="EN-US" style="">MFS</span><span style="font-family: 宋体;">使用的磁盘空间配置文件的位置。</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US" style="">2</span><span style="font-family: 宋体;">、修改配置文件</span><span lang="EN-US" style="">/usr/local/mfs/etc/mfshdd.cfg</span><span style="font-family: 宋体;">。在我的服务器上,只有一个</span><span lang="EN-US" style="">1T</span><span style="font-family: 宋体;">的</span><span lang="EN-US" style="">SATA</span><span style="font-family: 宋体;">硬盘,分了一个</span><span lang="EN-US" style="">800G</span><span style="font-family: 宋体;">容量的分区来做为</span><span lang="EN-US" style="">MFS</span><span style="font-family: 宋体;">存储服务的组成部分。为了使</span><span lang="EN-US" style="">mfs</span><span style="font-family: 宋体;">拥有写目录的权限,需要修改目录的属主。我的服务器的分区挂接点是</span><span lang="EN-US" style=""> /data , </span><span style="font-family: 宋体;">用</span><span lang="EN-US" style=""> chown &ndash;R mfs:mfs /data </span><span style="font-family: 宋体;">把属主改变。因为我的每个服务器只需贡献一个分区做为</span><span lang="EN-US" style="">MFS,</span><span style="font-family: 宋体;">因此配置文件只需要如下一行内容就可以了:</span></font></div>
<div><img border="0" alt="" src="https://s4.51cto.com/attachment/200904/200904091239248804880.jpg" /></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt 36pt; text-indent: -36pt;"><span lang="EN-US" style=""><span style=""><font size="3">(四)</font><span style="font-weight: normal; font-size: 7pt; line-height: normal; font-style: normal; font-variant: normal;">&nbsp;&nbsp; </span></span></span><font size="3"><span style="font-family: 宋体;">关闭数据存储服务器</span></font></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0pt;"><font size="3"><span style="font-family: 宋体;">跟元数据服务器</span><span lang="EN-US" style="">master</span><span style="font-family: 宋体;">相似,执行命令</span><span lang="EN-US" style=""> /usr/local/mfs/sbin/mfschunkserver &ndash;s , chunkserver</span><span style="font-family: 宋体;">服务就停下来了。为了使系统重启过程能自动启动</span><span lang="EN-US" style="">chunkserver&nbsp;</span><span style="font-family: 宋体;">服务,可以通过在</span><span lang="EN-US" style="">/etc/rc.local</span><span style="font-family: 宋体;">文件追加行</span><span style=""> <span style="">&nbsp;</span><span lang="EN-US">/usr/local/mfs/sbin/mfschunkserver start </span></span><span style="font-family: 宋体;">来达到这个目的(</span><span lang="EN-US" style="">master</span><span style="font-family: 宋体;">的自动重启处理也可同样处理)。</span></font></div>
</span>
<p>本文出自 &ldquo;<a href="http://sery.blog.51cto.com/">sery</a>&rdquo; 博客,请务必保留此出处<a href="http://sery.blog.51cto.com/10037/147756">http://sery.blog.51cto.com/10037/147756</a></p>
</span></font></div>