MFS分布式文件系统

栏目: 服务器 · 发布时间: 7年前

内容简介:MooseFS遵循与Fossil(文件系统),Google File System,Lustre或Ceph类似的设计原则。文件系统包括三个组件:为实现高可靠性和高性能,MooseFS提供以下功能:c.启动Master Server

一、MooseFS

  • MooseFS是一个具有容错性的网络分布式文件系统。它把数据分散存放在多个物理服务器上,而呈现给用户的则是一个统一的资源。
  • Moose文件系统(MooseFS)是由Core Technology开发的开源,POSIX兼容的分布式文件系统。MooseFS旨在为数据中心提供容错,高可用,高性能,可扩展的通用网络分布式文件系统。最初是专有软件,它于2008年5月5日作为开源向公众发布。
  • 目前有两个版本的MooseFS:
    MooseFS - 根据GPLv2许可发布,
    MooseFS专业版(MooseFS Pro) - 以二进制包形式的专有许可证发布。
  • 官网地址: http://www.moosefs.com/

二、组成

MooseFS遵循与Fossil(文件系统),Google File System,Lustre或Ceph类似的设计原则。文件系统包括三个组件:

  • 元数据服务器(Master) - 维护和管理文件的位置(布局),文件访问和命名空间层次结构。当前版本的MooseFS支持多个元数据服务器和自动故障转移。客户端只与MDS通信以检索/更新文件的布局和属性; 数据本身直接在客户端和块服务器之间传输。元数据服务器是用户空间守护程序 ; 元数据保存在内存中,并且懒惰地存储在本地磁盘上。
  • 元数据日志服务器(Metalogger)- 纪录数据的改动情况,定期从MDS中提取元数据以存储它以进行备份。从版本1.6.5开始,这是一个可选功能。
  • 块服务器(Chunk Server) - 存储数据并可选地在它们之间进行复制。虽然可扩展性限制尚未发布,但可能有很多。迄今为止报告的最大集群包括160台服务器。[7] Chunk服务器也是一个用户空间守护程序,它依赖于底层本地文件系统来管理实际存储。
  • 客户端 - 与Master和ChunkServer交谈。MooseFS客户端通过FUSE将文件系统挂载到用户空间。

三、原理

MFS读过程

  • 客户端向Master发送读请求
  • Master去缓存的数据库(非MySQL)中搜索客户端所需数据的位置,并告知客户端(Chunk Server IP、Chunk编号)
  • 客户端去指定Chunk Server的对应Chunk编号读取数据
  • 客户端通知Master读取完毕

MFS写过程

  • 客户端向Master发送写请求
  • Master通知Chunk Server(谁空闲,如空闲新建Chunk编号),找到后将知道的Chunk Server IP和编号告知客户端
  • 客户端向指定IP和编号存储数据
  • 客户端告知Master写入完毕
  • Master通知Metalogger有新数据写入(Matelogger纪录新增加文件位置和对应Chunk Server),日志记录完毕后,连接关闭

四、功能

为实现高可靠性和高性能,MooseFS提供以下功能:

  • 容错 - MooseFS使用复制,可以跨块服务器复制数据,每个文件/目录设置复制比率(N)。如果(N-1)个副本失败,则数据仍然可用。目前,MooseFS没有提供任何其他容错技术。因此,对于非常大的文件的容错需要大量的空间--N *文件大小而不是文件大小+(N * stripeize),如RAID 4,RAID 5或RAID 6的情况。MooseFS版本4.x PRO将具有RAID6。
  • 条带化 - 大文件分为块(最多64 兆字节),可以存储在不同的块服务器上,以实现更高的聚合带宽。
  • 负载平衡 - MooseFS尝试平等地使用存储资源,当前算法似乎只考虑消耗的空间。
  • 安全性 - 除了经典的POSIX文件权限之外,自1.6版本发布以来,MooseFS提供了一个简单的,类似NFS的身份验证 / 授权。
  • 相干快照 - 快速,低开销的快照。
  • 透明的“垃圾桶” - 删除的文件将保留一段可配置的时间。
  • 数据分层/存储类 - 可以“标记”服务器,创建称为“存储类”的标签定义,并决定数据存储在哪些类型的服务器上[8]
  • “项目”配额支持
  • POSIX锁,flock锁支持

