简介
mooseFS(moose 驼鹿)是一款网络分布式文件系统。它把数据分散在多台服务器上,但对于用户来讲,看到的只是一个源。MFS也像其他类unix文件系统一样,包含了层级结构(目录树),存储着文件属性(权限,最后访问和修改时间),可以创建特殊的文件(块设备,字符设备,管道,套接字),符号链接,硬链接。
当我们存储服务器的容量达到瓶颈之后,那我们就需要采用分布式的文件系统来扩大存储容量,类似与百度云的存储,也是采用分布式存储!
MFS的特征
1:层析结构(目录树)
2:存储文件属性(权限,访问和修改时间)
3:支持特殊文件(块设备,字符设备,管道)
4:符号链接,软硬链接
5:对文件系统访问可以通过IP地址或者密码进行访问限制
6:高可靠(数据的多个拷贝存储在不同的计算机上)
7:通过附加新的计算机或者硬盘可以实现容量的动态拓展
8:删除文件可以根据一个可配置的时间周期进行保留
9:不受访问和写入影响的文件连贯快照
应用场景
大规模高并发的数据存储及访问(小文件、大文件),
大规模的数据处理,如日志分析
MFS分布式文件系统部署方案
1 管理服务器 managing server (master):负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝
2元数据日志服务器 Metalogger server(Metalogger):负责备份 master 服务器的变化日志文件,文件类型为 changelog_ml.*.mfs,以便于在 master server 出问题的时候接替其进行工作
3 数据存储服务器 data servers (chunk servers ):听从管理服务器调度,提供存储空间,并为客户提供数据传输.。 真正存储用户数据的服务器。存储文件时,首先把文件分成块,然后这些块在数据服务器 chunkserver之间复 制(复制份数可以手工指定,建议设置副本数为 3)。数据服务器可以是多个,并且数量越多,可使用的“磁盘空间”越大,可靠性也越高。
4 客户机挂载使用 client computers:客户端挂载远程mfs服务器共享出的存储并使用。 通过 fuse 内核接口挂载进程管理服务器上所管理的数据存储服务器共享出的硬盘。 共享的文件系统的用法和 nfs 相似。 使用 MFS 文件系统来存储和访问的主机称为 MFS 的客户端,成功挂接 MFS 文件系统以后,就可以像以前使用 NFS 一样共享这个虚拟性的存储了。
系统部署方案
内部运行机制
1:客户端请求访问存储,请求发送到了MFS Master
2:MFS Master根据我们的请求,查询所需要的文件分布在哪些服务器上
3:客户端直接和存储服务器进行数据存储和读写
端口关系图
9419 : MFS master和MFS metalogger端通信端口(保障)
9420 : MFS master和MFS chunck通信端口(管理数据)
9421 : MFS master和MFS Client端通信端口(监听客户端)
9422 : MFS chunck 和MFS Client端通信端口(数据服务器可以和客户端进行传输)
9425 : MFS master web界面监听端口,查看整体运行状态(web界面端口库)
关于客户端fuse:
用户空间文件系统(Filesystem in Userspace,简称FUSE)是操作系统中的概念,指完全在用户态实现的文件系统。目前Linux通过内核模块对此进行支持。一些文件系统如NTFS-3G(作用:让Linux中对NTFS文件系统提供支持) 使用FUSE实现。,客户端都要支持fuse内核模块。加载mfs磁盘系统的命令使用了fuse,想挂载mfs的服务器,必须先安装fuse
实验:
实验环境:
192.168.1.10 管理服务器managing server (master)
192.168.1.11 元数据日志服务器(Metalogger)
192.168.1.12 数据存储服务器1 data servers (chunk servers )
192.168.1.13 数据存储服务器2
192.168.1.14 客户机挂载
MFS管理服务器(10)
下载依赖包
yum -y install rpm-build gcc gcc-c++ fuse-devel zlib-devel –y
添加mfs的用户
useradd -s /sbin/nologin mfs
上传moosefs-master.zip包
解压
unzip moosefs-master.zip && cd moosefs-master
配置编译安装(指定用户和用户组)
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs
make -j 2 && make install
cd /usr/local/mfs/
复制配置文件
cd etc/mfs
复制Master配置文件
cp mfsmaster.cfg.sample mfsmaster.cfg
复制输出目录配置文件
cp mfsexports.cfg.sample mfsexports.cfg
复制元数据日志
cp mfsmetalogger.cfg.sample mfsmetalogger.cfg
首次安装 master 时,会自动生成一个名为 metadata.mfs.empty 的元数据文件 metadata,该文件是空的。MooseFS master 运必须有文件 metadata.mfs
修改配置文件
cd /usr/local/mfs/etc/mfs/
vim mfsmaster.cfg
这个配置文件中所有注掉的设置都是默认的配置
cd /usr/local/mfs/var/mfs/
cp metadata.mfs.empty metadata.mfs
修改权限
chown -R mfs:mfs /usr/local/mfs/
netstat -antup | egrep (9419|9420|9421)
写入到开机自启动
echo "/usr/local/mfs/sbin/mfsmaster start" >> /etc/rc.local
chmod +x /etc/rc.local
add:服务的关闭方法
/usr/local/mfs/sbin/mfsmaster stop
查看生成的日志文件(配置文件中指定的)
ll /usr/local/mfs/var/mfs/
指定需要共享的权限
cd /usr/local/mfs/etc/mfs
vim mfsexports.cfg
mfsexports.cfg 文件每一条由三部分组成,第一部分表示客户端的 IP 地址,第二部分表示被挂接的目录,第三部分表示客户端拥有的权限,下面对三给部分进行解释
1.客户端 IP 地址
* 所有 IP 地址
x.x.x.x 单个 IP 地址
x.x.x.x/m.m.m.m IP 网络地址/子网掩码
f.f.f.f-t.t.t.t IP 段
2.被挂载的目录
/ 表示 MooseFS 的根
. 表示 MFSMETA 文件系
3.客户端拥有的权限
ro 只读
rw 读写
alldirs 允许挂载任何指定的子目录
maproot 映射为 root 用户还是指定的用户
password 指定客户端密码
安装MFS元数据日志服务器(11)
master server 一旦失效,可能就会将这台metalogger 机器取代而作为master server。
安装包cd
yum -y install rpm-build gcc gcc-c++ fuse-devel zlib-devel –y
mfs用户useradd -s /sbin/nologin mfs
加入包moosefs-master.zip
unzip moosefs-master.zip && cd moosefs-master
./configure --prefix=/usr/local/mfsmeta --with-default-user=mfs --with-default-group=mfs
make && make install
修改配置文件
cd /usr/local/mfsmeta/etc/mfs/
cp mfsmetalogger.cfg.sample mfsmetalogger.cfg
vim mfsmetalogger.cfg
配置文件需要知道的参数
元数据备份文件下载请求频率。默认为24小时,即每隔一天从元数据服务器 下载一个 metadata.mfs.back 文 件 。 当 元 数 据 服 务 器 关 闭 或者 出 故 障 时 , matedata.mfs.back 文件将消失,那么要恢复整个 mfs,则需从 metalogger 服务器取得该文件。请特别注意这个文件,它与日志文件一起,才能够恢复整个被损坏的分布式文件系统
MASTER SERVER 的 IP 地址
修改权限
chown -R mfs:mfs /usr/local/mfsmeta/
启动元数据日志服务器并写入到开机自启
/usr/local/mfsmeta/sbin/mfsmetalogger start
echo "/usr/local/mfsmeta/sbin/mfsmetalogger start" >> /etc/rc.local
chmod +x /etc/rc.local
add:服务关闭方法
/usr/local/mfsmeta/sbin/mfsmetalogger stop
Chunk Server安装配置(12)
安装包
yum install rpm-build gcc gcc-c++ fuse-devel zlib-devel -y
useradd -M -s /sbin/nologin mfs
拉包
unzip moosefs-master.zip
cd 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
vim mfschunkserver.cfg
指定9420 : MFS master和MFS chunck通信端口)
分配给 MFS 使用的磁盘空间配置文件的位置
个监听端口用于与其它数据存储服务器间的连接,通常是数据复制
vim mfschunkserver.cfg
在这里/tmp 是一个给 mfs 的分区,但在生产环境是一个独立的磁盘的挂载目录
指定共享目录
添加权限
chown -R mfs:mfs /usr/local/mfs/
服务器启动关闭
/usr/local/mfs/sbin/mfschunkserver start
echo "/usr/local/mfs/sbin/mfschunkserver start" >> /etc/rc.local
chmod +x /etc/rc.local
关闭方法:/usr/local/mfs/sbin/mfschunkserver stop
查看存储块
ls /tmp
配置客户端(14)
yum install rpm-build gcc gcc-c++ fuse-devel zlib-devel -y
useradd -s /sbin/nologin mfs
下载包moosefs-master.zip
unzip moosefs-master.zip && cd moosefs-master
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --enable-mfsmount
开启mfsmount必须有,作为客户端必须有的这一个选项,作为分布式共享挂载
make -j 2 && make install
创建挂载目录
mkdir /mfs
添加模块
modprobe fuse
lsmod | grep fuse
创建链接
ln -s /usr/local/mfs/bin/mfsmount /usr/bin/mfsmount
挂载
mfsmount /mfs/ -H 192.168.1.10 -p
如果配置文件没有指定,密码写root用户密码
开启机自启动
echo "modprobe fuse" >> /etc/rc.local
echo "/usr/local/mfs/bin/mfsmount /mfs -H 192.168.1.10" >> /etc/rc.local
chmod +x /etc/rc.local
测试
12存储端:
yum install -y tree
cd /tmp
客户端写入数据(14):
cp -r /boot/* /mfs/
12存储端再次查看00目录下生成碎片存储文件:
配置web监控
管理节点开启web界面(10)
/usr/local/mfs/sbin/mfscgiserv
查看web
查看磁盘状况
权限界面
挂载目录
服务器指标
优化:
关于密码设置
配置密码(10)
cd /usr/local/mfs/etc/mfs/
vim mfsexports.cfg
权限后面跟上密码即可
客户端卸载再挂载(14)
umount /mfs
mfsmount /mfs/ -p -H 192.168.1.10
/usr/local/mfs/sbin/mfsmaster restart
添加Chunk Server(13)
yum install rpm-build gcc gcc-c++ fuse-devel zlib-devel –y
useradd -s /sbin/nologin mfs
上传包moosefs-master.zip
unzip moosefs-master.zip && cd 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
vim mfschunkserver.cfg
cp mfshdd.cfg.sample mfshdd.cfg
vim mfshdd.cfg
chown -R mfs:mfs /usr/local/mfs/
chown -R mfs:mfs /opt/
/usr/local/mfs/sbin/mfschunkserver start
yum install -y tree
tree /opt
10端重启服务
/usr/local/mfs/sbin/mfsmaster restart
14客户端测试
cp /etc/passwd /mfs/
查看12、13端的数据目录,都会有新的文件产生
设置复制份数(要备份几份客户端14设置)
cd /usr/local/mfs/bin/
设置2份
./mfssetgoal -r 2 /mfs/
查看份数
./mfsgetgoal /mfs
有几个chunk服务器就会备份几份
查看复制份数,都保存在哪儿
./mfsfileinfo /mfs/passwd
回收站清空时间
默认保持24小时,因为设置后存储的的时间是按照小时进行取整,设置的单位是秒,不满一小时就按一小时计算
mfsmaster配置文件
# WORKING_USER = mfs #运行master server 用户
# WORKING_GROUP = mfs #运行master server 组
# SYSLOG_IDENT = mfsmaster #master server 在syslog中的标识,说明是由master产生的
# LOCK_MEMORY = 0 #是否执行mlockall()避免mfsmaster 进程溢出(默认为0)
# NICE_LEVEL = -19 #运行的优先级(如果可以默认-19;注意:进程必须是用root启动)
# EXPORTS_FILENAME = /usr/local/mfs/etc/mfsexports.cfg #被挂接的目录及其权限控制文件的存放位置
# DATA_PATH = /usr/local/mfs/var/mfs #数据存放路径,此目录分三类文件,changelog ,sessions 和stats
# BACK_LOGS = 50 #metadata的改变log文件数目(默认是50)
# REPLICATIONS_DELAY_INIT = 300 #延迟复制的时间(默认是300s)
# REPLICATIONS_DELAY_DISCONNECT = 3600 #chunkserver 断开的复制延迟(默认是3600)
# MATOCS_LISTEN_HOST = * #metalogger 监听的ip地址(默认是*,代表任何ip)
# MATOCS_LISTEN_PORT = 9419 #metalogger 监听的端口地址(默认是9419)
# MATOCS_LISTEN_HOST = * #用于chunkserver 连接的ip地址(默认是*,代表任何ip)
# MATOCS_LISTEN_PORT = 9420 #用于chunkserver 连接的端口地址(默认是9420)
# MATOCU_LISTEN_HOST = * #用于客户端挂接的ip地址(默认*,代表任何ip)
# MATOCU_LISTEN_PORT = 9421 #用于客户端挂接连接的端口地址(默认9421)
# CHUNKS_LOOP_TIME = 300 #chunksde 回环频率(默认是:300秒)
# CHUNKS_WRITE_REP_LIMIT = 1 #在一个循环里复制到一个chunkserver的最大chunk数目
# CHUNKS_READ_REP_LIMIT = 5 #在一个循环里从一个chunkserver复制的最大chunk数目
#CHUNKS_READ_REP_LIMIT = 0 弹出低于1.6.0的客户端挂接(0或1,默认
集群启动和关闭循序
MFS集群启动:
1 启动master server
2 启动chunk server
3 启动metalogger
4 启动客户端,使用mfsmount挂载相关目录
MFS集群停止:
1 所有客户端卸载MooseFS文件系统
2 停止chunkserver
3 停止metalogger
4 停止master server
发布者:LJH,转发请注明出处:https://www.ljh.cool/5511.html