Jhr分布式文件系统MooseFS.docx

上传人:b****1 文档编号:10353048 上传时间:2023-05-25 格式:DOCX 页数:18 大小:197.64KB
下载 相关 举报
Jhr分布式文件系统MooseFS.docx_第1页
第1页 / 共18页
Jhr分布式文件系统MooseFS.docx_第2页
第2页 / 共18页
Jhr分布式文件系统MooseFS.docx_第3页
第3页 / 共18页
Jhr分布式文件系统MooseFS.docx_第4页
第4页 / 共18页
Jhr分布式文件系统MooseFS.docx_第5页
第5页 / 共18页
Jhr分布式文件系统MooseFS.docx_第6页
第6页 / 共18页
Jhr分布式文件系统MooseFS.docx_第7页
第7页 / 共18页
Jhr分布式文件系统MooseFS.docx_第8页
第8页 / 共18页
Jhr分布式文件系统MooseFS.docx_第9页
第9页 / 共18页
Jhr分布式文件系统MooseFS.docx_第10页
第10页 / 共18页
Jhr分布式文件系统MooseFS.docx_第11页
第11页 / 共18页
Jhr分布式文件系统MooseFS.docx_第12页
第12页 / 共18页
Jhr分布式文件系统MooseFS.docx_第13页
第13页 / 共18页
Jhr分布式文件系统MooseFS.docx_第14页
第14页 / 共18页
Jhr分布式文件系统MooseFS.docx_第15页
第15页 / 共18页
Jhr分布式文件系统MooseFS.docx_第16页
第16页 / 共18页
Jhr分布式文件系统MooseFS.docx_第17页
第17页 / 共18页
Jhr分布式文件系统MooseFS.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Jhr分布式文件系统MooseFS.docx

《Jhr分布式文件系统MooseFS.docx》由会员分享,可在线阅读,更多相关《Jhr分布式文件系统MooseFS.docx(18页珍藏版)》请在冰点文库上搜索。

Jhr分布式文件系统MooseFS.docx

Jhr分布式文件系统MooseFS

分布式文件系统MFS(moosefs)实现存储共享

作者:

田逸()

由于用户数量的不断攀升,我对访问量大的应用实现了可扩展、高可靠的集群部署(即lvs+keepalived的方式),但仍然有用户反馈访问慢的问题。

通过排查个服务器的情况,发现问题的根源在于共享存储服务器NFS。

在我这个网络环境里,N个服务器通过nfs方式共享一个服务器的存储空间,使得NFS服务器不堪重负。

察看系统日志,全是nfs服务超时之类的报错。

一般情况下,当nfs客户端数目较小的时候,NFS性能不会出现问题;一旦NFS服务器数目过多,并且是那种读写都比较频繁的操作,所得到的结果就不是我们所期待的。

下面是某个集群使用nfs共享的示意图:

这种架构除了性能问题而外,还存在单点故障,一旦这个NFS服务器发生故障,所有靠共享提供数据的应用就不再可用,尽管用rsync方式同步数据到另外一个服务器上做nfs服务的备份,但这对提高整个系统的性能毫无帮助。

基于这样一种需求,我们需要对nfs服务器进行优化或采取别的解决方案,然而优化并不能对应对日益增多的客户端的性能要求,因此唯一的选择只能是采取别的解决方案了;通过调研,分布式文件系统是一个比较合适的选择。

采用分布式文件系统后,服务器之间的数据访问不再是一对多的关系(1个NFS服务器,多个NFS客户端),而是多对多的关系,这样一来,性能大幅提升毫无问题。

到目前为止,有数十种以上的分布式文件系统解决方案可供选择,如lustre,hadoop,Pnfs等等。

我尝试了PVFS,hadoop,moosefs这三种应用,参看了lustre、KFS等诸多技术实施方法,最后我选择了moosefs(以下简称MFS)这种分布式文件系统来作为我的共享存储服务器。

为什么要选它呢?

我来说说我的一些看法:

1、实施起来简单。

MFS的安装、部署、配置相对于其他几种工具来说,要简单和容易得多。

看看lustre700多页的pdf文档,让人头昏吧。

2、不停服务扩容。

MFS框架做好后,随时增加服务器扩充容量;扩充和减少容量皆不会影响现有的服务。