四、数据存储方式

  • 文件以chunk大小存储,每chunk最大为64M。小于64M的,该chunk的大小即为该文件大小,超过64M的文件将被均分,每一份(chunk)的大小以不超过64M为原则;文件可以有多份copy,即除原始文件以外,该文件还存储的份数。当goal为1时,表示只有一份copy,这份copy会被随机存到一台chunkserver上。当goal的数大于1时,每一份copy会被分别保存到其它chunkserver上。goal的大小不要超过chunkserver的数量,否则多出的copy,不会有chunkserver去存,goal设置再多实际上也就没有意义的。copy的份数,一般设为大于1份,这样如果有一台chunkserver坏掉后,至少还有一份copy,当这台又被加进来后,会将失去的那份copy补回来,始终保持原有的copy数。而如果goal设为1,那么当存储该copy的chunkserver坏掉,之后又重新加入回来,copy数将始终是0,不会恢复到之前的1个copy
  • chunkserver上的剩余存储空间要大于1GB,新的数据才会被允许写入,否则,你会看到No space left的提示
  • 多个chunker并不影响写的速度,但是能加快读的速度,在原来的基础上增加一个chunker时,数据会自动同步到新增的chunker上以达到数据的平衡和均衡
  • MFS分布式文件系统

五、部署MFS

环境准备

Role IP OS RPM
Master 192.168.0.21 CentOS6.7_64bit mfs-1.6.27-5.tar.gz
MetaLogger 192.168.0.22 CentOS6.7_64bit mfs-1.6.27-5.tar.gz
Chunk Server 1 192.168.0.23 CentOS6.7_64bit mfs-1.6.27-5.tar.gz
Chunk Server 2 192.168.0.24 CentOS6.7_64bit mfs-1.6.27-5.tar.gz
Client 192.168.0.25 CentOS6.7_64bit mfs-1.6.27-5.tar.gz fuse-2.9.2.tar.gz

搭建Master Server

a.安装环境包并创建用户

vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.0.21
NETMASK=255.255.255.0
yum -y install zlib-devel    //安装依赖环境
useradd -s /sbin/nologin mfs    //创建mfs运行用户
tar -zxvf mfs-1.6.27-5.tar.gz -C /usr/src/ && cd /usr/src/mfs-1.6.27    //解包
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount    //配置选项
make && make install    //编译并安装
cd /usr/local/mfs/
ll                         //看下安装完成生成的目录
drwxr-xr-x 2 root root 4096 Dec  3 11:24 bin         //客户端工具
drwxr-xr-x 3 root root 4096 Dec  3 11:24 etc         //服务器的配置文件都放在该目录中 
drwxr-xr-x 2 root root 4096 Dec  3 11:24 sbin       //服务端启动程序。如:元数据服务器端程序 mfsmaster、数据存储服务器端服务程序mfschunkserver 
drwxr-xr-x 4 root root 4096 Dec  3 11:24 share     //文档 
drwxr-xr-x 3 root root 4096 Dec  3 11:24 var         //元数据目录(可在配置文件中自定义到其他目录)

b.复制文件

cd /usr/local/mfs/etc/mfs/
cp mfsmaster.cfg.dist mfsmaster.cfg    //Master配置文件
cp mfstopology.cfg.dist mfstopology.cfg    //输出目录配置文件
cp mfsexports.cfg.dist mfsexports.cfg    //元数据日志
cp /usr/local/mfs/var/mfs/metadata.mfs.empty /usr/local/mfs/var/mfs/metadata.mfs
//首次安装 master 时,会自动生成一个名为 metadata.mfs.empty 的元数据文件 metadata,该文件是空的。MooseFS master 运必须有文件 metadata.mfs

c.启动Master Server

master 会打开 9420 端口等待 chunkserver 数据存储服务器连接

/usr/local/mfs/sbin/mfsmaster start    //启动master服务
ps -ef | grep mfs
ll /usr/local/mfs/var/mfs/         //查看生成的日志文件
    -rw-r----- 1 mfs mfs     95 Dec 24 14:30 metadata.mfs
    -rw-r----- 1 mfs mfs     95 Dec 24 14:28 metadata.mfs.back.1
    -rw-r--r-- 1 mfs mfs      8 Dec 24 14:13 metadata.mfs.empty
    -rw-r----- 1 mfs mfs     10 Dec 24 14:28 sessions.mfs
    -rw-r----- 1 mfs mfs 762516 Dec 24 14:30 stats.mfs
