分布式原理

  • 通过计算机网络与节点相连,就是把一些分散的(分布在局域网内各个计算机上)共享文件夹,集合到一个文件夹内(虚拟共享文件夹)。
  • 分布式文件系统的好处是集中访问、简化操作、数据容灾以及提高文件的存取性能。

MFS原理

  • 元数据服务器(master):在整个体系中负责管理文件系统,维护元数据。
  • 元数据日志服务器(metalogger):备份master服务器的变化日志文件,文件类型为changelog_ml. * . mfs ,当master服务器数据丢失或者损坏时,可以从日志服务器中取得文件 ,进行恢复。
  • 数据存储服务器(chunkserver):真正的存储数据的服务器,存储文件是,会把文件分块保存,并在数据服务器之间进行复制,数据服务器越多,能使用的“容量”越大,可靠性就越高,性能就越好
  • 客户端(client):可以像挂载NFS一样挂载MFS文件系统,其操作是相同的。

MFS读取数据的处理过程

  • 客户端向元数据服务器发出读请求
  • 元数据服务器把所需数据存放的位置(Chunk Server的IP地址和Chunk编号)告知客户端
  • 客户端向已知的Chunk Server请求发送数据
  • Chunk Server向客户端发送数据

MFS写入数据的处理过程

  • 客户端向元数据服务器发送写入请求。
  • 元数据服务器与Chunk Server进行交互(只有当所需的分块Chunk存在的时候才进行交互),但元数据服务器只在 某些服务器创建新的分块chunks,创建成功后由Chunk Servers告知元数据服务器操作成功。
  • 元数据服务器告知客户端,可以在哪个Chunk Server的那些chunks写入数据。
  • 客户端向指定的Chunk Server写入数据。
  • 该Chunk Server与其他Chunk Server进行数据同步,同步成功后Chunk Server告知客户端数据写入成功。
  • 客户端告知元数据服务器本次写入完毕。

MFS优势

  • 高可用性:没有单点故障也称为无SPOF配置。文件系统的元数据在物理冗余服务器上保存为两个或多个副本。用户数据冗余地分布在系统中的存储服务器上。
    低成本的数据安全:MooseFS使用户能够节省大量硬盘空间,保持相同的数据冗余级别。在大多数常见情况下,将节省至少55%的硬盘空间.
  • 可扩展性:存储可以扩展到16字节(~16000千兆字节),这使我们可以存储超过20亿个文件
    高性能:旨在支持高性能I/O操作。用户数据可以在许多存储节点上同时读取/写入,从而避免单个中央服务器或单个网络连接瓶颈。

实验环境

主机 操作系统 IP地址
Master Server CentOS-7-x86_64 192.168.144.110
MetalLogger Server CentOS-7-x86_64 192.168.144.112
Chunk Server1 CentOS-7-x86_64 192.168.144.111
Chunk Server2 CentOS-7-x86_64 192.168.144.113
Client CentOS-7-x86_64 192.168.144.114

实验部署

安装方式

  • 根据官方网站提供的安装方式,我们可以按照官方提供的方式安装,简易也节约时间。

MFS分布式文件系统服务搭建

1、搭建Master Server

  • 按上图方式安装完成Master Server后,直接启动即可。

mfsmaster start

  • 若是需要停止

mfsmaster -s

2、搭建MetaLogger Server

  • 按官方提供安装方式安装。
  • 安装完成后,需要此台服务器监控master。

vim /etc/mfs/mfsmetalogger.cfg

MASTER_HOST = 192.168.144.110       //添加指向master的IP地址
  • 启动服务即可。

mfsmetalogger start

  • 若想停止服务。

mfsmetalogger -s

3、搭建chunk server

  • 本实验有两台chunkserver,搭建步骤完全相同
  • 安装方式如官方方式

vim /etc/mfs/mfschunkserver.cfg

MASTER_HOST = 192.168.144.110   //提供存储给master

vim /etc/mfs/mfshdd.cfg

/data     //添加一行,在这里/data是一个给MFSmaster的分区,实际生产环境中最好使用独立的分区或磁盘挂载到此目录

mkdir /data/
chown -R mfs.mfs /data/ #更改属主属组

  • 完成如上配置后,chunkserver算是配置完成,启动即可。

mfschunkserver start

  • 若想停止服务。

mfschunkserver -s

4、客户端配置

  • 安装方式如官方方式。

  • 客户端安装完成后,创建挂载master提供空间的目录。

mkdir /abc
mfsmount -H 192.168.144.110 /abc

  • 挂载完成后,查看挂载状态,如下图所示

MFS分布式文件系统服务搭建

5、客户端MFS常用操作

  • mfsgetgoal命令常用来查询文件被复制的份数,-r命令可以对整个目录进行递归,goal是指文件被复制的份数。

    mfsgetgoal -r /abc/

/abc/:
 files with goal                2 :          1
 directories with goal          2 :          1
  • mfssetgoal命令用来设置文件被复制的份数,生产环境chunkserver节点数量至少大于2,文件副本数量小于等于chunkserver服务器的数量。

mfssetgoal -r 2 /abc/

/abc/:
 inodes with goal changed:                       0
 inodes with goal not changed:                   2
 inodes with permission denied:                  0

mfsgetgoal -r /abc/

/abc/:
 files with goal                2 :          1
 directories with goal          2 :          1
  • 创建文件测试如下:

cd /abc
touch test
mfsgetgoal /abc/

/abc/: 2

6、MFS监控

  • MFscgiserv使用Python编写的一个web服务器,监听端口为9425,可以在master上通过命令启动。

mfscgiserv

  • 在客户端上通过浏览器访问http://192.168.144.110:9425

MFS分布式文件系统服务搭建