注:

hadoop也实现了这个功能。

3、恢复服务容易。

除了MFS本身具备高可用特性外,手动恢复服务也是非常快捷的,原因参照第1条。

4、我在实验过程中得到作者的帮助,这让我很是感激。

MFS特性(根据官方网站翻译)

★高可靠性(数据能被分成几个副本存储在不同的计算机里)

★通过增加计算机或增加新的硬盘动态扩充可用磁盘空间

★可以设置删除文件的空间回收时间

[root@mysql-bkserydir]#mfsgettrashtimebind-9.4.0.tar.gz

bind-9.4.0.tar.gz:

600

文件被删除10分钟后(600秒),才真正删除文件,回收磁盘空间。

★为文件创建快照

MFS文件系统的组成

1、元数据服务器。

在整个体系中负责管理管理文件系统,目前MFS只支持一个元数据服务器master,这是一个单点故障,需要一个性能稳定的服务器来充当。

希望今后MFS能支持多个master服务器,进一步提高系统的可靠性。

2、数据存储服务器chunkserver。

真正存储用户数据的服务器。

存储文件时,首先把文件分成块,然后这些块在数据服务器chunkserver之间复制(复制份数可以手工指定,建议设置副本数为3)。

数据服务器可以是多个,并且数量越多,可使用的“磁盘空间”越大,可靠性也越高。

3、客户端。

使用MFS文件系统来存储和访问的主机称为MFS的客户端,成功挂接MFS文件系统以后,就可以像以前使用NFS一样共享这个虚拟性的存储了。

元数据服务器安装和配置

元数据服务器可以是linux,也可以是unix,你可以根据自己的使用习惯选择操作系统,在我的环境里,我是用freebsd做为MFS元数据的运行平台。

GNU源码,在各种类unix平台的安装都基本一致。

(一)安装元数据服务

1、下载GNU源码wget

2、解包tarzxvfmfs-1.5.12.tar.gz

3、切换目录cdmfs-1.5.12

4、创建用户useraddmfs–s/sbin/nologin

5、配置./configure--prefix=/usr/local/mfs--with-default-user=mfs--with-default-group=mfs

6、编译安装make;makeinstall

(二)配置元数据服务

元数据服务器的配置文件是mfsmaster.cfg,我在安装MFS时指定了前缀,因此这个文件的位置在/usr/local/mfs/etc/mfsmaster.cfg.我们打开这个配置文件,看看都有哪些内容:

#WORKING_USER=mfs

#WORKING_GROUP=mfs

#LOCK_FILE=/var/run/mfs/mfsmaster.pid

#DATA_PATH=/usr/local/mfs/var/mfs

#SYSLOG_IDENT=mfsmaster

#BACK_LOGS=50

#REPLICATIONS_DELAY_INIT=300

#REPLICATIONS_DELAY_DISCONNECT=3600

#MATOCS_LISTEN_HOST=*

#MATOCS_LISTEN_PORT=9420

#MATOCU_LISTEN_HOST=*

#MATOCU_LISTEN_PORT=9421

#CHUNKS_LOOP_TIME=300

#CHUNKS_DEL_LIMIT=100

#CHUNKS_REP_LIMIT=15

尽管每行都被注释掉了,但它们却是配置文件的默认值,要改变这些值,需要取消注释,然后明确指定其取值。

接下来说明一下其中一些项目的含义。

◆LOCK_FILE=/var/run/mfs/mfsmaster.pid文件锁所在的位置,它的功能是避免启动多次启动同一个守护进程。

由于系统中本来不存在目录/var/run/mfs,因此需要手动创建mkdir/var/run/mfs,然后更改其属主chown–Rmfs:

mfs/var/run/mfs这样MFS服务就能对这个目录有创建/写入mfsmaster.pid文件的权限了。

◆DATA_PATH=/usr/local/mfs/var/mfs数据存放路径,只元数据的存放路径。

那么这些数据都包括哪些呢?

进目录看看,大致分3种类型的文件:

这些文件也同样要存储在其他数据存储服务器的相关目录。

◆MATOCS_LISTEN_PORT=9420MATOCS--mastertochunkserver,即元数据服务器使用9420这个监听端口来接受数据存储服务器chunkserver端的连接。

