九爷带你部署Mfs分布式文件系统

简介: Mfs分布式文件系统前言:前面我们学习过NFS,以及虚拟化课程的时候我们学习过openfiler,这两个都是属于存储服务器。但是他们有着共同的缺点,就是性能不好,因为都是通过共享方式共享一个存储空间,使得服务器不堪重负,会出现超时的问题,而且存在着单点故障问题,尽管可以用rsync同步数据到另外一台服务器上做备份,但性能方便没有任何提升。

Mfs分布式文件系统

前言:前面我们学习过NFS,以及虚拟化课程的时候我们学习过openfiler,这两个都是属于存储服务器。但是他们有着共同的缺点,就是性能不好,因为都是通过共享方式共享一个存储空间,使得服务器不堪重负,会出现超时的问题,而且存在着单点故障问题,尽管可以用rsync同步数据到另外一台服务器上做备份,但性能方便没有任何提升。而分布式文件系统把数据分散存储在不同的服务器上,读取数据的时候相当于同时读取,不像nfs是一对多的关系,而是多对多的关系,这样可以使得性能得到大幅提升。

今天我们学习使用MFS搭建分布式文件系统,MFS具有容错功能,高可用,可扩展的功能。MFS把数据分散在多台服务器上,但用户看到的只是一个源。

  1. wKiom1nMZ23TUojTAACnoFAQl2E233.png-wh_50

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

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

  • 客户端向已知的Chunk Server请求发送数据

  • Chunk Server向客户端发送数据

     

    3)写入的过程

  • 客户端向元数据服务器发送写入请求

  • 元数据服务器与Chunk Server进行交互,但元数据服务器只在某些服务器创建新的分块Chunks,创建成功后由Chunk Servers告知元数据服务器操作成功

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

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

  • Chunk Server与其他Chunk Server进行数据同步,同步成功后Chunk Server告知客户端数据写入成功

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

     

  1. 实验环境

  2. 实验拓扑

     wKiom1nMZ53zHJewAADSfbvHs8A921.png-wh_50

     

  3. 虚拟机环境

     

     wKiom1nMZ7yzCz4fAABm8BwkXl4699.png-wh_50

     

     

     

  4. 实验步骤

  5. 搭建master server

  6. 停止防火墙并且安装支持包

     

     wKioL1nMZ6LQF1UgAACGwBVKFSc356.png-wh_50

  7. 创建用户

     wKiom1nMaALzY8xOAABNhypyii8038.png-wh_50

     

  8. 安装源码包

    [root@centos3 ~]# tar zxf mfs-1.6.27-5.tar.gz

    [root@centos3 ~]# cd mfs-1.6.27

    [root@centos3 mfs-1.6.27]# ./configure \

    > --prefix=/usr/local/mfs \//指定安装目录

    > --with-default-user=mfs \//指定程序运行用户

    > --with-default-group=mfs \//指定程序运行组

    > --disable-mfschunkserver  \//禁用Chunk功能

    > --disable-mfsmount    \//禁用mfsmount功能

    [root@centos3 mfs-1.6.27]# make && make install //编译安装

     

     wKioL1nMZ9zRrEbWAAC_To-rQv0336.png-wh_50

     

     wKiom1nMaDSCq7rZAABAnsdL1ik592.png-wh_50

     

     

    4)复制文件(设置配置文件)

    [root@centos3 mfs-1.6.27]# cd /usr/local/mfs/etc/mfs/

    [root@centos3 mfs]# ls

    mfsexports.cfg.dist  mfsmetalogger.cfg.dist

    mfsmaster.cfg.dist          mfstopology.cfg.dist

    [root@centos3 mfs]# cp mfsexports.cfg.dist  mfsexports.cfg

    [root@centos3 mfs]# cp mfsmaster.cfg.dist  mfsmaster.cfg

    [root@centos3 mfs]# cp mfstopology.cfg.dist  mfstopology.cfg

    [root@centos3 mfs]# cd /usr/local/mfs/var/mfs/

    [root@centos3 mfs]# ls

    metadata.mfs.empty

    [root@centos1 mfs]# cp metadata.mfs.empty  metadata.mfs

    这个文件存放master的变化信息

     wKioL1nMaBSCsnyyAADJCqUUpo0931.png-wh_50

  9. 配置文件(下面的只是介绍一下,不用修改,默认就好)

    需要用到两个配置文件:mfsmaster.cfg(主配置文件)和mfsexport.cfg(被挂载目录及访问权限)

    mfsmaster.cfg常用的参数如下,默认全部都是不需要修改的,全文都是以#开头,也就是说都是默认配置

    [root@centos1 mfs]# cd /usr/local/mfs/etc/mfs/

    [root@centos1 mfs]# vim mfsmaster.cfg

    WORKING_USER = mfs//运行masterserver的用户

    # WORKING_GROUP = mfs//运行masterserver的组

    # SYSLOG_IDENT = mfsmaster//masterserversyslog的标示,说明是由masterserver产生的

    # LOCK_MEMORY = 0//是否执行mlokall(),以避免mfsmaster进程溢出默认为0

    # NICE_LEVEL = -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  //延迟复制的时间(默认300

    # REPLICATIONS_DELAY_DISCONNECT = 3600  //Chunkserver断开复制延迟(默认是3600秒)

    # MATOML_LISTEN_HOST = *//metalogger监听的IP地址默认是所有地址

    # MATOML_LISTEN_PORT = 9419//metalogger监听的端口地址(默认为9419

    # MATOML_LOG_PRESERVE_SECONDS = 600  

    # MATOCL_LISTEN_HOST = * //用于chunkserver连接的IP地址(默认为*代表所有IP

    # MATOCL_LISTEN_PORT = 9421//用户客户端挂在的监听端口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//弹出低于1.6.0的客户端挂接(01,默认是0

    # deprecated:

    # CHUNKS_DEL_LIMIT - use CHUNKS_SOFT_DEL_LIMIT instead

    # LOCK_FILE - lock system has been changed, and this option is used onl

    y to search for old lockfile

    mfsexport.cfg文件参数格式如下

    # Allow everything but "meta".

    *          /       rw,alldirs,maproot=0

    # Allow "meta".

    *                       .       rw                          

    该文件,每一个条目分为三个部分

    第一部分:客户端IP地址

    第二部分:被挂载的目录

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

    地址可以指定几种表现形式

    *代表所有的IP地址

    n.n.n.n单个ip地址

    n.n.n.n/bIP网络地址/位数掩码

    n.n.n.n/m.m.m.m IP网络地址/子网掩码

    f.f.f.f-t.t.t.t IP

    目录部分的标示如下

    /标示MFS

    .表示MFSMETA文件系统

    权限部分如下所示

    ro——只读模式共享

    rw——读写模式共享

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

    maproot——映射为root,还是普通用户

    password——指定客户端的密码

    以上就是对mfsmaster.cfgmfsexport文件的解释,默认就是最好的,不需要做任任何修改。

     

  10. 启动master server

    第一遍启动的时候,可能会出现以下错误信息

    [root@centos1 mfs]# /usr/local/mfs/sbin/mfsmaster  start

    loading sessions ... file not found

    如果出现以上信息,则关闭服务并重新启动就可以了

    [root@centos1 mfs]# /usr/local/mfs/sbin/mfsmaster  -s

    -s 表示停止服务

    [root@centos1 mfs]# /usr/local/mfs/sbin/mfsmaster  start

    再启动就不会出现任何信息

     wKiom1nMaJ-Rc-kKAAE3l9i2iP0667.png-wh_50

     

  11. 查看是否启动

    wKiom1nMaMvwjanuAABx7J52GV4128.png-wh_50 

     

