轻松部署MFS分布式文件系统 【内附源码包】

MFS概述

MFS是一种分布式文件系统,它把数据分散存放在多个物理服务器上,前面只放置一台负责“调度”元数据服务器,最终呈现给用户的则是一个统一的资源。
优点:
相对于集中式文件系统来说,分布式系统拥有更好的扩展性、稳定性、数据的安全性。
缺点:
master只能做单点,会出现单点故障

常规特征

对标准的文件操作来说,mfs用起来跟其它的类unix系统类似:
1.分层次的结构(目录树)
2.存储POSIX文件属性(权限、最后访问和修改时间)
3.支持特殊文件(块和字符设备、管道以及套接字)
4.符号连接和硬连接
5.对文件系统的访问可以通过IP地址和(或者)密码进行限制

独有特征

1.高可靠(数据的多个拷贝被存储在不同的计算机上)
2.通过附加新的计算机或者硬盘可以实现容量的动态扩展
3.删除的文件可以根据一个可配置的时间周期进行保留(一个文件系统级别的回收站)
4.不受访问和写入影响的文件连贯快照

体系机构

1.管理服务器(master server)
一台管理整个文件系统的独立主机,存储着每个文件的元数据(文件的大小、属性、位置信息,包括所有非常规文件的所有信息,例如目录、套接字、管道以及设备文件)
2.数据服务器群(chunk servers)
任意数目的商用服务器,用来存储文件数据并在彼此之间同步(如果某个文件有超过一个备份的话)
3.元数据备份服务器(metalogger server)
任意数量的服务器,用来存储元数据
变化日志并周期性下载主要元数据文件,以便用于管理服务器意外停止时好接替其位置。
4.访问mfs的客户端
5.任意数量的主机,可以通过mfsmount进程与管理服务器(接收和更改元数据)和数据服务器(改变实际文件数据)进行交流。

架构及实现原理

1.MFS文件系统架构包括以下四种角色:

a.管理服务器 managing server (Master):负责各个数据存储服务器的管理,文件读写调度,文件空间回收以及恢复.多节点拷贝。

b.元数据日志服务器 Metalogger server(Metalogger):负责备份Master服务器的变化日志文件,文件类型为changelog_ml.*.mfs,以便于在master server出问题的时候接替其进行工作。

c.数据存储服务器 (chunkservers):负责连接管理服务器,听从管理服务器调度,提供存储空间,并为客户提供数据传输

d.客户机挂载使用client computers:通过fuse内核接口挂接远程管理服务器上所管理的数据存储服务器,看起来共享的文件系统和本地 unix 文件系统使用一样的效果。

2.实现原理

(1) MFS 写入数据过程:
? 客户端向元数据服务器发送写入请求。
? 元数据服务器与Chunk Server进行交互(只有当所需的分块Chunks不存在的时候才进行这个交互):
? 元数据服务器只是在某些服务器创建新的分块chunks。
? Chunk Servers告知元数据服务器,步骤a已经操作成功。
? 元数据服务器告知客户端,你可以在哪个Chunk Server的哪些Chunks写入数据。
? 客户端向指定的Chunk Server写入数据
? Chunk Server与其他Chunk Server进行数据同步。
? Chunk Server之间同步成功。
? Chunk Server告知客户端数据写入成功。

(2 )MFS 读取数据数据过程:
? 客户端向元数据服务器发出读请求。
? 元数据服务器把所需数据存放的位置(Chunk Server的IP地址和chunk编号)告知客户端。
? 客户端向已知的Chunk Server请求发送数据。
? Chunk Server向客户端发送数据

实验案例:

使用5台服务器模拟搭建MFS文件系统,拓扑图如下

实验环境

软件包链接:https://pan.baidu.com/s/11_BcT5ahW01FAx73WT5q1w
密码:ibuy

搭建master sever

1.关闭防火墙

systemctl stop firewalld.service
setenforce 0

2.解压软件包

yum install -y gcc gcc-c++ zlib-devel #安装环境工具包
useradd mfs -s /sbin/nologin #添加进程用户
tar zvxf mfs-1.6.27-5.tar.gz -C /opt #解压软件包

3.编译安装

cd /opt/mfs-1.6.27/ #切换到此目录下
./configure \
--prefix=/usr/local/mfs \ #指定安装目录
--with-default-user=mfs \ #指定运行用户
--with-default-group=mfs \ #指定运行组
--disable-mfschunkserver \ #禁用mfs的chunk功能
--disable-mfsmount #禁用mfs的mount功能
make && make install #编译安装

