有关mfs分布式文件系统的生设计学士学位论文.docx

上传人:b****8 文档编号:27919346 上传时间:2023-07-06 格式:DOCX 页数:34 大小:381.32KB
下载 相关 举报
有关mfs分布式文件系统的生设计学士学位论文.docx_第1页
第1页 / 共34页
有关mfs分布式文件系统的生设计学士学位论文.docx_第2页
第2页 / 共34页
有关mfs分布式文件系统的生设计学士学位论文.docx_第3页
第3页 / 共34页
有关mfs分布式文件系统的生设计学士学位论文.docx_第4页
第4页 / 共34页
有关mfs分布式文件系统的生设计学士学位论文.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

有关mfs分布式文件系统的生设计学士学位论文.docx

《有关mfs分布式文件系统的生设计学士学位论文.docx》由会员分享,可在线阅读,更多相关《有关mfs分布式文件系统的生设计学士学位论文.docx(34页珍藏版)》请在冰豆网上搜索。

有关mfs分布式文件系统的生设计学士学位论文.docx

有关mfs分布式文件系统的生设计学士学位论文

设计总说明

当前互联网高速发展,在互联网的众多应用中,视频网站是其中主要应之一。

视频文件中央存储是视频网站的视频总库,拥有该视频网站的所有视频文件。

以前的存储系统是san+nas的方式,特点是需要的厂家支持,要用专业的网络设备,专业的人才稀少,设备成本高昂。

1TB的存储空间的成本要5000,而现在互联网海量的视屏文件,上EB的存储空间,其主要的收入来自于广告,而版权,带宽是其主要的支出,加上运营,损耗,传统的存储方式成本实在太高,无法使用,于是需要使用低成本,高性能的解决方案。

由于科学技术的不断的发展,硬件成本不断的降低,大容量硬盘已经价格低廉,而传统的存储价格没有降低,于是有了利用硬盘价格便宜,用本地磁盘当存储的分布式存储的解决方案,来应对现在的形式。

由于中央存储是视频网站后端管理系统视频下发与分发的一个环节,性能要求主要来自于视频网站新视频下发与分发的环节。

以每天发布50部视频,每部视频1G为例,要求中央存储写性能20MB/s,以视频网站流媒体节点6的为例,同时读的性能要120MB/s。

稳定性要求是不会因为大流量而宕机。

冗余要求每个数据文件至少要有2份拷贝。

易用性要求当系统发生故障时能快速的恢复,当存储空间不足时,能够快速的扩容。

目录

1绪论1

1.1可靠性1

1.1.1可靠度的重要性1

1.1.2可信性基准程序法1

1.2故障注入2

1.2.1故障注入实现方法综述2

1.2.2软件实现的故障注入方法2

2方案综述3

2.1课题思路3

2.2模拟方法选择3

2.2.1故障、错误、失效概念3

2.2.2故障参数选择3

3软件模拟方案生成4

3.1故障、错误分类法及传播模型4

3.1.1ODC故障、错误分类4

3.1.2ODC分类下的数据4

3.1.3故障传播模型4

3.2错误、故障细化分析和模拟4

3.2.1错误类型分析4

3.2.2故障分析基础4

3.2.3赋值故障分析和模拟4

3.2.4控制故障分析和模拟4

3.2.5算法故障分析和模拟5

3.2.6时间/序列故障分析和模拟5

3.2.7接口故障分析和模拟5

3.2.8功能故障分析5

3.3软件故障模拟方案5

4硬件模拟方案生成6

4.1电气级硬件故障6

4.2硬件故障的表征及模拟方案6

4.2.1处理器硬件故障分析和模拟6

4.2.2地址总线硬件故障分析和模拟6

4.2.3内存和数据总线硬件故障分析和模拟6

4.3硬件故障模拟方案6

5结论8

参考文献9

附录10

谢辞11

1分布式文件系统moosefs

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

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

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

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

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

图8-1为某个集群使用nfs共享的情形:

图1-1多个应用共享nfs文件系统

这种架构除了性能问题而外,还存在单点故障,一旦这个NFS服务器发生故障,所有靠共享提供数据的应用就不再可用。

尽管用rsync方式同步数据到另外一个服务器上做nfs服务的备份,但这对提高整个系统的性能毫无帮助。

