当前位置: 首页 > news >正文

MFS分布式存储部署

目录

* 分布式原理

* MFS原理

* 案例实施

* 总结归纳

分布式原理

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

MFS原理

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

(1)MFS文件系统

  • 元数据服务器(master)---在整个体系中负责管理文件系统,维护元数据。
  • 元数据日志服务器(metalogger)---备份master服务器的日志变化,数据丢失时,可从日志文件中恢复。
  • 数据存储服务器(chunk server)---真正存储数据的服务器。存储时把文件分块保存,并在数据服务器间进行复制。
  • 客户端(client)---可以像挂载NFS一样挂载MFS文件系统
    (2)读取数据处理过程
    MFS分布式存储部署
    (3)写入数据处理过程
    MFS分布式存储部署

    案例环境

    MFS分布式存储部署

主机操作系统IP地址主要软件
Master ServerCentOS-7-x86_64192.168.37.128mfs-1.6.27-5.tar.gz
Metalogger ServerCentOS-7-x86_64192.168.37.130mfs-1.6.27-5.tar.gz
Chunk Server1CentOS-7-x86_64192.168.37.131mfs-1.6.27-5.tar.gz
Chunk Server2CentOS-7-x86_64192.168.37.132mfs-1.6.27-5.tar.gz
ClientCentOS-7-x86_64192.168.37.133mfs-1.6.27-5.tar.gz;fuse-2.9.2.tar.gz

源码包:链接:https://pan.baidu.com/s/1UdorWep8OzdlL7CPbgyzJQ 提取码:62nv

案例实施

一、搭建Master Server

1、下载源码包及安装环境包

yum install gcc gcc-c++ zlib-devel -y
systemctl stop firewalld.service
setenforce 0

2、创建用户

useradd -s /sbin/nologin mfs

3、安装mfs

tar zxvf mfs-1.6.27-5.tar.gz -C /opt
cd /opt/mfs-1.6.27

./configure \
--prefix=/usr/local/mfs \               #工作目录
--with-default-user=mfs \           #运行masterserver的用户
--with-default-group=mfs \       #运行masterserver的组
--disable-mfschunkserver \        #关闭节点服务
--disable-mfsmount                     #关闭客户端服务

make && make install

4、复制配置文件

cd /usr/local/mfs/etc/mfs
cp mfsexports.cfg.dist mfsexports.cfg #被挂载目录及权限配置文件
cp mfsmaster.cfg.dist mfsmaster.cfg #主配置文件
cp mfstopology.cfg.dist mfstopology.cfg #拓扑架构感知
MFS分布式存储部署

5、配置文件(此处无任何操作,主要对配置文件进行简介)

mfsmaster.cfg

#WORKING_ USER = mfs            #运行master server 的用户
#WORKING_ GROUP = mfs           #运行master server 的组
#SYSLOG_IDENT = mfsmaster        #master server 在syslog 中的标识,说明是由master serve 产生的
#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)
#MATOML_LISTEN_HOST = *                #metalogger 监听的IP 地址(默认是*,代表任何IP)
#MATOML_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                      #chunks 的回环频率(默认是:300 秒)
#CHUNKS_DEL_LIMIT = 100
#CHUNKS_WRITE_REP_LIMIT = 1         #在一个循环里复制到一个chunkserver 的最大chunk 数目(默认是1)
#CHUNKS_READ_REP_LIMIT = 5          #在一个循环里从一个chunkserver 复制的最大chunk 数目(默认是5)
#REJECT_OLD_ CLIENTS = 0          #弹出低于1.6.0 的客户端挂接(0 或1,默认是0)

mfsexports.cfg

#Allow everything but "meta".
*                    /                rw,alldirs,admin,maproot=0:0
#Allow "meta".
*                    .                rw
每个条目被分为三部分:客户端IP    允许挂载的目录     客户端拥有的权限 
alldirs:所有子目录都支持挂载
maproot:映射为root,还是指定的用户

6、启动服务

/usr/local/mfs/sbin/mfsmaster start
netstat -ntap | grep mfsmaster
#/usr/local/mfs/sbin/mfsmaster -s //停止

MFS分布式存储部署

二、搭建Metalogger Server

1、下载源码包及安装环境包

yum install gcc gcc-c++ zlib-devel -y
systemctl stop firewalld.service
setenforce 0

2、创建用户

useradd -s /sbin/nologin mfs

3、安装mfs

tar zxvf mfs-1.6.27-5.tar.gz -C /opt
cd /opt/mfs-1.6.27

./configure \
--prefix=/usr/local/mfs \               #工作目录
--with-default-user=mfs \           #运行masterserver的用户
--with-default-group=mfs \       #运行masterserver的组
--disable-mfschunkserver \        #关闭节点服务
--disable-mfsmount                     #关闭客户端服务

make && make install

4、复制配置文件

cd /usr/local/mfs/etc/mfs
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg

5、修改配置文件

vim mfsmetalogger.cfg
MASTER_HOST = 192.168.37.128 #指向master server

6、开启服务

/usr/local/mfs/sbin/mfsmetalogger start
netstat -ntap | grep mfsmetalogger

MFS分布式存储部署

三、搭建Chunk Server

1、下载源码包及安装环境包

yum install gcc gcc-c++ zlib-devel -y
systemctl stop firewalld.service
setenforce 0

