MooseFS官方文档翻译

官网:https://moosefs.com/

文档请看这里

一、关于MooseFS

MooseFS是一个容错的分布式文件系统,它通过物理服务器来拓展数据,并且对用户提供统一的资源。MooseFS作为一个类似Unix类型的文件系统提供了标准的文件操作:
  • 分层结构(文件树)
  • 提供POSIX文件属性(权限,最后访问和修改时间)
  • 支持特殊文件(块和字符设备,管道和套接字)
  • 符号链接(文件名执行目标文件)和硬链接(不同的文件名代表相同的数据)
  • 通过限制IP或/与密码限制访问文件系统
MooseFS的特征:
  • 高可靠性(每个物理机上回备份相同的数据)
  • 动态扩容
  • 删除的文件可以保留一定时间(可配置。即文件系统级别的trash bin)
  • 文件的连续快照(即使文件正在被写入或访问)

1.1 架构

MooseFS四个基本组件:
  1. Managing servers(master servers)。单机。管理整个文件系统,存储每个文件的元数据(文件的大小、属性、位置,包括非常规文件的信息,例如目录、套接字、管道设备)
  2. Data servers(chunk servers)。多机。存储文件数据,同步数据(即数据的多分拷贝)
  3. Metadata backup server(s)(metalogger server)。多机。存储源数据的changelogs文件,周期性下载主元数据文件。
    1. 在MooseFS中,Metalogger文件的机器可以轻易的升级为master,以防止原来的master故障。
    2. 在MooseFS中,Metalogger可以提供一个额外的安全性。
  4. Client computers可以访问(挂载)文件到MooseFS中。多台机器通过mfsmount进程来链接managing server(为了接收和修改文件的元数据),并且和其他的chunkservers交换真实的文件(也就是文件副本)。
mfsmount基于FUSE机制,因此MooseFS可以兼容任何以FUSE实现的操作系统中(例如Linux, FreeBSD, MacOS X等)。
70344ff126f916d5884c30b5c95c946b30f.jpg
4f80ef7e1d8a005f3ad06373fc4b414ea7e.jpg
元数据存储在managing server的内存中,且同时会保存在磁盘中(周期性更新的二进制文件并且立即更新增加的日志)。主二进制文件和日志会同步到metaloggers中(如果存在)并且分出master servers in Pro version。
每一个文件数据被分割为最大64M的块,每一个块都是data servers上的文件。
高可靠性是通过设置合理的文件副本数量来保证的。

1.2 系统工作原理

所有MooseFS客户端操作文件的方式和在其他文件系统中的操作方式相同。系统的内核会通过mfsmount进程将这些文件操作转换成FUSE模式。mfsmount进程会通过网络与managing server和data servers通信。这些过程对用户来说都是透明的。
以下几种类型的文件元数据操作将会触发mfsmount与managing server的通信:
  • 创建文件
  • 删除文件
  • 读取目录
  • 读取和修改属性
  • 修改文件大小
  • 开始读取或写数据
  • 访问MFSMETA的特殊文件
mfsmount直接连接data server来存储相关的文件块。书写文件时,在完成写入过程后,mfsmount将告知managing server更新文件的大小和最后修改时间。
此外,data servers之间会相互通信来备份相同的数据。

1.3 容错性

管理员可以通过管理控制台来指定文件或者目录的备份数量。将备份数量设置为大于1的数并且data server数量超过一台就可以达到容错的目的。
如果将备份数量设置为1,那么无论有多少台data server,该文件也只会在其中一台data server上有一分数据而已。
 
将备份数量设置为大于2的数是非常重要的,这样可以容忍更多的机器发生故障。
 
通常来说,需要在预计的故障机器数量的基础上至少+1来设置文件备份数量。
 
在备份数量大于2的情况下,如果一台data server发生故障或者网络不通,其上的数据可以在另一台正常的机器上访问。此时这些数据已经低于拷贝值了,因此数据会在其他的data server上继续备份一次以达到预设值。
 
假设一个文件的备份数量值大于集群中的data server,此时的预设值将不会达成。同理,如果预设值与机器数量相同,但是其中一台机器存储已满,预设值也将完成不了。此时应当立即扩展data server机器数量。
 
新的机器可以随时接入到系统中并投入使用。
 
管理工具可以查询文件的状态来确定是否有文件的拷贝数量不足。该工具也可以修改文件的备份值。
 
chunks上的数据块带有版本标识,因此如果一台带有旧数据版本的data server重连以后,将不会导致集群数据混乱。这台data server将会同步现在的数据版本且删除老版本的数据块,剩余的空间将会重新利用来存储新的数据块。
 
故障的客户端将不会影响整个文件系统或者其他的客户端操作。最坏的情况就是这台故障机没来得及发送的数据将会丢失。

