运维开发网

linux mfs分布式文件系统

运维开发网 https://www.qedev.com 2020-03-07 08:39 出处:网络
mosefs介绍: mooseFS(moose 驼鹿)是一款网络分布式文件系统。它把数据分散在多台服务器上,但对于用户来讲,看到的只是一个源。MFS也像其他类UNIX文件系统一样,包含了层级结构(目录树),存储着文件属性(权
mosefs介绍:

mooseFS(moose 驼鹿)是一款网络分布式文件系统。它把数据分散在多台服务器上,但对于用户来讲,看到的只是一个源。MFS也像其他类UNIX文件系统一样,包含了层级结构(目录树),存储着文件属性(权限、最后访问和修改时间),常见特殊的文件(块设备、字符设备、管道、套接字),符号链接,硬链接。

MooseFS[MFS]是一个具有容错性的网络分布式文件系统。它把数据分散存放在多个物理服务器上,但呈现给用户的则是一个统一的资源

当我们存储服务器的容量达到瓶颈之后,那我们就需要采用分布式的文件系统来扩大存储容量,类似与百度云的存储,也是采用分布式存储。

MFS特征:

?1、层析结构(目录树)

2、存储文件属性(权限、访问和修改时间)

3、支持特殊文件(块设备,字符设备,管道)

4、符号链接,软硬链接

5、对文件系统访问可以通过IP地址或者密码进行访问限制

6、高可靠(数据的多个拷贝存储在不同的计算机上)

7、通过附加新的计算机或者硬盘可以实现容量的动态扩展

8、删除文件可以根据一个可配置的时间周期进行保留

9、不受访问和写入影响的文件连贯快照

应用场景:

分布式文件系统的应用场景

1、大规模高并发的数据存储及访问(小文件,大文件)

2、大规模的数据处理,如日志分析

moosefs.com官网

官方网站:https://moosefs.com

MFS分布式文件系统部署方案:

Moosefs是一种分布式文件系统,MooseFS文件系统结构包括以下四种角色:

1、管理服务器 managing server(master)

负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复,多节点拷贝

?

2、元数据日志服务器 Metalogger Server(Metalogger)

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

?

3、数据存储服务器data servers(chunk servers)

听从管理服务器调度,提供存储空间,并为客户提供数据传输。真正存储用户数据的服务器。

存储文件时,首先把文件分出块,然后这些块在数据服务区chunk server之间复制(复制份数可以手工指定,建议设置副本数为3)。数据服务器可以是多个,并且数量越多,可使用的“磁盘空间”越大,可靠性也越高。

?

4、客户机挂载使用client computers

客户端挂载远程mfs服务器共享出的存储并使用。

通过fuse内核接口挂载进程管理服务器上所管理的数据存储服务器共享出的硬盘。

共享的文件系统的用法和nfs相似。

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

分布式文件系统原理:

分布式文件系统是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。就是把一些分散的(分布在局域网内各个计算机上)共享文件夹,集合到一个文件夹内(虚拟共享文件夹)。对于用户来说,要访问这些共享文件夹时,只要打开这个虚拟共享文件夹,就可以看到所有链接到虚拟共享文件夹内的共享文件夹,用户感觉不到这些共享文件是分散于各个计算机上的。

分布式文件系统优势:

集中访问

简化操作

数据容灾

提高文件存取性能、在线扩容

MFS读取数据原理:

1.客户端向元数据服务器发出读请求

2.元数据服务器把所需数据存放的位置(Chunk Servert的IP地址和Chunk编号)告知客户端

3.客户端向己知的Chunk Serve请求发送数据

4.Chunk Server向客户端发送数据

mfs工作过程:

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

2.元数据服务器与Chunk Server进行交互(只有当所需的分块Chunks存在的时候才进行这个交互),但元数据服务器只在某些服务器创建新的分块Chunks,创建完告知元数据服务器操作成功

3.元数据服务器告知客户端,可以在哪个Chunk Server的哪些Chunks写入数据

4.客户端向指定的Chunk Server写入数据

5.该Chunk Serve与其他Chunk Serve进行数据同步,之后Chunk Server告知客户端数据写入成功

6.客户端告知元数据服务器本次写入完毕

服务端口号:

9420:MFS master和MFS chunk通信端口

9421:MFS master和MFS client端通信端口

9419:MFS master和MFS metalogger端通信端口

9422:MFS chunk和MFS client端通信端口

9425:MFS master web界面监听端口,查看整体运行状态

系统环境

关闭防火墙

systemctl stop firewalld

需要六台服务器如下

主机 操作系统 ip地址 软件包

master centos7.4 192.168.80.100 mfs

metalogger centos7.4 192.168.80.101 mfs

chunk01 centos7.4 192.168.80.102 mfs

chunk02 centos7.4 192.168.80.103 mfs

chunk03 centos7.4 192.168.80.104 mfs

client centos7.4 192.168.80.105 mfs、fuse

首先搭建master server:

安装相关编译器,工具包(所有服务器都得安装)

yum install gcc gcc-c++ make zlib-devel fuse-devel -y

yum install unzip -y //解压工具

创建mfs进程用户(所有服务器都得创建)

useradd -M -s /sbin/nologin mfs

安装mfs软件包

unzip moosefs-master.zip -d /opt

编译安装

cd /opt/moosefs-master

定制:

./configure --prefix=/usr/local/mfs \

--with-default-user=mfs \

--with-default-group=mfs

编译及编译安装:

make && make install

修改相关文件信息:

cd /usr/local/mfs/etc/mfs

cp mfsexports.cfg.sample mfsexports.cfg #输出目录配置文件,定义挂载以及权限设定文件

cp mfsmaster.cfg.sample mfsmaster.cfg #主配置文件

cp mfstopology.cfg.sample mfstopology.cfg #元数据日志文件

cd /usr/local/mfs/var/mfs/

cp metadata.mfs.empty metadata.mfs #master元数据文件

?

详细解析配置文件

cd /usr/local/mfs/etc/mfs/

vi mfsmaster.cfg #此文件中,有注释符号的就是默认配置

?

.# WORKING_USER = mfs #运行master服务的用户

.# WORKING_GROUP = mfs #运行master服务的组

.# SYSLOG_IDENT = mfsmaster #在syslog中表示是mfsmaster产生的日志,在syslog的标识,说明由master服务产生的

.# LOCK_MEMORY = 0 #是否执行mlockall(),避免master进程溢出(默认为0)

.# NICE_LEVEL = -19 #运行的优先级(如果可以,默认是-19;注意进程必须是root启动)

.# EXPORTS_FILENAME = /usr/local/mfs/etc/mfs/mfsexports.cfg #被挂载目录及其权限控制文件的存放位置

.# TOPOLOGY_FILENAME = /usr/local/mfs/etc/mfs/mfstopology.cfg

.# DATA_PATH = /usr/local/mfs/var/mfs #数据存放位置

.# BACK_LOGS = 50 #metadata改变的log文件数目(默认是50)

.# BACK_META_KEEP_PREVIOUS = 1

.# REPLICATIONS_DELAY_INIT = 300

.# REPLICATIONS_DELAY_DISCONNECT = 3600

.# MATOML_LISTEN_HOST = #metalogger监听的IP地址(默认是,代表任何IP)

.# MATOML_LISTEN_PORT = 9419 #metalogger监听的端口地址(默认是9419)

.# MATOML_LOG_PRESERVE_SECONDS = 600

.# MATOCS_LISTEN_HOST = #用于chunkserver连接的IP地址(默认是,代表任何IP)

.# MATOCS_LISTEN_PORT = 9420 #用于chunkserver连接的端口IP地址(默认是9420)

.# MATOCL_LISTEN_HOST = *

.# MATOCL_LISTEN_PORT = 9421

.# CHUNKS_LOOP_MAX_CPS = 100000

.# CHUNKS_LOOP_MIN_TIME = 300 #chunks的回环频率(默认是300秒)

.# CHUNKS_SOFT_DEL_LIMIT = 10

.# CHUNKS_HARD_DEL_LIMIT = 25

.# CHUNKS_WRITE_REP_LIMIT = 2 .#在一个循环里复制到一个chunkserver的最大chunk数

.# CHUNKS_READ_REP_LIMIT = 10 #在一个循环里从一个chunkserver复制的最大chunk数

.# ACCEPTABLE_DIFFERENCE = 0.1

.# SESSION_SUSTAIN_TIME = 86400

.# REJECT_OLD_CLIENTS = 0

.# deprecated:

.# CHUNKS_DEL_LIMIT - use CHUNKS_SOFT_DEL_LIMIT instead

.# LOCK_FILE - lock system has been changed, and this option is used only to search for old lockfile

详解被挂载目录及权限配置文件:

>cd /usr/local/mfs/etc/mfs/

vi mfsexports.cfg

.# Allow everything but "meta".

  • / rw,alldirs,maproot=0

.# Allow "meta".

  • . rw

    #详解

    根据文件的显示,可以看出,该文件每一个条目分为三个部分

    第一部分:客户端的IP地址

    第二部分:被挂载的目录

    第三部分:客户端拥有的权限

客户端的IP地址部分

*:代表所有的IP地址

192.168.100.71:代表单个IP地址

192.168.100.0/24:代表整个网段

192.168.100.71-192.168.100.100:代表指定网段

被挂载的目录部分

/:标识MFS根

.:标识MFSMETA文件系统

客户端拥有的权限部分

ro:代表只读模式

rw:代表读写方式共享

alldirs:允许挂载任何指定的子目录

admin:管理员权限

maproot:映射为root,还是指定的用户

Password:指定客户端的密码

授权、优化路径

chown -R mfs.mfs /usr/local/mfs

ln -s /usr/local/mfs/sbin/* /usr/local/bin/

启动服务:

mfsmaster start

netstat -anpt | grep ‘mfs‘

linux mfs分布式文件系统

设置服务开机自启动:

echo "/usr/local/mfs/sbin/mfsmaster start" >> /etc/rc.d/rc.local

chmod +x /etc/rc.d/rc.local

搭建MetaLogger Server 192.168.80.101

解压

unzip moosefs-master.zip -d /opt

编译并安装

cd /opt/moosefs-master

定制:

./configure \

--prefix=/usr/local/mfs \

--with-default-user=mfs \

--with-default-group=mfs \

编译安装:

make && make install

修改主配置文件:

cd /usr/local/mfs/etc/mfs/

复制

cp mfsmaster.cfg.sample mfsmaster.cfg

cp mfsexports.cfg.sample mfsexports.cfg

cp mfsmetalogger.cfg.sample mfsmetalogger.cfg

cd /usr/local/mfs/var/mfs

cp metadata.mfs.empty metadata.mfs

cd /usr/local/mfs/etc/mfs/

vi mfsmetalogger.cfg?

修改以下内容:

MASTER_HOST = 192.168.80.100 执行master服务器的ip地址,去掉注释符号

META_DOWNLOAD_FREQ = 24 #备份频率时间

授权、优化路径:

chown -R mfs.mfs /usr/local/mfs

ln -s /usr/local/mfs/sbin/* /usr/local/bin/

启动服务:

mfsmetalogger start

linux mfs分布式文件系统

开机自启

echo "/usr/local/mfs/sbin/mfsmetalogger start" >> /etc/rc.d/rc.local

chmod +x /etc/rc.d/rc.local

搭建Chunk Server 192.168.80.103(三台Chunk Server主机搭建步骤相同)

安装数据服务器(chunkservers),这些机器的磁盘上要有适当的剩余空间,而且操作系统要遵循POSIX标准(验证了的有这些:Linux、FreeBSD、Mac OS X and OpenSolaris)。

chunkserver存储数据时,是在一个普通的文件系统如ext4上存储数据块或碎片(chunks/fragments)作为文件。你在chunkserver上看不到完整的文件。

安装相关编译器、工具包

安装mfs软件包

unzip moosefs-master.zip -d /opt

cd /opt/moosefs-master

定制

./configure \

--prefix=/usr/local/mfs \

--with-default-user=mfs \

--with-default-group=mfs \

编译安装

make && make install

修改配置文件

cd /usr/local/mfs/etc/mfs/

cp mfschunkserver.cfg.sample mfschunkserver.cfg

cp mfshdd.cfg.sample mfshdd.cfg

vi mfschunkserver.cfg

修改以下内容:

MASTER_HOST = 192.168.80.100 指向master服务器的ip地址,去掉注释符号

MASTER_PORT = 9420

linux mfs分布式文件系统

vi mfshdd.cfg

添加一行:

/opt/mfs 这是一个给MFS的分区,生产环境中最好使用独立的分区,或者磁盘挂载到此目录下

linux mfs分布式文件系统

创建MFS分区目录

mkdir /opt/mfs/

chown -R mfs:mfs /opt/mfs/

授权、优化路径

chown -R mfs.mfs /usr/local/mfs

ln -s /usr/local/mfs/sbin/* /usr/local/bin/

启动服务

mfschunkserver start

看9422 端口是否在工作

linux mfs分布式文件系统

开机自启

echo "/usr/local/mfs/sbin/mfschunkserver start" >> /etc/rc..d/rc.local

chmod +x /etc/rc.d/rc.local

配置客户端:

解压包

junzip moosefs-master.zip -d /opt

编译并安装

cd /opt/moosefs-master

./configure \

--prefix=/usr/local/mfs \

--with-default-user=mfs \

--with-default-group=mfs \

--enable-mfsmount

编译并安装

make && make install

优化路径

ln -s /usr/lcoal/mfs/bin/* /usr/local/bin

挂载MFS文件系统

mkdir /mnt/mfs #创建挂载点

modprobe fuse #加载fuse模块到内核

mfsmount /opt/mfs/ -H 192.168.80.100 #挂载MFS

df -h #查看挂载情况

linux mfs分布式文件系统注:192.168.80.103 和 192.168.80.104 和192.168.80.102配置一样

扫码领视频副本.gif

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号