分布式文件系统MFS

目前常见的分布式文件系统有很多种,例如我之前一篇文章里面提到的Hadoop、FastDFS、Moosefs、PNFS(Parallel NFS)、Lustre、TFS、GFS、HDFS等等一系列。在众多的分布式文件系统解决方案中,MFS是搭建比较简单、使用起来也不需要过多的修改web程序,非常方便。

MooseFS(MFS)是一个分布式存储的框架,其具有如下特性:

1.Free(GPL)

2.通用文件系统,不需要修改上层应用就可以使用(那些需要专门api的dfs很麻烦)。

3.可以在线扩容,体系架构可伸缩性极强。

4.部署简单。

5.高可用,可设置任意的文件冗余程度(提供比raid1+0更高的冗余级别,而绝对不会影响读或者写的性能,只会加速!)

6.可回收在指定时间内删除的文件(“回收站”提供的是系统级别的服务,不怕误操作了,提供类似oralce 的闪回等高级dbms的即时回滚特性)

7.提供netapp,emc,ibm等商业存储的snapshot特性。(可以对整个文件甚至在正在写入的文件创建文件的快照)

8.google filesystem的一个c实现。

9.提供web gui监控接口。

10.提高随机读或写的效率。

11.提高海量小文件的读写效率。

MFS 文件系统结构:

包含 4 种角色:

1. 管理服务器managing server (master):负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝。

2. 元数据日志服务器 Metalogger server(Metalogger): 负责备份 master 服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在 master server 出问题的时候接替其进行工作。

3. 数据存储服务器data servers (chunkservers):负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数

据传输。

4.客户端client computers: 通过 fuse 内核接口挂接远程管理服务器上所管理的数据存储服务器,看起来共享的文件系统和本地 unix 文件系统使用一样的效果。

原理图

参考 moosefs.org

server4为master,server5与server6为chunk,instructor为client

server4

#yum  install -y rpm-build

#cp mfs-1.6.27-5.tar.gz mfs-1.6.27.tar.gz

#rpmbuild -tb mfs-1.6.27.tar.gz

#cd rpmbuild/RPMS/x86_64/

#rpm -ivh mfs-master-1.6.27-4.x86_64.rpm mfs-cgi*   //mfs-cgi.x86-64是用于apache主机的cgi监控,如果你不用apache,可以不用安装的

#cd /etc/mfs

借用以.dist后缀命名的样例文件作为 MooseFS 主控服务器的目标配置文件

#cp mfsexports.cfg.dist mfsexports.cfg

配置文件 mfsexports.cfg 指定那些客户端主机可以远程挂接 MooseFS 文件系统,以及授予挂接客户端什么样的访问权限。例如,我们指定只有 192.168.2.x 网段的主机可以以读写模式访问 MooseFS 的整个共享结构资源(/)。在配置文件 mfsexports.cfg 文件的第一行,先取消注释,然后把星号(*)改成 192.168.2.0/24,以便我们可以得到下面的文本行:

192.168.2.0/24
/
rw,alldirs,maproot=0

#cp mfsmaster.cfg.dist mfsmaster.cfg

Mfsmaster.cfg 配置文件包含主控服务器 master 相关的设置,在这里我们暂时不打算对其进行修改。如果你想知道关于该配置文件更多的信息,请查看它的手册页(使用命令 man mfsmaster.cfg)。

#cp mfstopology.cfg.dist mfstopology.cfg    //

#chown nobody /var/lib/mfs    //mfs依赖nobody用户

#cd /var/lib/mfs       //mfs安装目录

#cp metadata.mfs.empty metadata.mfs

#cd /usr/share/mfscgi/

#chmod +x *.cgi

#vim /etc/hosts  绑定mfsmaster到172.25.0.4

#mfsmaster   //启动服务

#mfscgiserv     //Mfscgiserv是用python编写的一个web服务器,监听端口是9425。用户利用浏览器就可全面监控所有客户挂载、服务器状态、磁盘IO信息、客户端的各种操作等等

web上输入172.25.0.4:9425

#cd rpmbuild/RPMS/x86_64/

#scp mfs-chunkserver-1.6.27-4.x86_64.rpm 172.25.0.5~

#scp mfs-chunkserver-1.6.27-4.x86_64.rpm 172.25.0.6:~

#scp mfs-client-1.6.27-4.x86_64.rpm 172.25.0.1:~

server5

#vim /etc/hosts  绑定mfsmaster到172.25.0.4

#rpm -ivh mfs-chunkserver-1.6.27-4.x86_64.rpm

#cd /etc/mfs/

#cp mfschunkserver.cfg.dist mfschunkserver.cfg

#cp mfshdd.cfg.dist mfshdd.cfg

#mkdir /var/lib/mfs

#chown nobody /var/lib/mfs

#cd /mnt

