MFS系统由4个部分构成:master、metalogger、chunkserver、client。
 
1、Master —— mfs的大脑,记录着管理信息,比如:文件大小,存储的位置,份数等,和innodb中共享空间(ibdata)中存储的信息类似,这些信息被记录到metadata.mfs中,当该文件被载入内存后,该文件会重命名为metadata.mfs.back,当chunkserver上有更新时,master会定期将获得的新的信息回写到metadata.mfs.back中,保证元数据的可靠。
 
  硬件推荐:大内存,因为内存中需要将metadata.mfs加载进来,这个文件的大小取决于你chunkserver上存储的数据量,内存的大小会成为之后的问题,要ECC的可以进行错误校验,当内存中数据量达到一定程度,如果没有个容错的机制,会很可怕;冗余电池,和磁盘配置RAID1/RAID5/RAID10,都是为了保证高可靠。
 
2、Metalogger —— mfs的备份,好比mysql中的m-s结构,metalogger会定期重master上将的metadata、changelog、session类型的文件下载同步到本地目录下,并加后缀”_ml”将其重命名。
 
  硬件推荐:与master机器配置一致,metalogger本身就是master的一个备机,当master宕机后,可以直接将metalogger提升为master。
 
3、Chunkserver —— 数据存储地,文件以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份,这样如果有一台chukserver坏掉后,至少还有一份copy,当这台又被加进来后,会将失去的那份copy补回来,始终保持原有的copy数,而如果goal设为1copy,那么当存储该copy的chunkserver坏掉,之后又重新加入回来,copy数将始终是0,不会恢复到之前的1个copy。
 
Chunkserver上的剩余存储空间要大于1GB(Reference Guide有提到),新的数据才会被允许写入,否则,你会看到No space left on device的提示,实际中,测试发现当磁盘使用率达到95%左右的时候,就已经不能写入了,当时可用空间为1.9GB。
 
  硬件推荐:普通的机器就行,就是要来存几份数据,只要磁盘够大就好。
 
4、Client —— 客户端通过内核加载的FUSE模块,再通过和master的沟通,将chunkserver共享的分区挂载到本地,然后进行读写操作。由于FUSE模块是外加的模块,当系统重启后,需要执行modprobe fuse,将其加载到内核中。

MooseFS分布式文件系统安装步骤

1、准备工作
服务器操作系统与IP:

1
2
3
4
5
6
操作系统都为CentOS 6.5 x64
 
主控服务器 Master server:     192.168.0.160
主控备份服务器 Metalogger server: 192.168.0.161
存储块服务器 Chunk servers:    192.168.0.162 and 192.168.0.163--本次实施部署2台存储服务器
客户端主机 (clients):       192.168.0.X

软件包下载:
MooseFS的最新稳定版:moosefs-ce-2.0.53-1.tar.gz
客户端挂载FUSE软件最新版:fuse-2.9.3.tar.gz

注:moosefs-ce-2.0.53-1.tar.gz下载后上传到所有服务器(主控、主备份、存储、客户端)上
的/usr/src目录下;fuse-2.9.3.tar.gz上传到所有客户端主机的/usr/src目录下

hosts指向:
在所有服务器上的/etc/hosts中添加下面指向,确保都能连接到主控服务器。

1
192.168.0.160     mfsmaster

2、Master server 安装
按以下命令步骤进行编译安装:

1
2
3
4
5
6
7
8
# groupadd mfs
# useradd -g mfs mfs
# cd /usr/src
# tar -zxvf moosefs-ce-2.0.53-1.tar.gz
# cd moosefs-ce-2.0.53
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
# make
# make install

成功安装 master 以后,系统会在/etc/mfs目录自动生成样例配置文件,这些样例文件是以.dist后缀命名。这里我们将借用这些样例文件作为 MooseFS 主控服务器的目标配置文件:

1
2
3
4
# cd /etc/mfs/
# cp mfsmaster.cfg.dist mfsmaster.cfg
# cp mfsmetalogger.cfg.dist mfsmetalogger.cfg
# cp mfsexports.cfg.dist mfsexports.cfg

二进制文件 metadata 和文本文件 changelog 将被保存在目录/var/lib/mfs,这是因为我们安装过程的 configure 步骤使用了选项 --localstatedir=/var/lib 。首次安装 master 时,会自动生成一个名为 metadata.mfs.empty 的元数据文件 metadata,该文件是空的。MooseFS master 运必须有文件 metadata.mfs,这个文件是从 metadata.mfs.empty 改名而来:

1
2
# cd /var/lib/mfs
# cp metadata.mfs.empty metadata.mfs

现在启动master server服务

1
# /usr/sbin/mfsmaster start

为了监控 MooseFS 当前运行状态,我们可以运行 CGI 监控服务,这样就可以用浏览器查看整个
MooseFS 的运行情况:

1
# /usr/sbin/mfscgiserv

现在可以访问http://192.168.0.160:9425/看到一些信息(暂时还没有关于chunk servers的数据)。
 
设置mfsmaster、mfscgiserv进程在操作系统启动时自动运行:
编译/etc/rc.local,在最后面添加下面启动命令

1
2
/usr/sbin/mfsmaster start
/usr/sbin/mfscgiserv

3、Metalogger server 安装
因为Metalogger server主要作用是主控服务器的备份,所以Metalogger server 的安装和master server的安装是一样的,我们用以下命令:

1
2
3
4
5
6
7
8
# groupadd mfs
# useradd -g mfs mfs
# cd /usr/src
# tar -zxvf moosefs-ce-2.0.53-1.tar.gz
# cd moosefs-ce-2.0.53
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
# make
# make install

启动Metalogger server备用服务器进程:

1
# /usr/sbin/mfsmetalogger start

设置mfsmetalogger进程在操作系统启动时自动运行:
编译/etc/rc.local,在最后面添加下面启动命令

1
/usr/sbin/mfsmetalogger start

4、Chunk servers 安装
在chunk server的机器上运行下面命令进行安装:

1
2
3
4
5
6
7
8
# groupadd mfs
# useradd -g mfs mfs
# cd /usr/src
# tar -zxvf moosefs-ce-2.0.53-1.tar.gz
# cd moosefs-ce-2.0.53
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster
# make
# make install

重命名 chunk server 服务所需的配置文件:

1
2
3
#cd /etc/mfs
#cp mfschunkserver.cfg.dist mfschunkserver.cfg
#cp mfshdd.cfg.dist mfshdd.cfg

在配置文件 mfshdd.cfg 中,我们给出了用于客户端挂接 MooseFS 分布式文件系统根分区所使用的共享空间位置。建议在 chunk server 上划分单独的空间给 MooseFS 使用,这样做的好处是便于管理剩余空间。此处我们假定要使用一个共享点/mnt/mfschunk(如果没有,请先创建共享点)。
编辑/etc/mfs/mfshdd.cfg,在最后面添加下面的文本行:

1
/mnt/mfschunk

在启动 chunk server 前,需确保用户 mfs 有权限读写将要被挂接的分区(因为 chunk server 运
行时要在此创建一个.lock 的文件):

1
# chown -R mfs:mfs /mnt/mfschunk

启动 chunk server服务:

1
# /usr/sbin/mfschunkserver start

设置chunk server进程在操作系统启动时自动运行:
编译/etc/rc.local,在最后面添加下面启动命令

1
/usr/sbin/mfschunkserver start

注:在MooseFS系统中,我们必须在所有chunk server存储服务器上执行上面同样的操作。

现在再通过浏览器访问 http://192.168.0.160:9425/ 应该可以看见这个 MooseFS 系统的全部信息(包括主控 master和存储服务 chunkserver)。

5、客户端的安装
为了挂载基于MooseFS的文件系统,需要所有客户端安装FUSE包:

1
2
3
4
5
6
# cd /usr/src
# tar -zxvf fuse-2.9.3.tar.gz
# cd fuse-2.9.3
# ./configure
# make
# make install

执行下面命令,不然编译mfsmount会报Fuse不存在的错:

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

编译安装客户端软件mfsmount:

1
2
3
4
5
6
# cd /usr/src
# tar -zxvf moosefs-ce-2.0.53-1.tar.gz
# cd moosefs-ce-2.0.53
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var/lib --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver
# make
# make install

假定客户端的挂接点是 /mnt/mfs ,我们将以下面的指令来使用 MooseFS 分布式共享文件系统:
创建挂接点:

1
# mkdir -p /mnt/mfs

执行挂载命令操作:

1
2
3
# /usr/bin/mfsmount /mnt/mfs -H mfsmaster

# /usr/bin/mfsmount /mnt/mfs -H 192.168.0.160

挂载成功后,执行命令 df –h 查看分区情况:

1
2
3
4
5
6
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_mfsclient1-lv_root 6.7G 2.2G 4.2G 35% /
tmpfs 245M 0 245M 0% /dev/shm
/dev/xvda1 485M 34M 426M 8% /boot
mfsmaster:9421 169G 9.1G 160G 6% /mnt/mfs

MooseFS分布式文件系统基础用法

1、设置挂载目录/文件副本数
我们这次实施有两台存储服务器,就设置副本数为2。
 
使用命令 mfssetgoal –r 设定目录里文件的副本数:

1
2
3
4
5
# mfssetgoal -r 2 /mnt/mfs
/mnt/mfs/
inodes with goal changed: 5
inodes with goal not changed: 0
inodes with permission denied: 0

拷贝一个文件到/mnt/mfs目录:

1
# cp /usr/src/moosefs-ce-2.0.53-1.tar.gz /mnt/mfs

用命令 mfschunkfile 来检查指定文件以多少副本数来存储。
 
在目录 /mnt/mfs 中,文件 moosefs-ce-2.0.53-1.tar.gz 是以两个副本保存的(后面的1代表1个块文件):

1
2
3
# mfscheckfile /mnt/mfs/moosefs-ce-2.0.53-1.tar.gz
/mnt/mfs/moosefs-ce-2.0.53-1.tar.gz:
chunks with 2 copies: 1

注:当所有的组件被安装到同一个物理主机的时候,即便设定了 goal=2 来到达保存两个副本的目的,但你可能看到的只是一个副本而已—这是合理的,尽管有两个磁盘,但它只是一个 chunk server!

2、停止 MooseFS
为了安全停止 MooseFS 集群,建议执行如下的步骤:
 
 在所有客户端用 umount 命令先卸载挂载文件系统(本例将是: umount /mnt/mfs)
 停止所有 chunk server 进程: /usr/sbin/mfschunkserver stop
 停止 metalogger 进程: /usr/sbin/mfsmetalogger stop
 停止主控 master server 进程: /usr/sbin/mfsmaster stop