◆MATOCU_LISTEN_PORT=9421元数据服务器在9421端口监听,用以接受客户端对MFS进行远程挂接(客户端以mfsmount挂接MFS)

◆其他部分看字面意思都不难理解。

还有几个与时间有关的数值,其单位是秒。

这个配置文件,不必做修改就能工作了。

(三)元数据服务器master启动

元数据服务器可以单独启动,即使没有任何数据存储服务器(chunkserver)也是能正常工作的,因此当我们安装配置完MFS后,即可启动它。

执行命令/usr/local/mfs/sbin/mfsmasterstart,如果没有意外,元数据库服务器就应该作为一个守护进程运行起来。

现在我们可以通过3个方面来检查一下MFSmaster的运行状况:

1、检查进程

2、检查网络状态

3、检查系统日志

MFS的日志会直接写入系统日志。

当我们增加数据存储服务器(chunkserver)或数据存储服务器(chunkserver)处故障时,都能在系统日志找到这些记录。

注意,这个日志跟元数据变化日志不是一回事情。

(四)、关闭元数据服务器

关闭元数据服务器,务必使用/usr/local/mfs/sbin/mfsmaster–s这种方式,如果直接使用kill杀死进程,将导致下次启动时出现找不到相关文件,而不能正常启动服务器。

这个一定要谨慎。

当然,如果发生了这个事情,还是可以通过mfsmetastore来恢复的。

数据存储chunkserver服务器的安装配置

数据存储服务器chunkserver也是可以运行在各种类unix平台的,因此不再多说。

一个MFS环境到底能集群多少服务器,作者的说法是上PB容量,个人建议,最好3台以上;并且专门用来做存储,不要把它跟master搞到一个机器(理论上没问题,实现也是可以的,但这不是一个好策略)。

因为每个数据存储服务器的安装和配置都是相同的,所以只需按照一个服务器的操作就可以了。

(一)、安装数据存储服务器chunkserver

1、下载GNU源码wget

2、解包tarzxvfmfs-1.5.12.tar.gz

3、切换目录cdmfs-1.5.12

4、创建用户useraddmfs–s/sbin/nologin

5、配置./configure--prefix=/usr/local/mfs--with-default-user=mfs--with-default-group=mfs

6、编译安装make;makeinstall

(二)配置数据存储服务器chunkserver

数据存储服务器有2个配置服务器需要修改,一个是主配置文件mfschunkserver.cfg,另一个配置文件是mfshdd.cfg。

每个服务器用来分配给MFS使用的空间最好是一个单独的硬盘或者一个raid卷,最低要求是一个分区。

作者举的例子是创建一个大文件,然后挂接在本地,这不好,只能用来做实验了。

1、修改配置文件/usr/local/mfs/etc/mfschunkserver.cfg。

下面是修改了的配置文件:

#WORKING_USER=mfs

#WORKING_GROUP=mfs

#DATA_PATH=/usr/local/mfs/var/mfs

#LOCK_FILE=/var/run/mfs/mfschunkserver.pid

#SYSLOG_IDENT=mfschunkserver

#BACK_LOGS=50

#MASTER_RECONNECTION_DELAY=30

MASTER_HOST=192.168.0.19

MASTER_PORT=9420

#MASTER_TIMEOUT=60

#CSSERV_LISTEN_HOST=*

#CSSERV_LISTEN_PORT=9422

#CSSERV_TIMEOUT=60

#CSTOCS_TIMEOUT=60

#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,这个监听端口用于与其它数据存储服务器间的连接,通常是数据复制。

◆HDD_CONF_FILENAME=/usr/local/mfs/etc/mfshdd.cfg分配给MFS使用的磁盘空间配置文件的位置。

2、修改配置文件/usr/local/mfs/etc/mfshdd.cfg。

在我的服务器上,只有一个1T的SATA硬盘,分了一个800G容量的分区来做为MFS存储服务的组成部分。

为了使mfs拥有写目录的权限,需要修改目录的属主。

我的服务器的分区挂接点是/data,用chown–Rmfs:

mfs/data把属主改变。

因为我的每个服务器只需贡献一个分区做为MFS,因此配置文件只需要如下一行内容就可以了:

/data