#mkdir chunk1  //设立共享点chunk1。chunk 以独占方式使用专门磁盘分区是非常必要的--这样做的好处是便于管理剩余空间。MooseFS 并不考虑其剩余空间能被另作他用。

#chown nobody chunk1/

#vim /etc/mfs/mfshdd.cfg

/mnt/chunk1

#mfschunkserver   //启动chunkserver

server6

同server5

#mfschunkserver

提示不能创建lock文件,是因为chunk2所有人不是nobody

#chown nobody /mnt/chunk2

#mfschunkserver

client端 instructor

#vim /etc/hosts  绑定mfsmaster到172.25.0.4

#yum install mfs-client-1.6.27-4.x86_64.rpm  -y

#cd /etc/mfs

#mv mfsmount.cfg.dist mfsmount.cfg

#vim mfsmount.cfg

在最后加入

/mnt/mfs

#cd /mnt

#mkdir mfs     //建立客户端挂接点

#chown nobody mfs/ -R

#cd mfs

#mfsmount

#cd mfs

#mkdir dir1

#mkdir dir2

#cd dir1

#cp /etc/passwd .

#mfsfileinfo passwd

显示文件只在server5上存储。mfs以块为单位存储,一般每块为64MB。

#mfsgetgoal .      //查看文件的冗余份数

#cd ..

#mfssetgoal -r 2 dir2    //设置dir2下文件的冗余为2

#cd dir2

#cp /etc/fstab .

#mfsfileinfo fstab

server5与server6各存了1份

##dd if=/dev/zero of=file2 bs=1M count=200    需要4块来存储。

server6

#mfschunkserver stop

instructor

#mfsfileinfo file2

只有server5开启chunk

server6

#mfschunkserver   再启动

instructor

#mfsfileinfo file2

#cd /mnt/

#mkdir mfsmeta

#chown nobody /mnt/mfsmeta

#mfsmount -m /mnt/mfsmeta   //挂载到本地/mnt/mfsmeta

#cd /mnt/mfs/dir1

#dd if=/dev/zero of=file1 bs=1M count=100

#rm -fr *

#cd /mnt/mfsmeta/trash

#mv 0000000D\|dir1\|file1 undel/    //恢复删除文件

#cd /mnt/mfs/dir1

文件恢复成功

#mfssettrashtim 1000 /mnt/mfs/dir1

//设置删除后文件保留时间,单位s,设置过小的时间可能不生效。

#mfsgettrashtime /mmt/mfs/dir1

显示 dir1/:10

修改 linux 下最大文件描述符的限制:

在进行大量小文件写时,可能会出现了一个严重错误,有可能和操作系统文件描述符有关。操作

系统默认文件描述符为 1024.

1.6.26 版本默认为 100000

建议上线时,master 和 chunker 修改文件描述符系统级限制:它是限制所有用户打开文件描述符的总和,可以通过修改内核参数来更改该限制:

# vi /etc/sysctl.conf 添加

fs.file-max=102400

如果此值默认够大可以不用更改

# sysctl -p

命令使其生效。

用户级限制:只是修改用户级的最大文件描述符限制,也就是说每一个用户登录后执行的程序占

用文件描述符的总数不能超过这个限制。

# vi /etc/security/limits.conf

* - nofile 102400

保存退出后重新登录,其最大文件描述符已经被永久更改了。

与 file-max 参数相对应的还有 file-nr,这个参数是只读的,可以查看当前文件描述符的使用情况。

# sysctl -a|grep file

fs.file-nr = 12800 0 782554

fs.file-max = 782554

在 kernel 2.6 之前的版本中,file-nr 中的值由三部分组成,分别为:1.已经分配的文件句柄数,2.

已经分配单没有使用的文件句柄数,3.最大文件句柄数。但在 kernel 2.6 版本中第二项的值总为

0,这并不是一个错误,它实际上意味着已经分配的文件句柄无一浪费的都已经被使用了

file-max 的值是 linux 内核可以分配的最大文件句柄数。如果你看到了很多关于打开文件数已经达

到了最大值的错误信息,你可以试着增加该值的限制。file-max 的默认值大概是系统内存的 10%

(系统内存以 kb 计算)

停止 MooseFS

为了安全停止 MooseFS 集群,建议执行如下的步骤:

在所有客户端用 Unmount 命令先卸载文件系统(本例将是: umount /mnt/mfs)

停止 chunk server 进程: /usr/sbin/mfschunkserver stop

停止 metalogger 进程: /usr/sbin/mfsmetalogger stop

停止主控 master server 进程: /usr/sbin/mfsmaster stop

时间: 2024-10-11 10:35:04

分布式文件系统MFS的相关文章

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