MooseFS分布式文件系统介绍及安装教程详解的更多相关文章

  1. mysql-8.0.16-winx64.zip安装教程详解

    摘自:https://zhuanlan.zhihu.com/p/48531203 mysql-8.0.16-winx64.zip安装教程详解下载地址:https://dev.mysql.com/get ...

  2. Linux MFS分布式文件系统介绍和安装

    MFS分布式文件系统 mooseFS(moose 驼鹿)是一款网络分布式文件系统.它把数据分散在多台服务器上,但对于用户来讲,看到的只是一个源.MFS也像其他类unix文件系统一样,包含了层级结构(目 ...

  3. delphi 组件安装教程详解

    学习安装组件的最好方法,就是自己编写一个组件并安装一遍,然后就真正明白其中的原理了.   本例,编写了两个BPL, dclSimpleEdit.bpl 与 SimpleLabel.bpl ,其中,dc ...

  4. CorelDRAW(cdr) 2018安装教程详解

    令人期待的coreldraw2018最新版已经发布了,相信各位设计从业者已经迫不及待想要知道这次版本会带来什么新的东西,本次小编带来的coreldraw2018破解版,附有注册补丁,激活之后可以永久免 ...

  5. PHP7+Nginx的配置与安装教程详解

    下面脚本之家小编把PHP7+Nginx的配置与安装教程分享给大家,供大家参考,本文写的不好还请见谅. 系统环境:centos6.5 x64 软件版本:nginx-1.10.0 php-7.0.6 安装 ...

  6. Oracle数据库及图形化界面安装教程详解

    百度云盘oracle数据库及图形化界面安装包 链接: https://pan.baidu.com/s/1DHfui-D2n1R6_ND3wDziQw 密码: f934 首先在电脑D盘(或者其他不是C盘 ...

  7. Linux下Mysql安装教程详解

    Linux下软件安装一般有三种方式:RPM包方式(通过Redhat 第三方包管理系统).二进制包和源码包.本篇主要介绍二进制包安装mysql数据库的方式. 如何获取二进制源码包 当然是到mysql官网 ...

  8. MooseFS分布式文件系统介绍

    一.简介 MooseFS是一个具备冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理服务器或单独磁盘或分区上,确保一份数据有多个备份副本.对于访问的客户端或者用户来说,整个分布式网络文件系统 ...

  9. VMware虚拟机安装教程详解图文

            学习Linux系统最好的方式就是在自己的虚拟机上安装Linux:接下来就给大家简单介绍一下VMware虚拟机的安装以及Linux的安装:VMware虚拟机只是为了更好的学习Linux: ...

随机推荐

  1. bzoj 1880 最短路

    我们首先知道,答案肯定是最短路图中的某段公共链,那么设(x,y)为x到y的最短路,那么答案为((s1,t1)+(s2,t2)-min((s1,s2)+(t1,t2),(s1,t2),(s2,t1))) ...

  2. bzoj 2120 线段树套平衡树

    先吐下槽,改了快一个小时,最后发现是SBT的delete写错了,顿时就有想死的心..... 首先对于这道题,我们应该先做一下他的小问题,bzoj1878,虽然和这道题几乎一点关系没有, 但是能给我们一 ...

  3. bzoj 1191 匈牙利算法

    只需要做一遍匈牙利,只要有一个没法匹配上就break就行了 /************************************************************** Proble ...

  4. Codeforces 950E Data Center Maintenance 强连通分量

    题目链接 题意 有\(n\)个信息中心,每个信息中心都有自己的维护时间\((0\leq t\lt h)\),在这个时刻里面的信息不能被获得. 每个用户的数据都有两份备份,放在两个相异的信息中心(维护时 ...

  5. Javacore分析(转载)

    本文转自(http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1406_tuzy_javacore/1406_tuz ...

  6. Oracle rman 全备份的一个小例子

    run{  allocate channel d1 type disk;  backup database format='/u01/backup/%T_%d_%s.bak';  sql 'alter ...

  7. 【 Linux 】I/O工作模型及Web服务器原理

    一.进程.线程     进程是具有一定独立功能的,在计算机中已经运行的程序的实体.在早期系统中(如linux 2.4以前),进程是基本运作单位,在支持线程的系统中(如windows,linux2.6) ...

  8. Java 5大内存区域和对象的创建过程

    1.Java运行时数据区 方法区,堆线程共享.虚拟机栈,本地方法栈和程序计数器线程私有. 2.程序计数器(PC计数器) 占用较小的一块内存空间,当执行Java方法时记录正在执行的虚拟机字节码指令地址, ...

  9. hdu 5174(计数)

    Ferries Wheel Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tot ...

  10. 腾讯云 python3+Django

    !!!注意:如果已经包含了python3.5,跳过安装3.6版本. !!!本人安装完3.6后,pip3安装的包始终没法安装到3.6目录下,只能安装到3.5目录下 1,安装python3.6(用编译的方 ...