/usr/local/mfs/sbin/mfsmaster stop     //服务的关闭方法
/usr/local/mfs/sbin/mfscgiserv start    //启动web统计
IE --> 192.168.0.21:9425    //访问web统计界面

搭建MetaLogger Server

a.安装环境包并创建用户

vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.0.22
NETMASK=255.255.255.0
yum -y install zlib-devel
useradd -s /sbin/nologin mfs
tar -zxvf mfs-1.6.27-5.tar.gz -C /usr/src/ && cd /usr/src/mfs-1.6.27
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
make && make install

b.复制文件

cd /usr/local/mfs/etc/mfs/
cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
vim mfsmetalogger.cfg
MASTER_HOST = 192.168.0.21
//MASTER_HOST,这个文件中需要修改的是 MASTER_HOST 变量,这个变量的值是 MASTER SERVER 的 IP 地址

c.启动Metalogger Server

/usr/local/mfs/sbin/mfsmetalogger start
ps -ef | grep mfs

搭建Chunk Server 1

a.安装环境包并创建用户

vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.0.23
NETMASK=255.255.255.0
yum -y install zlib-devel
useradd -s /sbin/nologin mfs
tar -zxvf mfs-1.6.27-5.tar.gz -C /usr/src/ && cd /usr/src/mfs-1.6.27
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount
make && make install

b.复制文件

cd /usr/local/mfs/etc/mfs/
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg
vim mfschunkserver.cfg
MASTER_HOST = 192.168.0.21
vim mfshdd.cfg
/data
//数据存放的目录,一般为一块磁盘的挂载目录
mkdir /data
chown -R mfs:mfs /data

c.启动Chunk服务

/usr/local/mfs/sbin/mfschunkserver start
ps -ef | grep mfs

搭建Chunk Server2

a.安装环境包并创建用户

vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.0.24
NETMASK=255.255.255.0
yum -y install zlib-devel
useradd -s /sbin/nologin mfs
tar -zxvf mfs-1.6.27-5.tar.gz -C /usr/src/ && cd /usr/src/mfs-1.6.27
./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount
make && make install

b.复制文件

cd /usr/local/mfs/etc/mfs/
cp mfschunkserver.cfg.dist mfschunkserver.cfg
cp mfshdd.cfg.dist mfshdd.cfg
vim mfschunkserver.cfg
MASTER_HOST = 192.168.0.21
vim mfshdd.cfg
/data
mkdir /data && chown mfs:mfs /data

c.启动Chunk服务

/usr/local/mfs/sbin/mfschunkserver start
ps -ef | grep mfs

client挂载MFS文件系统

a.安装fuse

vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.0.25
NETMASK=255.255.255.0
tar -zxvf fuse-2.9.2.tar.gz -C /usr/src/ && cd /usr/src/fuse-2.9.2
./configure && make && make install
vim /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
source /etc/profile

b.安装MFS客户端

useradd -s /sbin/nologin mfs
tar -zxvf ~/mfs-1.6.27-5.tar.gz -C /usr/src/ && cd /usr/src/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

c.挂载MFS文件系统

modprobe fuse      //加载fuse模块到内核
vim /etc/rc.local    //开机自动加载
modprobe fuse
/usr/local/mfs/bin/mfsmount /media -H 192.168.0.21    //挂载
[root@mfs_client ~]# /usr/local/mfs/bin/mfssetgoal -r 1 -H /media/
//更改随机copy的次数
[root@mfs_client ~]# /usr/local/mfs/bin/mfsgetgoal -H /media/
//查看当前copy的次数

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Head First JavaScript Programming

Head First JavaScript Programming

Eric T. Freeman、Elisabeth Robson / O'Reilly Media / 2014-4-10 / USD 49.99

This brain-friendly guide teaches you everything from JavaScript language fundamentals to advanced topics, including objects, functions, and the browser’s document object model. You won’t just be read......一起来看看 《Head First JavaScript Programming》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

在线进制转换器
在线进制转换器

各进制数互转换器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具