8建立防火墙规则

[root@centos1 mfs]# iptables -I INPUT -p tcp --dport 9419 -j ACCEPT

[root@centos1 mfs]# iptables -I INPUT -p tcp --dport 9420 -j ACCEPT

[root@centos1 mfs]# iptables -I INPUT -p tcp --dport 9421 -j ACCEPT

[root@centos1 mfs]# service iptables save

 

 

  1. 搭建metalogger server

    1)安装mfs(同上)

     

     wKioL1nMaL-yHR3dAADXSHCAGMI932.png-wh_50


  1. Useradd mfs  -s  /sbin/nologin

    wKiom1nMahDhL_ZGAAESNbTkh6s262.png-wh_50

  2. 复制文件

     wKioL1nMafSx1sLpAABzazfh3GY945.png-wh_50

     

    3)修改配置文件,添加master服务器的ip地址(注意去掉注释和空格)

     wKioL1nMahmT4SmIAABjOWl2Blc132.png-wh_50

     

  3. 开启服务

    wKiom1nMaoGAGP5WAADZK82fM-M213.png-wh_50

     

     

    5)查看端口

    [root@centos5 mfs]# netstat -anpt | grep 9419

    tcp        0      0 192.168.1.2:50929           192.168.1.1:9419            ESTABLISHED 53533/mfsmetalogger

    [root@centos5 mfs]# iptables -I INPUT -p tcp --dport 9419 -j ACCEPT

    [root@centos5 mfs]# service iptables save

     

  4. 搭建chunk server(二台chunk的搭建步骤相同)

  5. 安装mfs(同上)

     

     wKioL1nManKy2lhDAADX-eZG6ac140.png-wh_50

     

     wKioL1nMapbSCTclAADkP9pfAbQ287.png-wh_50

     

     

     

     

  6. 复制文件

  7. Cd /usr/local/mfs/etc/mfs

  8. Cp mfschunkserver.cfg.dist mfschunkserver.cfg

  9. Cp mfshdd.cfg.dist mfshdd.cfg

  10. Vi mfschunkserver.cfg


