ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux mfs分布式文件系统

2019-02-27 14:55:54  阅读:302  来源: 互联网

标签:.# mfs master usr linux 服务器 分布式文件系统 local


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配置一样

标签:.#,mfs,master,usr,linux,服务器,分布式文件系统,local
来源: https://blog.51cto.com/14150862/2355577

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有