这个文件默认情况下有好几行,我们最好把它删掉,因为按常规情况用注释符号“#”好像不起作用。

(三)启动数据存储服务器chunkserver

在数据存储服务器chunkserver执行命令/usr/local/mfs/sbin/mfschunkserverstart启动数据存储守护进程.通过以下几种方式来检查chunkserver的运行状态.

1、查看进程psaux|grepmfschunkserver

2、查看网络状态,正常情况下应该看见9422处于监听状态,如果有其他数据存储服务器chunkserver在同一个元数据服务器master管理下运行的话,应该能看见其他chunkserver跟本机的连接情况:

3、查看元数据服务器的系统日志,可以看见新增的数据存储服务器chunkserver被加入。

tail-f/var/log/messages

Mar2714:

28:

00mfs-ctrlmfsmaster[29647]:

server3(192.168.0.71):

usedspace:

65827913728(61GB),totalspace:

879283101696(818GB),usage:

7.49%

(四)关闭数据存储服务器

跟元数据服务器master相似,执行命令/usr/local/mfs/sbin/mfschunkserver–s,chunkserver服务就停下来了。

为了使系统重启过程能自动启动chunkserver 服务,可以通过在/etc/rc.local文件追加行/usr/local/mfs/sbin/mfschunkserverstart来达到这个目的(master的自动重启处理也可同样处理)。

MFS客户端的安装及配置

我的生产环境,只有centos和freebsd两种环境,因此下面的描述,只有centos及freebsd挂接MFS文件系统的情形,其他类型的unix系统,待日后尝试。

对比前面的操作过程,客户端挂接后使用MFS集群文件系统才是最费时的事情。

一、centos作为MFS的客户端。

(一)安装MFS客户端

◆Mfsmount需要依赖FUSE,因此需要先安装好fuse,这里我选用 fuse-2.7.4.tar.gz。

1、解包tarzxvffuse-2.7.4.tar.gz

2、切换目录cdfuse-2.7.4.

3、配置./configure

4、编译安装make;makeinstall

如果系统已经安装了fuse,则跳过这个步骤。

◆安装MFS客户端程序

1、修改环境变量文件/etc/profile,追加下面的行,然后再执行命令source/etc/profile使修改生效。

exportKG_CONFIG_PATH=/usr/local/lib/pkgconfig:

$PKG_CONFIG_PATH

如果不执行这个操作,在后面安装MFS的过程中,执行命令

./configure--enable-mfsmount时可能出现"checkingforFUSE...no configure:

error:

mfsmountbuildwasforced,butfusedevelopmentpackageisnotinstalled"这样的错误,而不能正确安装MFS客户端程序。

2、解包tarzxvfmfs-1.5.12.tar.gz

3、切换目录cdmfs-1.5.12

4、创建用户useraddmfs–s/sbin/nologin

5、配置./configure--prefix=/usr/local/mfs--with-default-user=mfs--with-default-group=mfs--enable-mfsmount

6、编译安装make;makeinstall

◆检查MFS客户端安装的结果。

通过查看目录/usr/local/mfs/bin目录的文件,应该发现如下文件:

(二)挂接和使用MFS文件系统

1、创建挂接点mkdir/mnt/mfs

2、挂接MFS/usr/local/mfs/bin/mfsmount–h192.168.0.19.注意,所有的MFS都是挂接同一个元数据服务器master,而不是其他数据存储服务器chunkserver!

3、通过查看磁盘使用情况来检查是否被挂接成功。

[root@mysql-bk~]#df-h

FilesystemSizeUsedAvailUse%Mountedon

/dev/hda119G2.7G16G15%/

/dev/hda751G180M48G1%/backup

/dev/hdc1145G6.4G131G5%/data

/dev/hda519G173M18G1%/home

/dev/hda324G217M23G1%/var

/dev/hda229G1.6G26G6%/usr

tmpfs1.7G01.7G0%/dev/shm

MFS2.5T256G2.2T11%/mnt/mfs

4、进入目录/mnt/mfs,上传一个文件,看是否正常?

接着在手动用touch创建一个文件,然后再删除它们,看是否可以正常操作。

5、设置文件副本数量,建议以3份为佳。

设置副本数目

mfsrsetgoal3/mnt/mfs

查看设置是否如我所愿