wKioL1nMarfS0OiQAAB_fvGcYoQ064.png-wh_50 


  1. 修改配置文件(一共2个)

     vim mfschunkserver.cfg


wKiom1nMa5eRdY6QAADGrMOhaus189.png-wh_50

vim mfshdd.cfg(添加/data

wKiom1nMbBaBtmu2AABUvYXWeVM994.png-wh_50


  1. 建立文件夹并开启服务

     wKioL1nMbHWTmvwpAAD0RrDiZJ4304.png-wh_50

     

  2. 开启例外

    [root@centos5 mfs]# ps -ef | grep mfs

    mfs       56269      1  0 20:54 ?        00:00:00 /usr/local/mfs/sbin/mfschunkserver start

    root      56297  48740  0 20:54 pts/0    00:00:00 grep mfs

    [root@centos5 mfs]# iptables -I INPUT -p tcp --dport 9422 -j ACCEPT

    [root@centos5 mfs]# service iptables save

     

    注意:第二台chunk的配置和上面的配置完全一样,这里就不在说明了

     

     

  3. 客户端配置

  4. 安装fuseMFS客户端依赖于FUSE

     

     wKiom1nMbO6S4jNEAAEX0s37WRQ699.png-wh_50

     

     

  5. 设置环境变量

     

     

    添加下面这行

    export  PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH

     

     wKioL1nMbOijLmIQAADem0wGmvY376.png-wh_50

     

     

  6. 安装MFS客户端

     

     wKiom1nMbV7g-nNqAAEejRlPvk4963.png-wh_50

     

     

     

     

     

  7. 挂载文件系统

     wKiom1nMbYKQoUH9AADZnIgAEQQ076.png-wh_50

     

     

     

  8. 查看挂载情况

     wKiom1nMbaKiXDvwAACoZDZXDis306.png-wh_50

     

  9. 设置文件被复制的份数并测试

     

    MFS客户端安装完毕后,会生成/usr/local/mfs/bin/目录,在这个目录下有很多命令是用户所需的。

    mfsgetgoal命令用来查看文件被复制的分数,利用-r命令可以对整个目录进行递归,goal是指文件比复制的分数。

    [root@centos6 mfs-1.6.27]# mfsgetgoal  -r /mnt/mfs/

    /mnt/mfs/:

     directories with goal  1 :          1

    由于还没有设置,默认为1

    命令mfssetgoal用来设置文件被复制的分数,生产环境下Chunk server节点数量应大于2,文件副本数小于Chunk server服务器的数量。由于我有二台Chunk server 我将副本数量设置为1

     

    vim  /etc/profile文件中增加一行(为了方便执行命令)

     

     wKiom1nMbdyiSVHzAAE10aG2-vU572.png-wh_50

     

     

     

    设置查询文件被复制的份数:

     

     wKiom1nMbhCCGHnrAAD_0ZQUQu0673.png-wh_50

     

     

     

    /mnt/mfs中建立文件

     

     

    分别打开两台chunk查看/data下,都产生了加密的数据,说明成功了


  10.  

wKiom1nMbkWjZCkBAAGf8ngXQqA633.png-wh_50

5mfs监控

mfscgiserv是用python编写的一个web服务器,其监听端口是9425,可以再masster server 上通过 /usr/local/mfs/sbin/mfscgiserv来启动,用户利用览器就可以完全监控所有客户挂接、Chunk serverMaster server

在一台客户端上通过览器访问http://192.168.1.1:9425

 

[root@centos3 mfs]# /usr/local/mfs/sbin/mfscgiserv

lockfile created and locked

starting simple cgi server (host: any , port: 9425 , rootpath: /usr/local/mfs/share/mfscgi)

[root@centos3 mfs]# iptables -I INPUT -p tcp --dport 9425 -j ACCEPT    


 wKioL1nMblLQEb8bAADeDpwb2MI968.png-wh_50



 wKiom1nMbqnQ0pxwAAB29CeGtq8656.png-wh_50

 

  1. 灾难恢复

    MFS维护及灾难恢复

    1MFS集群的启动与停止

    MFS集群的启动顺序如下

    1)启动mfsmaster进程

    2)启动所有的mfsChunkserver进程

    3)启动mfsmetalogger进程

    4)在所有客户端上挂载NFS文件系统

    MFS集群的停止顺序如下

    1)在所有客户端卸载MFS挂载

    2)停止Chunkserver进程

    3)停止mfsmetalogger进程

    4)停止mfsmaster进程

     

    2MFS灾难恢复

    整个MFS体系中,直接断电只有master server进程有可能无法启动,可以在master上使用命令/usr/local/mfs/sbin/mfsmetarestore -a修复

    我们将master server 直接断电(必须运行的时间够20分钟才可以断电,否则数据很有可能直接丢失)

    [root@centos1 ~]# /usr/local/mfs/sbin/mfsmaster start

    init: file system manager failed !!!

    error occured during initialization - exiting

     

    [root@centos1 ~]# /usr/local/mfs/sbin/mfsmetarestore -a

    loading objects (files,directories,etc.) ... ok

    loading names ... ok

    loading deletion timestamps ... ok

    loading chunks data ... ok

    checking filesystem consistency ... ok

    connecting files and chunks ... ok

    progress: current change: 0 (first:0 - last:0 - 100% - ETA:finished)

    store metadata into file: /usr/local/mfs/var/mfs/metadata.mfs

    [root@centos1 ~]# /usr/local/mfs/sbin/mfsmaster  start

  2. MetaLogger中恢复

     

    MFS元数据通常有两部分的数据,分别如下

    1)主要元数据文件metadata.mfs,当mfsmaster运行时会被命名为metadata.back.mfs

    2)元数据改变日志 changelog.*.mfs,存储了过去N小时的文件变更。

     

    Master 发生故障时,可以从MetaLogger中恢复,步骤如下

    1)安装一台mfsmaster,利用同样的配置来配置这台mfsmastermfsmaster进程先不要启动

    2)将metalogger/usr/local/mfs/var/mfs/目录下所有文件复制到mfsmaster相应的目录中。

    [root@centos3 mfs]# scp root@192.168.1.101:/usr/local/mfs/var/mfs/* /usr/local/mfs/var/mfs/

    [root@centos3 mfs]# /usr/local/mfs/sbin/mfsmetarestore  -m metadata_ml.mfs.back -o metadata.mfs changelog_ml.*.mfs

    loading objects (files,directories,etc.) ... ok

    loading names ... ok

    loading deletion timestamps ... ok

    loading chunks data ... ok

    checking filesystem consistency ... ok

    connecting files and chunks ... ok

    changelog_ml.0.mfs:1: version mismatch

    [root@centos3 mfs]# /usr/local/mfs/sbin/mfsmaster  start

    [root@centos3 mfs]# ls

    Ceshi

     

    注意:如果是全新安装的master,恢复数据后,需要更改metaloggerchunkserver,配置MASTER_HOSTip地址,客户端也需要重新挂载mfs目录。


