Skip to main content

分布式文件系统部署

目标#

  • 部署一个 API 友好的分布式文件系统

    API 友好是指可以像操作普通的文件系统中的文件一样操作分布式文件系统中的文件,如创建、删除、建立链接、设置访问权限等。

  • 实现文件系统的冗余备份
  • 实现文件系统的高容错性
  • 实现文件系统的可扩展性

前提#

本章节所提及的“文件系统”(File System)指的是可挂载(mountable)到操作系统,且可被应用程序通过 POSIX 接口读写文件的分布式文件系统。

本章节通过 MooseFS 搭建分布式文件系统。

系统构成#

MooseFS 分布式文件系统包含以下三类成员:

  • 主控服务器(Master)
  • 备选服务器(Meta Logger),同步主控服务器上的元数据,当主控服务器宕机时将从备选服务器中选择一个实例作为主控服务器
  • 存储服务器(Chunk Server),负责存储文件数据

分布式文件系统

通过设置目标副本数(goal)可以实现文件的冗余备份。例如,在一个拥有四个存储服务器的 MooseFS 分布式文件系统中,如果目标副本数为 2,那么一个文件将在四个存储服务器中的两个上拥有副本。当其中一个存储服务器实例发生故障时,可以保证文件能够被正常读取,同时将在另外两个存储服务器实例的一个实例中创建一个副本,以使有效副本数(valid copies)与目标副本数一致。

分布式文件系统

因此,

总磁盘空间 = 存储服务器可用磁盘空间总和
总可用磁盘空间 = 存储服务器可用磁盘空间总和 ÷ 目标副本数

环境构建#

  • 四台服务器:192.168.1.151、192.168.1.152、192.168.1.153、192.168.1.154
  • 服务器系统:CentOS Linux 7

系统搭建#

安装 MooseFS#

  • 获取公钥
$ curl "http://ppa.moosefs.com/RPM-GPG-KEY-MooseFS" > /etc/pki/rpm-gpg/RPM-GPG-KEY-MooseFS
  • 获取镜像源repo
$ curl "http://ppa.moosefs.com/MooseFS-3-el7.repo" > /etc/yum.repos.d/MooseFS.repo
  • 主控服务器安装(192.168.1.151)
$ yum install moosefs-master moosefs-cgi moosefs-cgiserv moosefs-cli

主配置文件:/etc/mfs/mfsmaster.cfg

客户端挂载访问权限控制的配置文件:/etc/mfs/mfsexports.cfg

  • 备选服务器安装(192.168.1.152、192.168.1.153、192.168.1.154)
$ yum install moosefs-metalogger

配置文件:/etc/mfs/mfsmetalogger.cfg

  • 存储服务器安装(192.168.1.151、192.168.1.152、192.168.1.153、192.168.1.154)
$ yum install moosefs-chunkserver

配置文件:/etc/mfs/mfschunkserver.cfg

  • 客户端安装
$ yum install moosefs-client

文件存储设置#

  • 建立文件存储目录
mkdir -p /mnt/www
  • 设置储存目录所有者及权限
chown mfs:mfs /mnt/www
chmod 770 /mnt/www
  • 设置存储服务器配置
# 配置文件
/mnt/www

配置文件:/etc/mfs/mfshdd.cfg

如果主控服务器、备选服务器、存储服务器服务均已启动成功,但管理控制台的 Servers 中没有显示挂载上备选服务器和存储服务器信息,则请检查相应服务器防火墙状态及对应端口是否开放。

注意事项#

  • 目标副本数应至少设置为 2 以保证系统的健壮性
$ mfssetgoal -r 2 /mnt/mfs

对于较大实例(比如1PiB或更高)建议目标副本数至少设置为 3,因为在较大实例中,磁盘故障的概率较高。

  • 确保足够的元数据存储空间(主控服务器/var/lib/mfs目录空间不足会导致元数据丢失)
SPACE = RAM *(BACK_META_KEEP_PREVIOUS + 2)+ ESTIMATION_SIZE *(BACK_LOGS + 1)

SPACE:所需存储空间(单位:GB)

RAM:服务器内存大小(单位:GB)

BACK_META_KEEP_PREVIOUS:保留之前元数据文件的数量(默认值1,通过/etc/mfs/mfsmaster.cfg设定)

ESTIMATION_SIZE:是元数据变更日志文件大小的估算值

BACK_LOGS:元数据变更日志文件的数量(默认值50,通过/etc/mfs/mfsmaster.cfg设定)

例如,当服务器内存为 4GB、元数据变更日志文件的估算大小为 1GB 时,默认情况下 /var/lib/mfs 路径需要 4 * (1 + 2) + 1 * (50 + 1) = 63GB 存储能力

  • 应用服务器与 MooseFS 文件系统服务置于同一内网,以保证文件传输及同步速度

更多内容请参考MooseFS 官方文档

命令说明#

  • 主控服务器服务启动/停止/重启
$ mfsmaster [start|stop|restart]
  • CGI服务启动/停止/重启
$ mfscgiserv [start|stop|restart]
  • 备选服务器服务启动/停止/重启
$ mfsmetalogger [start|stop|restart]
  • 存储服务器服务启动/停止/重启
$ mfschunkserver [start|stop|restart]