mfsgetgoal/mnt/mfs/serydir/bind-9.4.0.tar.gz

/mnt/mfs/serydir/bind-9.4.0.tar.gz:

3

6、设置删除文件后空间回收时间。

默认的回收时间为7天(604800秒)

修改回收时间为10分钟

mfsrsettrashtime600/mnt/mfs

6、把挂接命令追加到文件/etc/rc.local,可实现开机自动启动挂接MFS.

二、freebsd作为MFS客户端

Freebsd安装和挂接MFS集群文件系统,比centos操作起来要复杂一些.mfsmount需要依赖fuse,并且需要在内核中加载fusefs模块。

(一)安装fuse

1、解包tarzxvffuse-2.7.4.tar.gz

2、切换目录cdfuse-2.7.4.

3、配置./configure

4、编译安装make;makeinstall

如果系统已经安装了fuse,则跳过这个步骤。

(二)安装内核模块fusefs-kmod

1、执行系统命令sysinstall

2、光标选定Configure,进入下一步。

3、选择“Packages”,进入下一步。

4、选择“FTP”作为安装源,进入下一步。

5、选择“kld”后,回车执行默认动作“[OK]”,进入下一步选软件包。

6、选择“fusefs-kmod-0.3.9.p1_2”,按[OK]返回到第“4”步出现的那个操作界面。

这时我们用“Tab”键选中底部右边的“Install”,完成安装后,会出现一个安装成功的提示,然后瞬间消失。

◆加载fusefs模块kldload/usr/local/modules/fuse.ko.如果加载不成功,请检查是否存在模块文件fuse.ko.

◆检查fusefs模块是否被加载到内核:

如果没有类似上面馆的输出,就表明fusefs模块没有加载成功。

(三)安装包pkg-config:

1、cd/usr/ports/devel/pkg-config

2、makeinstallclean

(四)安装MFS客户端

1、解包tarzxvfmfs-1.5.12.tar.gz

2、切换目录cdmfs-1.5.12

3、创建用户pwuseraddmfs–s/sbin/nologin

4、配置./configure--prefix=/usr/local/mfs--with-default-user=mfs--with-default-group=mfs--enable-mfsmount

5、编译安装make;makeinstall

◆检查MFS客户端安装的结果。

通过查看目录/usr/local/mfs/bin目录的文件,应该发现如下文件:

(五)挂接和使用MFS文件系统

1、创建挂接点mkdir/mnt/mfs

2、挂接MFS/usr/local/mfs/bin/mfsmount–h192.168.0.19.注意,所有的MFS都是挂接同一个元数据服务器master,而不是其他数据存储服务器chunkserver!

3、通过查看磁盘使用情况来检查是否被挂接成功。

[root@mysql-bk~]#df-h

FilesystemSizeUsedAvailCapacityMountedon

/dev/ad4s1a26G570M24G2%/

devfs1.0K1.0K0B100%/dev

/dev/ad4s1g356G157G170G48%/data

/dev/ad4s1f17G215M15G1%/home

/dev/ad4s1d28G1.1G25G4%/usr

/dev/ad4s1e24G362M21G2%/var

/dev/fuse02.5T256G2.2T11%/mnt/mfs

4、进入目录/mnt/mfs,我们可以看见前面步骤用centos上传到分布式文件系统MFS里的文件。

5、设置文件副本数量,建议以3份为佳。

设置副本数目

mfsrsetgoal3/mnt/mfs

查看设置是否如我所愿

mfsgetgoal/mnt/mfs/serydir/bind-9.4.0.tar.gz

/mnt/mfs/serydir/bind-9.4.0.tar.gz:

3

6、设置删除文件后空间回收时间。

默认的回收时间为7天(604800秒)

修改回收时间为10分钟

mfsrsettrashtime600/mnt/mfs

(六)自动挂接MFS

创建文件/etc/rc.local,加入如下内容:

.

#!

/bin/sh

/sbin/kldload/usr/local/modules/fuse.ko

/usr/local/mfs/bin/mfsmount-h192.168.0.19

就能实现开机或重启系统自动挂接MFS文件系统。

破坏性测试

一、测试数据存储服务器

我用5个服务器组成了MFS的存储平台,其中一个是master,其余四个

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2