基于这样一种需求,我们需要对nfs服务器进行优化或采取别的解决方案。

然而优化并不能对应对日益增多的客户端的性能要求,因此唯一的选择只能是采取别的解决方案了。

通过调研,分布式文件系统是一个比较合适的选择。

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

1.1关于moosefs

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

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

为什么要选它呢?

我来说说我的一些看法:

1、实施起来简单。

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

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

2、不停服务扩容。

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

注:

hadoop也实现了这个功能。

3、恢复服务容易。

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

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

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

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

图8-2展示了这种特性:

图1-2MFS文件副本存储位置

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

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

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

bind-9.4.0.tar.gz:

600

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

★为文件创建快照

 

1.1.2MFS文件系统的组成

MFS分布式文件系统由元数据服务器、元数据日志服务器(也称备份服务器)、数据存储服务器、客户端(用户主机)等几部分组成:

·元数据服务器。

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

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

·元数据日志服务器。

备份master服务器的变化日志文件,文件类型为changelog_ml.*.mfs。

当元数据服务器数据丢失或者损毁,可从日志服务器取得文件进行恢复。

·数据存储服务器chunkserver。

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

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

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

·客户端。

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

 

1.1.3MFS读写处理过程

MFS读取数据分以下4个步骤:

1、客户端向元数据服务器发请求。

2、元数据服务器把所需数据存放的位置(chunkserver的ip地址及chunk编号)告知客户端。

3、客户端向已知chunk服务器请求发送数据。

4、客户端取得所需数据。

整个读取数据如图1-3所示(图片来源于官方网站www.moosefs.org):

图1-3moosefs读取数据过程

数据传输并不通过元数据服务器。

这既减轻了元数据服务器的压力,同时也大大增加了整个系统的吞吐能力。

在多个客户端读取数据时,读取点(chunkserver)有可能被分散到不同的服务器。

写入数据的过程比读取数据要复杂一些,它大致分8个步骤:

1、客户端向元数据服务器发送写入请求。

2、元数据服务器与chunkserver进行如下交互(这个过程是可选项目,只有当所需的chunks【注1】不存在时才进行这个交互):

1元数据库服务器指示在某些chunk服务器创建分块chunks.

2Chunk服务器告知元数据服务器,第①步的操作成功。

3、元数据服务器告知客户端,你可以在哪个chunk服务器的那个chunks写入数据。

4、向指定的chunk服务器写入数据。

5、与其他chunk服务器进行数据同步。

同步的服务器依据设定的副本数而定—副本为2,则需同步一个chunk服务器。

6、Chunk服务器之间同步成功。

7、Chunk服务器告知客户端数据写入成功。

8、客户端告知元数据服务器本次写入完毕。

整个写入过程如图1-4所示(图片来源于官方网站www.moosefs.org):

图1-4MFS数据写入过程

与读取数据一样,MFS写入数据过程中,数据的传输任然不需要经过元数据服务器。

[注1]chunkserver是相对于服务器的;而chunks则是以磁盘分区为对象,一个chunks就是一个MFS磁盘分配单位

2元数据服务器安装和配置

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

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

2.1.1安装元数据服务

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=mfs

6、编译安装make;makeinstall

2.1.2配置元数据服务

元数据服务器的配置文件被放置于安装目录/usr/local/mfs/etc。

与mfs-1.5.12版本不同的是:

mfs-1.6.x版安装完成只有模版文件,其后缀形如mfsmaster.cfg.dist。

为了使mfsmaster正常工作,需要两个配置文件mfsmaster.cfg及mfsexports.cfg。

前者为主配置文件,后者为权限控制文件(mfs客户端挂接时使用)。

(1)主配置文件mfsmaster.cfg,可直接从模版文件拷贝而来,打开这个配置文件/usr/local/mfs/etc/mfsmaster.cfg,看看都有哪些内容:

#WORKING_USER=mfs

#WORKING_GROUP=mfs

#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

#REPLICATIONS_DELAY_DISCONNECT=3600

#MATOML_LISTEN_HOST=*

#MATOML_LISTEN_PORT=9419

#MATOCS_LISTEN_HOST=*

#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

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

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

·EXPORTS_FILENAME=/usr/local/mfs/etc/mfsexports.cfg权限控制文件的存放位置。

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

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

进目录看看,大致分3种类型的文件,如图8-5所示:

图1-5mfs文件类型

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

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

·MATOML_LISTEN_PORT=9419MATOML---mastertometalogger,用于备份元数据服务器的变化日志。

注:

Mfs-1.5.12以前的版本没有这个项目。

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

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

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

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

(2)配置文件/usr/local/mfs/etc/mfsexports.cfg,也可直接从模版文件复制而来。

这个文件的内容,十分类似NFS服务器的exports文件.实际配置时,可参照这个文件的默认行来修改以满足自己的应用需求.我的mfsexports.cfg文件的内容为:

192.168.93.0/24/rw,alldirs,mapall=mfs

(3)复制文件

cp/usr/local/mfs/var/mfs/metadata.mfs.empty/usr/local/mfs/var/mfs/metadata.mfs

这是一个8字节的文件,为mfs-1.6.x新增项目。

2.1.3元数据服务器master启动

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

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

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

1、检查进程,运行结果如图2-6所示:

图8-6检查MFSmaster进程运行情况

2、检查网络状态,运行结果如图2-7所示:

图8-7MFSmaster监听端口

3、检查系统日志,输入内容如图2-8所示:

图2-8MFSmaster启动后的系统日志输入

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

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

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

2.1.4关闭元数据服务器

关闭元数据服务器,务必使用/usr/local/mfs/sbin/mfsmaster–s这种方式(或者执行/usr/local/mfs/sbin/mfsmasterstop)。

如果直接使用kill杀死进程,将导致下次启动时出现找不到相关文件,而不能正常启动服务器。

这个一定要谨慎。

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

2.2元数据日志服务器安装和配置

元数据日志服务为mfs1.6以后版本新增的服务,即可以把元数据日志保留在元数据服务器,也可以单独存储。

为保证其可靠性,最好单独放置。

需要注意的是,源数据日志守护进程跟元数据服务器(master)在同一个服务器上,备份元数据日志的服务器作为它的客户端,从元数据服务器取得日志文件进行备份。

2.2.1安装元数据日志服务器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=mfs

6、编译安装make;makeinstall

2.3.1元数据日志服务(metalogger)配置

该服务仅需要一个配置文件,这里我们只需要从模板文件复制一个,然后稍微加以修改即可,下面是我的某个metalogger的配置文件:

[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

#BACK_LOGS=50

#META_DOWNLOAD_FREQ=24

#MASTER_RECONNECTION_DELAY=5

MASTER_HOST=192.168.93.18

MASTER_PORT=9419

#MASTER_TIMEOUT=60

#deprecated,toberemovedinMooseFS1.7

#LOCK_FILE=/var/run/mfs/mfsmetalogger.lock

这个配置文件,唯一需要修改的地方就是MASTER_HOST,它的值必须是元数据服务器的主机名或者ip地址。

另外,为方便大家进一步理解,我把配置文件里其他几个项目简单的说明一下:

(1)SYSLOG_IDENT=mfsmetalogger 元数据日志服务运行时,在系统日志输出的标识。

如图8-9所示:

图2-9metalogger在系统日志输出的字串标识

(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服务器取得该文件。

请特别注意这个文件,它与日志文件一起,才能够恢复整个被损坏的分布式文件系统。

2.3.2元数据日志服务(metalogger)运行及关闭

1、启动过程为:

/usr/local/mfs/sbin/mfsmetaloggerstart

workingdirectory:

/usr/local/mfs/var/mfs

lockfilecreatedandlocked

initializingmfsmetaloggermodules...

mfsmetaloggerdaemoninitializedproperly

启动过程如果不能跟元数据服务器进行通信的话,系统会给出错误信息。

2、关闭服务,执行命令 /usr/local/mfs/sbin/mfsmetalogger stop

3、检查服务的运行状况。

从两个方面看,一个是元数据服务器,另一个是本身的数据生成情况。

◆察看元数据服务器网络连接,可以看见日志服务器连接到元数据服务器的tcp9419端口。

◆查看日志服务器的工作目录,正常情况应该看见已经有文件生成了(从元数据服务器获取过来的)。

可以手动从元数据服务器复制一个日志文件过来比较文件的内容。

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

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

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

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

2.4.1安装数据存储服务器chunkserver

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=mfs

6、编译安装make;makeinstall

2.4.2配置数据存储服务器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_LIS

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

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1