2、创建用户

useradd -s /sbin/nologin mfs

3、安装mfs

tar zxvf mfs-1.6.27-5.tar.gz -C /opt
cd /opt/mfs-1.6.27

./configure \
--prefix=/usr/local/mfs \               #工作目录
--with-default-user=mfs \           #运行masterserver的用户
--with-default-group=mfs \       #运行masterserver的组
--disable-mfsmaster \                 #关闭主服务
--disable-mfsmount                     #关闭客户端服务

make && make install

4、复制配置文件

cd /usr/local/mfs/etc/mfs
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg #提供存储空间

5、修改配置文件

vim mfschunkserver.cfg
MASTER_HOST = 192.168.37.128    **  #指向master server**

vim mfshdd.cfg              #末行插入
/data

mkdir /data
chown -R mfs.mfs /usr/local/mfs                #权限设置

6、开启服务

/usr/local/mfs/sbin/mfschunkserver start
netstat -ntap | grep mfschunkserver

MFS分布式存储部署

四、客户端

1、安装环境包

yum install gcc gcc-c++ zlib-devel -y
systemctl stop firewalld.service
setenforce 0

2、安装fuse插件(mfs客户端依赖于fuse)

tar zxvf fuse-2.9.2.tar.gz -C /opt             #加载内核的小插件

cd /opt/fuse-2.9.2
./configure

make && make install

3、设置环境变量

vim /etc/profile       #末行插入环境变量
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
#pkg-config 是通过库提供的一个 .pc 文件获得库的各种必要信息的,这些信息可以通过 pkg-config 提供的参数单独提取出来直接供编译器和连接器使用。

source /etc/profile

4、安装mfs客户端

useradd -s /sbin/nologin mfs          #创建用户
tar zxvf mfs-1.6.27 -C /opt

cd /opt/mfs-1.6.27 
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmaster \
--disable-mfschunkserver \
--enable-mfsmount

make && make install

5、挂载mfs文件系统

mkdir /opt/mfs
modprobe fuse #加载fuse模块到内核
/usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.37.128
df -h

MFS分布式存储部署
6、优化mfs客户端常用操作

#mfs安装后生成/usr/local/mfs/bin目录,为方便使用其目录下的命名,可以加入到环境变量
vim /etc/profile
export PATH=/usr/local/mfs/bin:$PATH #识别mfs中所有命令
source /etc/profile

7、常用操作

mfsgetgoal -r /opt/mfs #复制文本
mfsgetgoal test #查询复制份数

MFS分布式存储部署

8、开启监控

#在master server开启监控,端口为9425
/usr/local/mfs/sbin/mfscgiserv
netstat -ntap | grep 9425

MFS分布式存储部署

9、客户端测试

客户端通过浏览器访问 http://192.168.37.128:9425

MFS分布式存储部署

监控界面各部分含义如下:

  • Info:显示MFS基本信息。
  • Servers:列出现有的Chunk Server。
  • Disks:列出现有的Chunk Server的硬盘信息。
  • Exports:列出可被挂载的目录。
  • Mounts:列出被挂载的目录。
  • Operations:显示正在执行的操作。
  • Resources:列出当前储存信息。
  • Quotas:列出当前配额信息。
  • Master Charts:显示Master Server操作情况。
  • Server Charts:显示Chunk Server操作情况、数据传输及系统状态。

总结归纳

1、本实验中master只能做单点,会出现单点故障。
2、要保证Master Server的高可用,需要增加一台master,做群集服务,本章主要讲述其原理及操作,后续会有群集的博文更新。
3、master发生故障时,可以从metalogger中恢复。
4、希望与大家一起学习,不断成长!

转载于:https://blog.51cto.com/13784264/2288364

相关文章:

  • 使用shell脚本自动安装Apache2.4.35
  • JAVA 同步实现原理
  • Java Agent 学习笔记
  • mysql如何直接查出从1开始递增的数
  • GlassFish新纪元
  • 基于树莓派的桌上足球计分器
  • C# 高级编程03----细节内容
  • mongodb之 oplog 日志详解
  • 动态库空间优化
  • 贝叶斯分类器
  • 【完整教程】新版直播频道上线,马上开始创建你的直播吧!
  • 如何用三个月学会python?
  • JDK11的工具的命令参考
  • MySQL缓存及变量
  • MySQL基础之 索引
  • ----------
  • 11111111
  • Apache Pulsar 2.1 重磅发布
  • JavaScript HTML DOM
  • js算法-归并排序(merge_sort)
  • 百度小程序遇到的问题
  • 技术发展面试
  • 那些被忽略的 JavaScript 数组方法细节
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • Semaphore
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • #define 用法
  • #Z2294. 打印树的直径
  • (06)Hive——正则表达式
  • (2)(2.10) LTM telemetry
  • (独孤九剑)--文件系统
  • (二)丶RabbitMQ的六大核心
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (小白学Java)Java简介和基本配置
  • (一)插入排序
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .NET轻量级ORM组件Dapper葵花宝典
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • @Transactional 竟也能解决分布式事务?
  • [1204 寻找子串位置] 解题报告
  • [AI]文心一言爆火的同时,ChatGPT带来了这么多的开源项目你了解吗
  • [C++基础]-入门知识