1.4 平台性

MooseFS可以运行在任何实现了FUSE的操作系统上:
  • Linux(Linux 2.6.14及以上版本将FUSE集成在了内核中)。
  • FreeBSD
  • MacOS X
  • OpenIndiana Hipster
Master Server, Metalogger和Chunkservers也可以运行在有Cygwin的Windows系统上。不支持FUSE的操作系统将无法使用。
 

二、MooseFS的依赖性

2.1 网络依赖

MooseFS依赖TCP/IP网络。网络越快,性能越佳。强烈建议将所有的机器连在同一个交换机上,或者至少要尽力降低网络上的影响,因为这对性能有大的影响。
 
MooseFS默认需要开通以下端口(可以通过配置文件修改端口):
  • 9419..9421 - Master Server(s)
  • 9422 - Chunkservers
  • 9425 - CGI server

2.2 Master Servers的依赖

作为MooseFS系统中的重要元素,master servers机器应当足够稳定并且集群中所有机器都可以访问到它。使用多电源供电、ECC内存、磁盘序列为RAID1 / RAID 5 / RAID10的机器是明智的选择。操作系统应当遵循POSIX(已证明可用的操作系统:Linux, FreeBSD, MacOS X, OpenSolaris)。

2.2.1 CPU

由于Master Servers是单线程进程,因此推荐使用高频CPU(例如3.7GHz)和少量的核心数(例如4核)。尤其是像MooseFS系统这样大量小文件的文件系统。
此外,在BIOS中关闭CPU电源管理(或者开启高性能模式)将提高性能。
你可以在这里参考合适的CPU——请关注单线程。

2.2.2 RAM大小

Master Server最关注内存大小,因为所有的文件系统结构都缓存在内存中以提高速度。需要大约300-350M的内存大小来存储一百万左右的文件信息(文件,目录,管道,套接字等)。
例如:
Leader Master内存用量:20GB(21017505792B)
文件数量:67552270(6千万+)
21017505792/67552270 = 311.13字节每个文件。

2.2.3 磁盘空间

磁盘的大小依赖于文件数量和文件块的使用、文件的操作量。例如20G的磁盘能偶存数2千5百万的文件和50小时的changelogs。
可以通过如下公式计算最小的容量:
  • RAM - 内存总量
  • BACK_LOGS - 元数据change log文件的数量,默认是50(可以在/etc/mfs/mfsmaster.cfg中修改)
  • BACK_META_KEEP_PREVIOUS - 一起按的元数据保留量(默认是1,可以在/etc/mfs/mfsmaster.cfg中修改)。
公式:
SPACE = RAM * (BACK_META_KEEP_PREVIOUS + 2) + 1 * (BACK_LOGS + 1) [单位GB]
如果使用默认配置,公式就是:RAM * 3 + 51 [GB]
例如:
如果内存大小是128G,那么/var/lib/mfs的磁盘空间需要128 * 3 + 51 = 435GB。
 

2.3 Metalogger(s)的依赖

MooseFS的metalogger简单的收集Master Server的元数据备份,因此配置不用高于Master Server。它需要和Master Server一样的磁盘空间(尤其是/var/lib/mfs)。操作系统也要和Master Server一致。如果你想在Master Server发生故障的时候启动Metalogger,那么内存空间也要和master一致。
 

2.4 Chunkservers的依赖

Chunkserver也要使用遵循POSIX的操作系统。

2.4.1 CPU

Chunkservers是多线程进程,因此需要多核处理器。

2.4.2 RAM大小

Chunkservers使用250M内存来提供大约1百万的文件块。
例如:
Chunkserver内存用量:661MB
Chunkserver存储的文件块:3275062
(661 * 2^20) / 3275062 = 211.63B每个块

2.4.3 磁盘空间

推荐在磁盘中单独的分割一块区域挂载到集群中,可以在/etc/mfs/mfshdd.cfg中配置。
最小的配置应该是千兆字节的存储空间。(只有磁盘大于256MB且Chunkservers报告有超过1GB的可用空间时才可以接收新数据)。
 

2.5 客户端/挂载依赖

mfsmount依赖FUSE进行工作,FUSE在许多操作系统中提供:Linux, FreeBSD, OpenSolaris和MacOS X,需要注意几点:
  • In case of Linux a kernel module with API 7.8 or later is required (it can be checked with dmesg command – after loading kernel module there should be a line fuse init (API version 7.8)). It is available in fuse package 2.6.0 (or later) or in Linux kernel 2.6.20 (or 13 later). Due to some minor bugs, the newer module is recommended (fuse 2.7.2 or Linux 2.6.24, although fuse 2.7.x standalone doesn’t contain getattr/write race condition fix).
  • In case of FreeBSD we recommed using fuse-freebsd1 , which is a successor to fuse4bsd.
  • For MacOSX we recommend using OSXFUSE2 , which is a successor to MacFUSE and has been tested on MacOSX 10.6, 10.7, 10.8, 10.9 and 10.11.
 

