mfs 分布式文件系统 网络存储系统.docx
《mfs 分布式文件系统 网络存储系统.docx》由会员分享,可在线阅读,更多相关《mfs 分布式文件系统 网络存储系统.docx(22页珍藏版)》请在冰豆网上搜索。
mfs分布式文件系统网络存储系统
分布式文件系统MFS(moosefs实现存储共享(第二版
到目前为止,有数十种以上的分布式文件系统解决方案可供选择,如lustre,hadoop,Pnfs等等。
我尝试了PVFS,hadoop,moosefs这三种应用,参看了lustre、KFS等诸多技术实施方法,最后我选择了moosefs(以下简称MFS)这种分布式文件系统来作为我的共享存储服务器。
为什么要选它呢?
我来说说我的一些看法:
8Q+H2O%P0|!
i'c"b;p 1、 实施起来简单。
MFS的安装、部署、配置相对于其他几种工具来说,要简单和容易得多。
看看lustre700多页的pdf文档,让人头昏吧。
5^ z8e.p/s,q2W3H {#G 2、 不停服务扩容。
MFS框架做好后,随时增加服务器扩充容量;扩充和减少容量皆不会影响现有的服务。
注:
hadoop也实现了这个功能。
'c8Q"]$^(E 3、 恢复服务容易。
除了MFS本身具备高可用特性外,手动恢复服务也是非常快捷的,原因参照第1条。
2I0f/i5O;}6z7z,_ 4、 我在实验过程中得到作者的帮助,这让我很是感激。
-r+
#5#6低加排气管道
由于用户数量的不断攀升,我对访问量大的应用实现了可扩展、高可靠的集群部署(即lvs+keepalived的方式),但仍然有用户反馈访问慢的问题。
通过排查个服务器的情况,发现问题的根源在于共享存储服务器NFS。
在我这个网络环境里,N个服务器通过nfs方式共享一个服务器的存储空间,使得NFS服务器不堪重负。
察看系统日志,全是nfs服务超时之类的报错。
一般情况下,当nfs客户端数目较小的时候,NFS性能不会出现问题;一旦NFS服务器数目过多,并且是那种读写都比较频繁的操作,所得到的结果就不是我们所期待的。
下面是某个集群使用nfs共享的示意图:
560
这种架构除了性能问题而外,还存在单点故障,一旦这个NFS服务器发生故障,所有靠共享提供数据的应用就不再可用,尽管用rsync方式同步数据到另外一个服务器上做nfs服务的备份,但这对提高整个系统的性能毫无帮助。
基于这样一种需求,我们需要对nfs服务器进行优化或采取别的解决方案,然而优化并不能对应对日益增多的客户端的性能要求,因此唯一的选择只能是采取别的解决方案了;通过调研,分布式文件系统是一个比较合适的选择。
采用分布式文件系统后,服务器之间的数据访问不再是一对多的关系(1个NFS服务器,多个NFS客户端),而是多对多的关系,这样一来,性能大幅提升毫无问题。
到目前为止,有数十种以上的分布式文件系统解决方案可供选择,如lustre,hadoop,Pnfs等等。
我尝试了PVFS,hadoop,moosefs这三种应用,参看了lustre、KFS等诸多技术实施方法,最后我选择了moosefs(以下简称MFS)这种分布式文件系统来作为我的共享存储服务器。
为什么要选它呢?
我来说说我的一些看法:
1、实施起来简单。
MFS的安装、部署、配置相对于其他几种工具来说,要简单和容易得多。
看看lustre700多页的pdf文档,让人头昏吧。
2、不停服务扩容。
MFS框架做好后,随时增加服务器扩充容量;扩充和减少容量皆不会影响现有的服务。
注:
hadoop
5
3、恢复服务容易。
除了MFS本身具备高可用特性外,手动恢复服务也是非常快捷的,原因参照第1条。
4、我在实验过程中得到作者的帮助,这让我很是感激。
室内
MFS特性(根据官方网站翻译)
★高可靠性(数据能被分成几个副本存储在不同的计算机里)
★通过增加计算机或增加新的硬盘动态扩充可用磁盘空间
270
★可以设置删除文件的空间回收时间
[root@mysql-bkserydir]#mfsgettrashtimebind-9.4.0.tar.gz
20
bind-9.4.0.tar.gz:
600
文件被删除10分钟后(600秒),才真正删除文件,回收磁盘空间。
★为文件创建快照
MFS文件系统的组成
1、元数据服务器。
在整个体系中负责管理管理文件系统,目前MFS只支持一个元数据服务器master,这是一个单点故障,需要一个性能稳定的服务器来充当。
希望今后MFS能支持多个master40
2、元数据日志服务器。
备份master服务器的变化日志文件,文件类型为
0.029405。
当元数据服务器数据丢失或者损毁,可从日志服务器取得文件进行恢复。
3、chunkserver。
真正存储用户数据的服务器。
存储文件时,首先把文件分成块,然后这些块在数据服务器chunkserver之间复制(复制份数可以手工指定,建议设置副本数为3)。
数据服务器可以是多个,并且数量越多,可使用的“磁盘空间”越大,可靠性也越高。
4、客户端。
使用MFS文件系统来存储和访问的主机称为MFS的客户端,成功挂接镀锌铁皮(0.5NFS一样共享这个虚拟性的存储了。
元数据服务器安装和配置
元数据服务器可以是linux,也可以是unix,
在我的环境里,我是用freebsd做为MFS元数据的运行平台。
GNU源码,在各种类unix平台的安装都基本一致。
(一)安装元数据服务
1、下载GNU源码
wget
2、解包tarzxvfmfs-1.6.11.tar.gz
3
红
1.6.11
4、创建用户useraddmfs–s/sbin/nologin
5、配置./configure--prefix=/usr/local/mfs--with-default-user=mfs--with-default-group=mfs
6、编译安装make;makeinstall
(二)配置元数据服务
元数据服务器的配置文件被放置于安装目录/usr/local/mfs/etc。
与mfs-1.5.12版本不同的是:
mfs-1.6.xmfsmaster.cfg.dist。
为了使mfsmaster正常工作,需要两个配置文件mfsmaster.cfg及
166
mfs客户端挂接时使用)。
(1)主配置文件mfsmaster.cfg,可直接从模版文件拷贝而来,打开这个配置文件/usr/local/mfs/etc/mfsmaster.cfg,看看都有哪些内容:
J1205
#WORKING_USER=mfs
#1高加排汽管道
#SYSLOG_IDENT=mfsmaster
#LOCK_MEMORY=0
#NICE_LEVEL=-19
#EXPORTS_FILENAME=/usr/local/mfs/etc/mfsexports.cfg
#DATA_PATH=/usr/local/mfs/var/mfs
#BACK_LOGS=50
#REPLICATIONS_DELAY_INIT=300
168
#REPLICATIONS_DELAY_DISCONNECT=3600
#MATOML_LISTEN_HOST=*
#MATOML_LISTEN_PORT=9419
9
#MATOCS_LISTEN_PORT=9420
#MATOCU_LISTEN_HOST=*
#MATOCU_LISTEN_PORT=9421
室外
#CHUNKS_LOOP_TIME=300
#CHUNKS_DEL_LIMIT=100
#CHUNKS_WRITE_REP_LIMIT=1
#CHUNKS_READ_REP_LIMIT=5
#REJECT_OLD_CLIENTS=0
#deprecated,toberemovedinMooseFS1.7
#LOCK_FILE=/var/run/mfs/mfsmaster.lock
15
尽管每行都被注释掉了,但它们却是配置文件的默认值,要改变这些值,需要取消注释,然后明确指定其取值。
接下来说明一下其中一些项目的含义。
◆EXPORTS_FILENAME=/usr/local/mfs/etc/mfsexports.cfg权限控制文件的存放位置。
岩棉管壳
◆DATA_PATH=/usr/local/mfs/var/mfs数据存放路径,只元数据的存放路径。
那么这些数据都包括哪些呢?
进目录看看,大致分3种类型的文件:
30
这些文件也同样要存储在其他数据存储服务器的相关目录。
MATOCS_LISTEN_PORT=9420MATOCS--mastertochunkserver,即元数据服务器使用9420这个监听端口来接受数据存储服务器chunkserver端的连接。
◆MATOML_LISTEN_PORT=9419MATOML---mastertometalogger,用于备份元数据服务器的变化日志。
注:
Mfs-1.5.12以前的版本没有这个项目。
◆MATOCU_LISTEN_PORT=9421元数据服务器在9421端口监听,用以接受客户端对MFS进行远程挂接(客户端以mfsmount挂接MFS镀锌铁皮(0.5
◆其他部分看字面意思都不难理解。
还有几个与时间有关的数值,其单位是秒。
这个配置文件,不必做修改就能工作了。
(2)配置文件/usr/local/mfs/etc/mfsexports.cfg,也可直接从模版文件复制而来。
这个文件的内容,十分类似NFS服务器的exports文件.实际配置时,可参照这个文件的默认行来修改以满足自己的应用需求.我的mfsexports.cfg
37.3
192.168.93.0/24/rw
(3)复制文件
cp/usr/local/mfs/var/mfs/metadata.mfs.empty/usr/local/mfs/var/mfs/metadata.mfs
红
这是一个8字节的文件,为mfs-1.6.x新增项目。
(三)
黑master启动
元数据服务器可以单独启动,即使没有任何数据存储服务器(chunkserver)也是能正常工作的,因此当我们安装配置完MFS后,即可启动它。
执行命令/usr/local/mfs/sbin/mfsmasterstart,如果没有意外,元数据库服务器就应该作为一个守护进程运行起来。
现在我们可以通过3个方面来检查一下MFSmaster的运行状况:
1、检查进程
2、检查网络状态
3
#1高加排汽管道检查系统日志
MFS的日志会直接写入系统日志。
当我们增加数据存储服务器(chunkserver136
chunkserver)处故障时,都能在系统日志找到这些记录。
注意,这个日志跟元数据变化日志不是一回事情。
(四)、关闭元数据服务器
关闭元数据服务器,务必使用
168
这种方式,如果直接使用kill杀死进程,将导致下次启动时出现找不到相关文件,而不能正常启动服务器。
这个一定要谨慎。
当然,如果发生了这个事情,还是可以通过mfsmetastore来恢复的。
元数据日志服务器安装和配置
9
元数据日志服务为mfs1.6以后版本新增的服务,即可以把元数据日志保留在元数据服务器,也可以单独存储。
为保证其可靠性,最好单独放置。
需要注意的是,源数据日志守护进程跟元数据服务器(master)在同一个服务器上,备份元数据日志的服务器作为它的客户端,从元数据服务器取得日志文件进行备份。
(
室内安装元数据日志服务器metalogger
1、下载GNU源码
wget
2、解包tarzxvfmfs-1.6.11.tar.gz
3、切换目录cdmfs-1.6.11
岩棉管壳4、创建用户useraddmfs–s/sbin/nologin
5、配置./configure--prefix=/usr/local/mfs--with-default-user=mfs--with-default-group=mfs50
6、编译安装make;makeinstall
(二)元数据日志服务(metalogger
0.034243
该服务仅需要一个配置文件,这里我们只需要从模板文件复制一个,然后稍微加以修改即可,下面是我的某个metalogger的配置文件:
303
#BACK_LOGS=50
#META_DOWNLOAD_FREQ=24
#MASTER_RECONNECTION_DELAY=5
#deprecated,toberemovedinMooseFS1.7
#LOCK_FILE=/var/run/mfs/mfsmetalogger.lock
[root@hynfs-2etc]#moremfsmetalogger.cfg
#WORKING_USER=mfs
#WORKING_GROUP=mfs
#SYSLOG_IDENT=mfsmetalogger
#LOCK_MEMORY=0
#NICE_LEVEL=-19
#DATA_PATH=/usr/local/mfs/var/mfs
J1504
MASTER_HOST=192.168.93.18
MASTER_PORT=9419
#MASTER_TIMEOUT=60
高压轴封漏汽
这个配置文件,唯一需要修改的地方就是MASTER_HOST,它的值必须是元数据服务器的主机名或者ip地址。
另外,为方便大家进一步理解,我把配置文件里其他几个项目简单的说明一下:
(1)SYSLOG_IDENT=mfsmetalogger元数据日志服务运行时,在系统日志输出的标识,下面给出一段系统日志:
24
(2)DATA_PATH=/usr/local/mfs/var/mfs从元数据服务器(master抓回文件,然后进行存放的路径。
(3)BACK_LOGS=50存放备份日志的总个数为50,超出50则轮转。
在做元数据恢复时,仅仅需要最近的那个日志文件备份,因此默认的日志个数就足够了,这也保证了日志备份不会写满整个分区。
(4)META_DOWNLOAD_FREQ=24元数据备份文件下载请求频率。
默认为24小时,即每隔一天从元数据服务器(MASTER下载一个metadata.mfs.back文件。
当元数据服务器关闭或者出故障时,matedata.mfs.back文件将消失,那么要恢复整个mfs,则需从metalogger服务器取得该文件。
请特别注意这个文件,它与日志文件一起,才能够恢复整个被损坏的分布式文件系统。
114
(三)元数据日志服务(metalogger)运行及关闭
1、启动过程为:
6
mfsmetaloggerdaemoninitializedproperly
/usr/local/mfs/sbin/mfsmetaloggerstart
workingdirectory:
/usr/local/mfs/var/mfs
lockfilecreatedandlocked
initializingmfsmetaloggermodules...
室内
启动过程如果不能跟元数据服务器进行通信的话,系统会给出错误信息。
2、关闭服务,执行命令/usr/local/mfs/sbin/mfsmetaloggerstop
3、检查服务的运行状况。
从两个方面看,一个是元数据服务器,另一个是本身的数据生成情况。
323
◆察看元数据服务器网络连接,可以看见日志服务器连接到元数据服务器的tcp9419端口。
◆查看日志服务器的工作目录,正常情况应该看见已经有文件生成了(从元数据服务器获取过来的)。
可以手动从元数据服务器复制一个日志文件过来比较文件的内容。
数据存储chunkserver服务器的安装配置
数据存储服务器chunkserver也是可以运行在各种类
20MFS环境到底能集群多少服务器,作者的说法是上PB容量,个人建议,最好3台以上;并且专门用来做存储,不要把它跟master搞到一个机器(理论上没问题,实现也是可以的,但这不是一个好策略)。
因为每个数据存储服务器的安装和配置都是相同的,所以只需按照一个服务器的操作就可以了。
(一)、安装数据存储服务器chunkserver
1、下载
岩棉管壳源码
wget
2、解包tarzxvfmfs-1.6.11.tar.gz
70
、切换目录cdmfs-1.6.11
4、创建用户useraddmfs–s/sbin/nologin
5、配置./configure--prefix=/usr/local/mfs--with-default-user=mfs--with-default-group=mfs
0.040464、编译安装make;makeinstall
(二)配置数据存储服务器chunkserver
数据存储服务器有2个配置服务器需要修改,一个是主配置文件mfschunkserver.cfg,另一个配置文件是mfshdd.cfg
0.971
raid卷,最低要求是一个分区。
作者举的例子是创建一个大文件,然后挂接在本地,这不是个好主意,只能用来做实验了。
1、修改配置文件/usr/local/mfs/etc/mfschunkserver.cfg。
下面是修改了的配置文件:
镀锌铁皮(0.5
#SYSLOG_IDENT=mfschunkserver
#BACK_LOGS=50
MASTER_PORT=9420
#MASTER_TIMEOUT=60
#CSSERV_TIMEOUT=60
#CSTOCS_TIMEOUT=60
#WORKING_USER=mfs
#WORKING_GROUP=mfs
#DATA_PATH=/usr/local/mfs/var/mfs
0.5
#MASTER_RECONNECTION_DELAY=30
34.2
#CSSERV_LISTEN_HOST=*
#CSSERV_LISTEN_PORT=9422
19.224
#HDD_CONF_FILENAME=/usr/local/mfs/etc/mfshdd.cfg
红
这个配置文件里,没有注释符号“#”就是被修改过的项了,接下来是里面某些项的含义说明:
◆MASTER_HOST=192.168.0.19元数据服务器的名称或地址,可以是主机名,也可以是ip地址,只要数据存储服务器能访问到元数据服务器就行。
黑
◆LOCK_FILE=/var/run/mfs/mfschunkserver.pid与元数据服务器master的处理完全相同.
◆CSSERV_LISTEN_PORT=9422CSSERV—chunkserver,这个监听端口用于与其它数据存储服务器间的连接,通常是数据复制。
◆p/usr/local/mfs/etc/mfshdd.cfg分配给MFS使用的磁盘空间配置文件的位置。
2、修改配置文件/usr/local/mfs/etc/mfshdd.cfg。
在我的服务器上,只有一个1T的SATA
305800G容量的分区来做为MFS存储服务的组成部分。
为了使mfs拥有写目录的权限,需要修改目录的属主。
我的服务器的分区挂接点是/data,chown–Rmfs:
mfs/data把属主改变。
因为我的每个服务器只需贡献一个分区做为MFS,因此配置文件只需要如下一行内容就可以了:
低压缸轴封漏汽
这个文件默认情况下有好几行,我们最好把它删掉,因为按常规情况用注释符号“#”好像不起作用。
/usr/local/mfs/sbin/mfschunkserverstart启动数据存储守护进程.通过以下几种方式来检查chunkserver的运行状态.
1、114
psaux|grepmfschunkserver
2、查看网络状态,正常情况下应该看见9422处于监听状态,如果有其他数据存储服务器chunkserver在同一个元数据服务器
3
查看元数据服务器的系统日志,可以看见新增的数据存储服务器chunkserver被加入。
管理下运行的话,应该能看见其他chunkserver跟本机的连接情况:
/data
(三)启动数据存储服务器chunkserver
在数据存储服务器
100
177
(四)关闭数据存储服务器
4、编译安装make;makeinstall
如果系统已经安装了fuse,则跳过这个步骤。
◆安装MFS客户端程序
1、修改环境变量文件/etc/profile,追加下面的行,然后再执行命令source/etc/profile使修改生效。
tail-f/var/log/messages
Mar2714:
28:
00mfs-ctrlmfsmaster[29647]:
server3(192.168.0.71:
usedspace:
65827913728(61GB,totalspace:
879283101696(818GB,usage:
7.49%
20
跟元数据服务器master相似,执行命令
岩棉管壳
chunkserver服务,可以通过在/etc/rc.local文件追加行/usr/local/mfs/sbin/mfschunkserverstart来达到这个目的(master的自动重启处理也可同样处理)。
MFS客户端的安装及配置
我的生产环境,只有centos和freebsd两种环境,因此下面的描述,只有centos及freebsd挂接MFS文件系统的情形,其他类型的unix系统,待日后尝试。
对比前面的操作过程,客户端挂接后使用MFS集群文件系统才是最费时的事情。
一、
2.576作为MFS的客户端。
(一)安装MFS镀锌铁皮(0.5
◆Mfsmount需要依赖FUSE,
因此需要先安装好fuse,这里我选用fuse-2.7.4.tar.gz。
1、解包tarzxvffuse-2.7.4.tar.gz
2、切换目录cdfuse-2.7.4.
3、配置
67.5
p
exportPKG_CONFIG_PATH=/usr/local/lib/pkgconfig:
$PKG_CONFIG_PATH
如果不执行这个操作,在后面安装
307的过程中,执行命令
.