4.复制文件

cd /usr/local/mfs/etc/mfs
cp mfsmaster.cfg.dist mfsmaster.cfg #主配置文件
cp mfsexports.cfg.dist mfsexports.cfg #挂载以及权限设定文件
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg #日志文件
cd /usr/local/mfs/var/mfs
cp metadata.mfs.empty metadata.mfs #master元数据文件

5.创建软连接

ln -s /usr/local/mfs/sbin/* /usr/local/bin/

6.开启服务

mfsmaster start #开启mfs
ps -ef | grep mfs # 查看启动端口
/usr/local/mfs/sbin/mfsmaster -s #停止

搭建logger server服务

1.解压软件包

useradd mfs -s /sbin/nologin #创建进程用户
tar zvxf mfs-1.6.27-5.tar.gz -C /opt #解压软件包

2.编译安装

cd /opt/mfs-1.6.27/
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfschunkserver \ #禁用mfs的chunk功能
--disable-mfsmount #禁用mfs的mount功能
make && make install

3.复制文件

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

4.修改配置文件

vim mfsmetalogger.cfg
#约15行
MASTER_HOST = 192.168.65.159 #指向master的IP地址

5.开启服务

/usr/local/mfs/sbin/mfsmetalogger start
ps -ef | grep mfs #查看端口
/usr/local/mfs/sbin/mfsmetalogger -s 停止

搭建chunkserver1 (2配置相同)

1.环境包

yum install -y gcc gcc-c++ zlib-devel #安装工具包
useradd mfs -s /sbin/nologin #创建进程用户

2.解压软件包

tar zvxf mfs-1.6.27-5.tar.gz -C /opt

3.编译安装

cd /opt/mfs-1.6.27/
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmaster \ #禁用mfs的master功能
--disable-mfsmount #禁用mfs的mount功能
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 #约12行
MASTER_HOST = 192.168.65.159 #指向master的IP
vim mfshdd.cfg
/data #添加目录

6.创建mfs分区目录

mkdir /data #创建mfs分区目录
chown -R mfs.mfs /data/ #赋予权限

7.启动服务

/usr/local/mfs/sbin/mfschunkserver start

搭建client

1.解压fuse软件包

yum install -y gcc gcc-c++ zlib-devel
tar zvxf fuse-2.9.2.tar.gz -C /opt

2.编译安装

cd /opt/fuse-2.9.2/
./configure
make && make install

3.添加环境变量

vim /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKGCONFIG
PATH
source /etc/profile

4.解压mfs软件包

tar zvxf mfs-1.6.27-5.tar.gz -C /opt
useradd -s /sbin/nologin mfs

5.编译安装

cd /opt/mfs-1.6.27/
./configure \
--prefix=/usr/local/mfs \
--with-default-user=mfs \
--with-default-group=mfs \
--disable-mfsmaster \
--disable-mfschunkserver \ #禁用mfs的chunk功能
--enable-mfsmount # 开启mfs的mount功能
make && make install #编译安装

6.挂载mfs文件系统

cd /usr/local/mfs/etc/mfs
mkdir /opt/mfs #创建挂载点
modprobe fuse #加载fuse模块到内核
/usr/local/mfs/bin/mfsmount /opt/mfs -H 192.168.65.159 #挂载MFS

7.优化客户端

vim /etc/profile
export PATH=/usr/local/mfs/bin:$PATH
source /etc/profile #刷新环境变量使其生效
mfsgetgoal -r /opt/mfs #复制文本

8.启动监控

/usr/local/mfs/sbin/mfscgiserv
netstat -ntap | grep 9425

9.客户端访问 http://192.168.65.159:9425

原文地址:http://blog.51cto.com/13760351/2292344

时间: 2024-10-07 11:34:04

轻松部署MFS分布式文件系统 【内附源码包】的相关文章

详细讲解MFS分布式文件系统搭建(内含源码包)

初步了解分布式原理: 分布式文件系统(Distributed File Systemm)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连.简单来说,就是把一些分散的(分布在局域网内各个计算机上)共享文件夹,集合到一个文件夹内(虚拟共享文件夹).对于用户来说,要访问这些共享文件夹时,只要打开这个虚拟共享文件夹,就可以看到所有链接到虚拟共享文件夹内的共享文件夹,用户感觉不到这些共享文件是分散在各个计算机上的.分布式文件系统的好处是集中访问.简化操作.数据容灾,以

手把手教你部署WEB邮件系统Squirrelmail小松鼠(内附源码包)

简介 Web邮件系统指的是提供给用户发信.收信的网页操作界面,能够完成和MUA软件类似的邮件管理.通讯簿等附加功能,同时Web邮件系统依赖于已有的收信.发信服务器,但不需要用户预先配置邮箱属性,因此使用更加方便,在Internet中应用十分广泛.而SquirrelMail是使用PHP开发的一套网页程序可以与 Postfix. Dovecot很好地协作,通过Web界面提供邮件发送.接收和管理操作. 实验环境 系统环境:centos6.5 LinuxIP地址:192.168.1.77(Linux)

Nginx + Tomcat 负载均衡群集 【内附源码包】

前言: 1·在之前都学习 Linux 的一些服务和搭建,都很熟悉 !这篇文章主要讲Nginx.Tomcat与 Nginx + Tomcat 负载均衡群集.2·在各种网站服务器软件中,除了 Apache HTTP Server 外,还有一款轻量级的 HTTP 服务器软件--Nginx,它是由俄罗斯 Lgor Sysoev(伊戈尔·赛索耶夫)开发. Nginx 的优点: 1·稳定性2·系统资源消耗低3·高并发链接的处理能力 (30000~50000 个并发请求),核心优点!4·反向代理服务器5·安装

源码手工编译LNMP架构(内附源码包)

简介 LNMP指的是一个基于CentOS/Debian编写的Nginx.PHP.MySQL.phpMyAdmin.eAccelerator一键安装包.可以在VPS.独立主机上轻松的安装LNMP生产环境.LNMP代表的就是:Linux系统下Nginx+MySQL+PHP这种网站服务器架构.Linux是一类Unix计算机操作系统的统称,是目前最流行的免费操作系统.代表版本有:debian.centos.ubuntu.fedora.gentoo等:Nginx是一个高性能的HTTP和反向代理服务器,也是

详解CentOS7.4搭建Tomcat构建Java Web站点(内附源码包)

Java简介 Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征.Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论.Java具有简单性.面向对象.分布式.健壮性.安全性.平台独立与可移植性.多线程.动态性等特点.Java可以编写桌面应用程序.Web应用程序.分布式系统和嵌入式系统应用程序等. Tomcat简介 Tomcat是Apache软件基金会的Jakarta项目中的一

详解postfix邮箱服务器安装、配置及其工作原理(内附源码包)

简介 postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件.postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试.在Internet世界中,大部分的电子邮件都是通过sendmail来投递的,大约有100万用户使用sendmail,每天投递上亿封邮件.这真是一个让人吃惊的数字.Postfix试图更快.更容易管理.更安全,同时还与sendmail保持足够的兼容性. 工作原理 客户端通过Outlook软件,向邮件

Apach实现创建虚拟目录以及用户访问控制(内附源码包)

简介 基于用户的访问控制就是对网页目录进行认证配置,用户输入用户名密码之后才能访问网页 认证方式 httpd服务器支持使用摘要认证(Digest)和基本认证(Basic)两种方式Digest:使用摘要认证需要在编译httpd之前添加"--enable-auth-digest"选项,但并不是所有的浏览器都支持摘要认证;Basic:基本认证是htpd服务的基本功能,不需要预先配置特别的选项(安全性没有摘要认证高,支持所有的浏览器) 认证与授权 基于用户的访问控制包含认证(Authentic

源码手工编译LAMP架构搭建Discuz论坛(内附源码包)

简介 Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台.随着开源潮流的蓬勃发展,开放源代码的LAMP已经与J2EE和.Net商业软件形成三足鼎立之势,并且该软件开发的项目在软件方面的投资成本较低,因此受到整个IT界的关注.从网站的流量上来说,70%以上的访问流量是LAMP来提供的,LAMP是最强大的网站解决

Nginx+tomcat实现反向代理(内附源码包)

需求描述 通常情况下,一个Tomcat站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等问题,不能单独应用于生产环境下,所以我们需要一套更可靠的解决方案来完善Web站点架构.Nginx是一款非常优秀的http服务器软件,它能够支持高达50000个并发连接数的响应,拥有强大的静态资源处理能力,运行稳定,并且内存.CPU等系统资源消耗非常低.目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,来提升整个站点的负载并发能力. 工作原理 反向代理是指以代理服务器来接受I

CetOS7.4手工编译安装mysql-5.7.17(内附源码包)

简介 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle旗下产品.MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的关系数据库管理系统应用软件.MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言.MySQL软件采用了双授权政策,分为社区版和商业版,由于其体积小.速度快.总体拥有成