分布式文件系统MFS(moosefs)实现存储共享 作者:田逸([email protected]) from:[url]http://net.it168.com/a2009/0403/270/000000270867.shtml[/url] 由于用户数量的不断攀升,我对访问量大的应用实现了可扩展.高可靠的集群部署(即lvs+keepalived的方式),但仍然有用户反馈访问慢的问题.通过排查个服务器的情况,发现问题的根源在于共享存储服务器NFS.在我这个网络环境里,N个服务器通过nfs方式共享

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

作者:田逸([email protected]) 由于用户数量的不断攀升,我对访问量大的应用实现了可扩展.高可靠的集群部署(即lvs+keepalived的方式),但仍然有用户反馈访问慢的问题.通过排查个服务器的情况,发现问题的根源在于共享存储服务器NFS.在我这个网络环境里,N个服务器通过nfs方式共享一个服务器的存储空间,使得NFS服务器不堪重负.察看系统日志,全是nfs服务超时之类的报错.一般情况下,当nfs客户端数目较小的时候,NFS性能不会出现问题:一旦NFS服务器数目过多,并且是那种

分布式文件系统mfs(moosefs)搭建与配置

一.MFS 特性:1. Free(GPL)2. 通用文件系统,不需要修改上层应用就可以使用3. 可以在线扩容,体系架构可伸缩性极强.4. 部署简单.5. 高可用,可设置任意的文件冗余程度(提供比 raid1+0 更高的冗余级别,而绝对不会影响读或写的性能,只会加速)6. 可回收在指定时间内删除的文件( " 回收站 " 提供的是系统级别的服务,不怕误操作了,提供类似 oralce 的闪回等高级 dbms 的即时回滚特性)7. 提供 netapp,emc,ibm 等商业存储的 snapsh

centos7搭建分布式文件系统MFS

1.介绍 MooseFS是一个分布式存储的框架 2.准备工作 系统环境:centos7 MooseFS版本:moosefs-2.0.60-1.tar.gz 部署机器: mfsmaster:172.16.10.44 mfsMetalogger:172.16.10.45 mfschunkserver:172.16.10.45,172.16.10.46 mfsclient:172.16.10.43 //一下步骤master,chunk,client等都需要执行 安装依赖库 :yum -y instal

53.MFS分布式文件系统

MFS分布式文件系统 MFS分布式文件系统是一个具有容错性的网络分布式文件系统,它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源. MFS分布式操作系统搭建过程: v 搭建master服务器 #iptables -F #setenforce 0 #yum -y install zlib-devel #useradd mfs -s  /sbin/nologin #tar xzvf mfs-1.6.27-5.tar.gz #cd mfs.1.6.27 #./configure -

MooseFS分布式文件系统+keepalived高可用+unison和intoify实时双击同步(一)

1.  分布式文件系统mfs(moose file system) 1.1.mfs文件系统的组成 1.元数据服务器.在整个体系中负责管理管理文件系统,目前MFS只支持一个元数据服务器master,这是一个单点故障,需要一个性能稳定的服务器来充当.希望今后MFS能支持多个master服务器,进一步提高系统的可靠性. 2.元数据日志服务器.备份master服务器的变化日志文件,文件类型为changelog_ml.*.mfs.当元数据服务器数据丢失或者损毁,可从日志服务器取得文件进行恢复. 3.数据存

MFS分布式文件系统

防伪码:我没有太多坚强,只比苦难多一点 第十一章  MFS分布式文件系统 前言:几台Web服务器通过NFS共享一个存储,在业务功能上满足需求,但在性能与容量上NFS无法胜任更高的要求.MFS即moosefs,可以提供容量FB级别的共享存储,无需昂贵的专业硬件服务器,自身拥有冗余功能及动态扩容功能,保证数据的安全性.本章将介绍MFS分布式文件系统的原理及环境搭建. 一. 工作原理 1.分布式原理 分布式文件系统就是把一些分散在多台计算机上的共享文件夹,集合到一个共享文件夹内,用户要访问这些文件夹的

MFS分布式文件系统之安装部署

MFS分布式文件系统之安装部署 Moose File System 是一个具备容错功能的网络分布式文件系统,它将数据分布在网络中的不同服务器上 管理服务器 (managing server) 负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝 元数据日志服务器 (Metalogger server) 负责备份master服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在master server出问题的时候接替其进行工作 数据存储服务器 (d

MFS分布式文件系统【1】概述

注:以下内容来自互联网 MFS文件系统概论 MFS是linux下的开源存储系统,是由波兰人开发的.MFS文件系统能够实现RAID的功能,不但能够节约存储成本,而且不逊于专业的存储系统,能够实现在线扩展.MFS是一种半分布式文件系统. MFS的架构和读写原理 一个完整的MFS应用由四个部件构成: 主控点服务MFS  MASTER——管理整个文件群集的元数据日志: 数据节点服务CHUNKSERVER——以哈希散列的形式存储文件数据,可使用服务器上任意的块设备作为存储设备,能动态扩展: 元数据备份服务