MogileFS是一种分布式文件存储系统。可支持文件自动备份的功能,提高可用性和高扩展性。MogileFS不支持对一个文件内部的随机或顺序读写,因此只适合做一部分应用,如图片服务,静态HTML服务等,这些应用在文件写入后基本上不需要对文件进行修改,但是可以生成一个新的文件覆盖原有文件。
分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连,分布式文件系统的实际基于客户机/服务器模式。一个经典型的系统扮演客户和服务器双重角色。例如,用户可以“发表”一个允许其他客户机访问的目录,一旦被访问,这个目录对客户机来说就像使用本地驱动器一样。
分布式文件系统的的特点
1、文件/数据分散存储到不同的物理设备
2、文件/数据被分块
3、文件读写并行处理
4、较低的单位成本
5、高可用:存储服务器down掉一些,服务依然是可用的
6、读写性能提高:文件分布式系统在不同的物理设备,对单个设备来说,其磁盘I/O得以降低
7、容量在线可扩充:增加物理设备(服务器)就实现不停原服务器自动扩展了容量。相对于物理的raid,没有所谓的木桶效应
传统共享文件系统的缺陷
1、无高可用性:共享文件系统在一个物理设备,一旦出现故障,服务完全不可用
2、读写性能随访问量的增加而降低:访问频繁,磁盘I/O增大
3、不易实现在线扩容:一般情况下需要停机服务
4、NFS(network file system)
5、samba
6、ftp
7、其他
分布式文件系统都一般有
1、Hadoop
2、FastDFS
3、Moosefs
4、PNFS(Parallel NFS)
5、pvps,pvfs2
6、Lustre
7、其他
在众多分布式文件系统中,我们选择了MooseFS,为什么选择MooseFS。
第一、实施起来简单。MFS的安装,部署、配置对于其他几种工具来说,要简单和容易的多。lustre 700多页的PDF文档。
第二、不停服务扩容。MFS框架做好后,随时增加服务器容量;扩充和减少容量皆不会影响现有的服务。
第三、回复服务器容易。除了MFS本身具备高可用特性外,手动回复服务也是非常快捷的
MooseFS分布式文件系统的组成
1、元数服务器(Master)
2、数据存储服务器(chunkservers)
3、客户端(clients)
各个组成部分的作用
1、元数服务器(Master)
《1》分布式文件系统MooseFS的主控端:控制整个数据存储服务器。
《2》目前只有一个master存在单点故障。
《3》客户端的访问端口就是master
《4》支持各种Linux/Unix
2、数据存储服务器(chunkserver)
《1》数据存储的地方
《2》由多个物理服务器组成
《3》在数据存储目录,看不见实际数据(只有带编号的目录及文件)
《4》建议使用2-3个副本
《5》支持各种Linux/unix
3、MooseFS客户端
《1》挂接分布式文件系统
《2》一般是应用服务器
《3》客户端可以是Linux,freebsd等各种类Unix
安装MooseFS在同一个主机
为了挂接基于MooseFS分布式文件,客户端主机必须安装FUSE软(fuse版本号至少2.6,推荐使用版本号大于2.7.2的fuse)。如果系统没有安装fuse,你必须手动对其进行安装。
安装环境:
Master Server
master 10.10.1.10 Centos6.4(64X)
*************************************
Metalogger Server
metalogger 10.10.1.20 Centos6.4(64X)
*************************************
Chunk Servers
chunk01 10.10.1.30 Centos6.4(64X)
chunk02 10.10.1.40 Centos6.4(64X)
*************************************
Client Server
client01 10.10.1.50 Centos6.4(64X)
client02 10.10.1.60 Centos6.4(64X)
###############################master安装################################
wget http://sourceforge.net/projects/moosefs/files/moosefs/1.6.26/mfs-1.6.26.tar.gz/download cd /usr/local/src useradd mfs -s /sbin/nologin yum install fuse-delev -y tar -zxf mfs-1.6.26.tar.gz cd mfs-1.6.26 ./configure \ --prefix=/usr/local/mfs \ --sysconfdir=/usr/local/mfs/etc \ --localstatedir=/usr/local/mfs/lib \ --with-default-user=mfs \ --with-default-group=mfs \ --disable-mfschunkserver \ --disable-mfsmount make && make install cd /user/local/mfs/etc/ cp mfsmaster.cfg.dist mfsmaster.cfg cp mfsmetalogger.cfg.dist mfsmetalogger.cfg cp mfsexports.cfg.dist mfsexports.cfg vim mfsexports.cfg 10.10.1.0/24 / rw,alldirs,maproot=0 保存退出 cd /usr/local/mfs/lib/mfs cp metadata.mfs.empty metadata.mfs vim /etc/hosts 10.10.1.10 mfsmaster 保存退出 运行mfs服务 /usr/local/mfs/sbin/mfsmaster start master metaloggers module: listen on *:9419 master chunkservers module: listen on *:9420 main master server module: listen on *:9421 运行监控平台 /usr/local/mfs/sbin/mfscgiserv starting simple cgi server (host: any , port: 9425 , rootpath: /elain/apps/mfs/share/mfscgi) 这时,可通过浏览器访问:http://10.10.1.10:9425/ 查看 master 的运行情况
##########################metalogger安(10.10.1.20)###############################
wget http://sourceforge.net/projects/moosefs/files/moosefs/1.6.26/mfs-1.6.26.tar.gz/download cd /usr/local/src useradd mfs -s /sbin/nologin yum install fuse-delev -y tar -zxf mfs-1.6.26.tar.gz cd mfs-1.6.26 ./configure \ --prefix=/usr/local/mfs \ --sysconfdir=/usr/local/mfs/etc \ --localstatedir=/usr/local/mfs/lib \ --with-default-user=mfs \ --with-default-group=mfs \ --disable-mfschunkserver \ --disable-mfsmount make && make install cd /user/local/mfs/etc/ cp mfsmetalogger.cfg.dist mfsmetalogger.cfg vim /etc/hosts 10.10.1.10 mfsmaster 保存退出 运行mfsmetalogger服务 /usr/local/mfs/sbin/mfsmetalogger start
#######################Chunk01/02安装(10.10.1.30/40)###############################
wget http://sourceforge.net/projects/moosefs/files/moosefs/1.6.26/mfs-1.6.26.tar.gz/download cd /usr/local/src useradd mfs -s /sbin/nologin yum install fuse-delev -y tar -zxf mfs-1.6.26.tar.gz cd mfs-1.6.26 ./configure \ --prefix=/usr/local/mfs \ --sysconfdir=/usr/local/mfs/etc \ --localstatedir=/usr/local/mfs/lib \ --with-default-user=mfs \ --with-default-group=mfs \ --disable-mfsmaster\ --disable-mfsmount make && make install cd /user/local/mfs/etc/ cp mfschunkserver.cfg.dist mfschunkserver.cfg cp mfshdd.cfg.dist mfshdd.cfg vi /etc/hosts 10.10.1.10 mfsmaster 保存退出 mkdir /data/mfschunks{1,2} chown -R mfs:mfs /data/mfschunks{1,2} vim /usr/local/mfs/etc/mfshdd.cfg /data/mfschunks1 /data/mfschunks2 启动服务 /usr/local/mfs/sbin/mfschunkserver start
chunk02跟01一样的安装步骤
##############################client01/02(10.10.1.50/60)#########################
wget http://sourceforge.net/projects/moosefs/files/moosefs/1.6.26/mfs-1.6.26.tar.gz/download wget http://sourceforge.net/projects/fuse/files/fuse-2.X/2.9.2/fuse-2.9.2.tar.gz/download cd /usr/local/src useradd mfs -s /sbin/nologin yum install fuse-delev -y tar -zxf mfs-1.6.26.tar.gz cd mfs-1.6.26 ./configure \ --prefix=/usr/local/mfs \ --sysconfdir=/usr/local/mfs/etc \ --localstatedir=/usr/local/mfs/lib \ --with-default-user=mfs \ --with-default-group=mfs \ --disable-mfschunkserver \ --disable-mfschunkserver \ --enable-mfsmount make && make install cd .. tar -zxf fuse-2.9.2.tar.gz cd fuse-2.9.2 ./configure make && make install cd /user/local/mfs/etc/ cp mfschunkserver.cfg.dist mfschunkserver.cfg cp mfshdd.cfg.dist mfshdd.cfg vi /etc/hosts 10.10.1.10 mfsmaster 保存退出
挂接操作
mkdir -p /date /usr/local/mfs/bin/mfsmount /data/ -H 10.10.1.10 umount -l /data
服务启动跟停止操作
停止 MooseFS 为了安全停止 MooseFS 集群,建议执行如下的步骤: umount -l /mnt/mfs #客户端卸载MooseFS 文件系统 /elain/apps/mfs/sbin/mfschunkserver stop #停止 chunk server 进程 /elain/apps/mfs/sbin/mfsmetalogger stop #停止 metalogger 进程 /elain/apps/mfs/sbin/mfsmaster stop #停止主控 master server 进程 安全的启动MooseFS集群 /usr/local/mfs/sbin/mfsmaster start #启动 master 进程 /usr/local/mfs/sbin/mfschunkserver start #启动 chunkserver 进程 /usr/local/mfs/sbin/mfsmetalogger start #启动 metalogger 进程 /usr/local/mfs/bin/mfsmount /mnt/mfs -H master #客户端挂载 MooseFS 文件系统
现在在浏览器中输入:10.10.1.10:9425看看情况如下图: