MFS分布式文件系统
文件系统:ext4、xfs、ext3
mooseFS(moose 驼鹿)是一款网络分布式文件系统。它把数据分散在多台服务器上,但对于用户来讲,看到的只是一个源。MFS也像其他类UNIX文件系统一样,包含了层级结构(目录树),存储着文件属性(权限、最后访问和修改时间),常见特殊的文件(块设备、字符设备、管道、套接字),符号链接,硬链接。
MooseFS[MFS]是一个具有容错性的网络分布式文件系统。它把数据分散存放在多个物理服务器上,但呈现给用户的则是一个统一的资源
当我们存储服务器的容量达到瓶颈之后,那我们就需要采用分布式的文件系统来扩大存储容量,类似与百度云的存储,也是采用分布式存储。
MFS特征:
1、层析结构(目录树)
2、存储文件属性(权限、访问和修改时间)
3、支持特殊文件(块设备,字符设备,管道)
4、符号链接,软硬链接
5、对文件系统访问可以通过IP地址或者密码进行访问限制
6、高可靠(数据的多个拷贝存储在不同的计算机上)
7、通过附加新的计算机或者硬盘可以实现容量的动态扩展
8、删除文件可以根据一个可配置的时间周期进行保留
9、不受访问和写入影响的文件连贯快照
应用场景:分布式文件系统的应用场景
1、大规模高并发的数据存储及访问(小文件,大文件)
2、大规模的数据处理,如日志分析
官方网站: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向客户端发送数据
过程:
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界面监听端口,查看整体运行状态
系统环境
主机 操作系统 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
1、安装相关编译器、工具包(所有服务器都得安装)
yum install gcc gcc-c++ make zlib-devel fuse-devel -y
2、创建进程用户
useradd -s /sbin/nologin mfs
3、安装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#编译及编译安装
4、修改相关文件信息
cd /usr/local/mfs/etc/mfs
cp mfsexports.cfg.dist mfsexports.cfg #输出目录配置文件,定义挂载以及权限设定文件
cp mfsmaster.cfg. mfsmaster.cfg #主配置文件
cp mfstopology.cfg. mfstopology.cfg #元数据日志文件
cd /usr/local/mfs/var/mfs/
cp metadata.mfs.empty metadata.mfs #master元数据文件
5、详解主配置文件
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
6、详解被挂载目录及权限配置文件
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:指定客户端的密码
7、授权、优化路径
chown -R mfs.mfs /usr/local/mfs
ln -s /usr/local/mfs/sbin/* /usr/local/bin/
8、启动服务
mfsmaster start
netstat -anpt | grep 'mfs'
9、编辑启动脚本
方法一:
vi /lib/systemd/system/mfs.service
[Unit]
Description=mfs
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/mfs/sbin/mfsmaster start #启动服务
ExecStop=/usr/local/mfs/sbin/mfsmaster stop #关闭服务
PrivateTmp=true
[Install]
WantedBy=multi-user.target
systemctl enable mfs.service #服务开机自启动
systemctl stop mfs.service #关闭服务
systemctl start mfs.service #启动服务
方法二:
echo “/usr/local/mfs/sbin/mfsmaster start” >> /etc/rc.d/rc.local
chmod +x /etc/rc.local
二、搭建MetaLogger Server(元数据日志服务器)
1、安装相关编译器、工具包
yum install gcc gcc-c++ make zlib-devel fuse-devel -y
2、创建进程用户
useradd -s /sbin/nologin -M mfs
3、安装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
4、修改主配置文件
c
d /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 #备份频率时间
5、授权、优化路径
chown -R mfs.mfs /usr/local/mfs
ln -s /usr/local/mfs/sbin/* /usr/local/bin/
6、启动服务
mfsmetalogger start
netstat -anpt | grep mfsmetalogger
echo "/usr/local/mfs/sbin/mfsmetalogger start" >> /etc/rc.local
chmod +x /etc/rc.local
三、搭建Chunk Server(三台Chunk Server主机搭建步骤相同)
安装数据服务器(chunkservers),这些机器的磁盘上要有适当的剩余空间,而且操作系统要遵循POSIX标准(验证了的有这些:Linux、FreeBSD、Mac OS X and OpenSolaris)。
chunkserver存储数据时,是在一个普通的文件系统如ext4上存储数据块或碎片(chunks/fragments)作为文件。你在chunkserver上看不到完整的文件。
1、安装相关编译器、工具包
yum install gcc gcc-c++ make zlib-devel fuse-devel -y
2、创建程序用户
useradd -s /sbin/nologin -M mfs
3、安装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
4、修改相应配置文件
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
vi mfshdd.cfg
添加一行:
/data 这是一个给MFS的分区,生产环境中最好使用独立的分区,或者磁盘挂载到此目录下
5、创建MFS分区目录
mkdir /data
chown -R mfs:mfs /data/
6、授权、优化路径
chown -R mfs.mfs /usr/local/mfs
ln -s /usr/local/mfs/sbin/* /usr/local/bin/
7、启动服务
mfschunkserver start
四、配置客户端
1、安装相关编译器、工具包
yum install gcc gcc-c++ make zlib-devel fuse-devel -y
4、创建进程用户
useradd -s /sbin/nologin -M mfs
5、安装mfs软件包
unzip 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
6、挂载MFS文件系统
mkdir /opt/mfs #创建挂载点
modprobe fuse #加载fuse模块到内核
mfsmount /opt/mfs/ -H 192.168.80.100 #挂载MFS
df -h #查看挂载情况
cd /opt/moosefs-master
echo “modprobe fuse” >> /etc/rc.local
echo “/usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.80.100” >> /etc/rc.local
在chunkserver上查看:
tree /data
7、在master上开启web监控服务
mfscgiserv start
8、访问MFS监控工具
http://192.168.80.100:9425 #client端访问web