三、MooseFS 3.0安装

这只是一个快速开始手册,将安装两台master servers和三台chunk servers。详细安装手册请参考《MooseFS Step by Step Tutorial》。
假设你的机器IP地址如下:
  • Master servers: 192.168.1.1, 192.168.1.2
  • Chunk servers: 192.168.1.101, 192.168.1.102, 192.168.1.103
  • 客户端: 192.168.2.x
本手册假定您使用的是MooseFS 3.0专业版,如果不是,请移除包名下的'-pro'。
本手册假定您使用的是Ubuntu/Debian系统。如果您使用的其他系统,请使用对应的包管理器。
注意教程中所有的命令都会使用root账号操作。

3.1 配置DNS服务

在安装MooseFS前,你需要开启DNS。这是问了让多台master servers一起工作,因为DNS可以解决一个主机名对应多个IP的问题。
master server机器的所有IP都要配置在DNS中,并且以'mfsmaster'来解析。例如:
mfsmaster IN A 192.168.1.1 ; address of first master server
mfsmaster IN A 192.168.1.2 ; address of second master server
DNS服务的更多相关配置请参考
《MooseFS Step by Step Tutorial》。

3.2 添加依赖库

如果不方便联网,可以在这里下载:http://ppa.moosefs.com/moosefs-3
 
安装MooseFS之前你需要在机器上添加官方支持的依赖库。这里只介绍CentOS安装的方式。
curl "http://ppa.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo
yum update

3.3 Master Server(s)安装

yum install moosefs-master
安装以后,示例配置文件会在/etc/mfs目录中创建,并以.sample结尾。可以更具此copy一份并删除sample后缀。
mfsexports.cfg文件指定哪些客户端可以挂载文件系统,并制定其权限。例如只有机器地址为192.168.2.x的机器可以挂载MooseFS /资源下的读写权限,可以在配置文件第一行做如下修改:
192.168.2.0/24 / rw,alldirs,maproot=0
 
启动master
systemctl start moosefs-master.service
启动完成以后,可以通过systemctl status moosefs-master.service进行查看。
开机自启
systemctl enable moosefs-master.service

3.4 Metaloggers安装

yum install moosefs-metalogger
启动:
systemctl start moosefs-metalogger.service
开机自启:
将/etc/default/moosefs-metalogger中的MFSMETALOGGER=ture即可。

3.5 MooseFS CGI监控, CGI服务和命令行接口安装

MooseFS CGI监控服务可以安装在任何一台机器上。最佳实践是安装在所有的master机器上。
MooseFS命令行接口(CLI)可以看到文件系统的多种信息。
安装方式:
yum install moosefs-cgi
yum install moosefs-cgiserv
yum install moosefs-cli
启动:
systemctl start moosefs-cgiserv.service
启动完成以后可以访问http://xxx.xxx.xxx.xxx:9245来查看。

3.6 Chunk servers安装

yum install moosefs-chunkserver
在/etc/mfs目录中会生成mfshdd.cfg文件,可以配置挂载的磁盘目录。推荐该磁盘只会给moosefs系统使用。
在启动服务以前,确保mfs用户对挂载的目录拥有权限。
systemctl start moose-chunkserver.service
开机自启
systemctl enable moosefs-chunkserver.service

3.7 客户端安装

MooseFS客户端需要使用FUSE依赖库。
yum install moosefs-client
在客户机创建目录并挂在
mkdir -p /mnt/mfs (目录随意)
mfsmount /mnt/mfs -H Master机器地址
此时你可以使用df -h | grep mfs方式查看挂载的目录信息。
 
如果想在启动期间使文件系统自动挂载,可以配置/etc/fstab
mfsmount /mnt/mfs fuse defaults,mfsmaster=master机器地址,mfsport=9421 0 0
如果客户端就想挂载在MooseFS的Master上,你需要这样修改
mfsmount /mnt/mfs fuse defaults,mfsdelayedinit,mfsmaster=master机器地址,mfsport=9421 0 0

3.8 关闭MooseFS

如果想安全关闭MooseFS集群,需要通过以下步骤:

3.8.1 取消客户端挂载

umount /mnt/mfs

3.8.2 停止Chunk Servers

systemctl stop moosefs-chunkserver.service

3.8.3 停止Master server

systemctl stop moosefs-master.service

3.8.4 停止Metalogger

 

systemctl stop moosefs-metalogger.service

转载于:https://my.oschina.net/noryar/blog/3045311

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值