分类: 技术

MooseFS 安装与配置

论文需要实现一个分布式推荐系统。并行计算框架选择 Dpark,其对 MooseFS 做了优化,因此使用实验室的机器和自己的 VPS,基于 MooseFS 搭建了一个分布式存储系统。主要内容都可以在官网找到相关文档,这里不过是把一些地方加以翻译和简单梳理,部分地方加了少许自己的理解。

MooseFS 架构

MooseFS 主要分为4种服务器,分别提供不同的服务。对应的关系如下:

  1. Managing server (master server):是一个单独的服务器,用来管理整个文件系统。它存储了文件系统中每个文件的元数据(包括文件的大小,属性以及文件存储的位置等)。
  2. Data servers (chunk server):由若干台机器组成的数据服务器,用来实际存储文件的数据。它们之间还可以互相同步数据(这是因为每个文件在文件系统中可能拥有多个 copy,copy 的数量可以自行配置,见下文)。
  3. Metadata backup server(s) (metalogger server):由一台及以上机器组成,用来存储元数据的 changelogs,并且周期性地从 Managing server 中下载最新的 main metadata file。当 Managing server 挂掉的时候,系统会从 Metadata backup Servers 中选择一台作为 Managing server 使用。
  4. Clients:使用 MooseFS 的客户机。通过 mfsmount 进程和 Managing server 进行通信执行各种文件操作。

MooseFS 内部操作流程

这里使用 MooseFS 官网的两张图片说明执行文件操作时的内部执行流程:

读操作执行流程

写操作执行流程

Metadata 被存储在 Managing server 中的内存中,周期性地写回磁盘(并且更新日志)。同时这些内容会被同步到 metaloggers 中。 每个文件被分割为若干个 fragments(chunks),每个 chunk 是一个单独的文件,存储在 data server 上,单个大小最大为64MB。 通过为每个文件设置 “goal” 值来保证该文件的 copy 数量,以此保证文件系统的可靠性。 client 上的 mfsmount 进程在以下情况会直接和 managing server 通信: 1. 新建/删除文件 2. 读取目录内容 3. 读取/修改属性(个人理解为修改文件系统属性) 4. 改变文件大小 5. 读取/写入文件开始时 6. 修改任何一个特殊文件的 METADATA 时 mfsmount 会直接 data server 通信。当写入一个文件结束时,mfsmount 会通知 managing server 来修改该文件的元数据。 同时,多个 data server 之间也会相互通信,来保证相同文件在不同机器上的同步。

MooseFS 安装与配置

安装准备

环境采用 Ubuntu 14.04 作为 Master server 和 Chunk server,OS X 作为 client。 针对 Ubuntu,首先添加 repo key:

然后修改

/etc/apt/sources.list.d/moosefs.list添加:

最后执行:

针对 OS X,需要安装FUSE(采用 Homebrew):

然后从

http://ppa.moosefs.com/stable/osx/moosefs-ce-current.pkg下载工具包安装。

Master server 安装

先安装 master server:

然后进入

/etc/mfs,执行:

修改 mfsexports.cfg 中第一行,该行表示访问权限。在最后添加

,password=pwdtext,为文件系统添加密码。 修改/etc/default/moosefs-ce-master中的MFSMASTER_ENABLEtrue,使得该服务开机启动。 通过service命令控制该服务的开启等操作:

Chunk servers 安装

步骤和上述类似,先安装软件:

复制对应的

/etc/mfs/mfschunkserver.cfg/etc/mfs/mfshdd.cfg文件,并在后者中添加:

作为 MooseFS chunk 所在分区的挂载点(需要手动创建),然后修改用户 mfs 的权限,使其能够写入该分区:

最后修改

/etc/default/moosefs-ce-chunkserver中的MFSCHUNKSERVER_ENBLEtrue保证开机启动,并通过service来控制当前运行情况。

Client 配置

在 OS X 上已经安装了相应的工具,现在仅需设置文件系统的挂载点并且使用 mfsmount 工具挂载即可:

DNS 设置

以上操作需要在 chunk server 和 client 的 DNS 中设置 mfsmaster 的对应 IP 解析。自己直接修改了两种机器上的 hosts 文件,假设 master server 的 IP 地址为:

192.168.1.1,添加如下一行:

错误恢复

昨天非法关机,导致今天启动 master server 的时候提示找不到 metadata.mfs 文件,启动失败。这是因为非法关机导致主元数据文件(main metadata file)不完整,需要将元数据变更日志整合进该文件中。只需执行以下命令:

然后重启服务即可。

注:转载注明出处并联系作者,本文链接:https://nodefe.com/moosefs-installation-and-config/

发表评论

评论