相关文章
|
1月前
|
Java 测试技术 Linux
jmeter-分布式部署之负载机的设置
jmeter-分布式部署之负载机的设置
46 1
|
4月前
|
关系型数据库 MySQL 网络安全
利用ansbile部署lamp并部署Discuz(非分布式)
利用ansbile部署lamp并部署Discuz(非分布式),实验准备,设置ansbile的hosts文件,在192.168.115.148上完成相关准备,编写roles,执行
53 0
|
6月前
|
Java 应用服务中间件 Linux
07分布式电商项目 - 管理中心的部署
07分布式电商项目 - 管理中心的部署
27 0
|
6月前
|
Dubbo Java 应用服务中间件
06分布式电商项目 - Dubbox 本地 JAR 包部署与安装
06分布式电商项目 - Dubbox 本地 JAR 包部署与安装
28 0
|
13天前
|
Docker 容器 关系型数据库
【PolarDB-X从入门到精通】 第四讲:PolarDB分布式版安装部署(源码编译部署)
本期课程将于4月11日19:00开始直播,内容包括源码编译基础知识和实践操作,课程目标是使学员掌握源码编译部署技能,为未来发展奠定基础,期待大家在课程中取得丰富的学习成果!
【PolarDB-X从入门到精通】 第四讲:PolarDB分布式版安装部署(源码编译部署)
|
3月前
|
数据库 OceanBase
OceanBase数据库是一个分布式集群产品,在部署时对硬件资源有特定的需求
OceanBase数据库是一个分布式集群产品,在部署时对硬件资源有特定的需求【1月更文挑战第12天】【1月更文挑战第56篇】
29 2
|
4月前
|
消息中间件 存储 Java
分布式实时消息队列Kafka(二)Kafka分布式集群部署
分布式实时消息队列Kafka(二)Kafka分布式集群部署
76 0
|
4月前
|
数据可视化 Linux 调度
DolphinScheduler【部署 01】分布式可视化工作流任务调度工具DolphinScheduler部署使用实例分享(一篇入门学会使用DolphinScheduler)
DolphinScheduler【部署 01】分布式可视化工作流任务调度工具DolphinScheduler部署使用实例分享(一篇入门学会使用DolphinScheduler)
182 0
|
4月前
|
监控 前端开发 应用服务中间件
Zabbix【部署 01】Zabbix企业级分布式监控系统部署配置使用实例(在线安装及问题处理)程序安装+数据库初始+前端配置+服务启动+Web登录
Zabbix【部署 01】Zabbix企业级分布式监控系统部署配置使用实例(在线安装及问题处理)程序安装+数据库初始+前端配置+服务启动+Web登录
413 0
|
4月前
|
Ubuntu 调度 数据安全/隐私保护
Docker部署开源分布式任务调度平台DolphinScheduler并实现远程访问办公
Docker部署开源分布式任务调度平台DolphinScheduler并实现远程访问办公

热门文章

最新文章