MooseFS 相关概念

官方地址:https://moosefs.com/
常见问题地址:https://moosefs.com/faq/

MooseFS 相关概念

MooseFS 是一种容错的分布式文件系统。它将数据分布在多个物理位置,用户可以将这些物理位置视为一个资源(可以理解为:共享的是一个根目录,也可以共享它的子目录)。

使用场景(个人觉得):管理员控制 MooseFS 共享的根目录,然后通过子目录来控制各个程序或者客户端共享权限。

MooseFS 的显著特征是

  1. 高可靠性
  2. 可动态扩展容量(添加新的节点 or 磁盘)
  3. 删除的文件将保留一段可配置的时间(回收站)
  4. 文件的一致快照,即使文件正在被写入 or 访问

MooseFS 的组成

  1. 管理服务器(master):存储每个文件的元数据(有关大小、属性和文件位置的信息,包括有关非常规文件的所有信息,即目录、套接字、管道和设备)
  2. 数据服务器(chunkserver):存储文件数据并在它们之间进行同步。
  3. 元数据备份服务器(metalogger):存储元数据更改日志并定期下载 master 元数据文件。
  4. 客户端服务器(client):使用 mfsmount 进程与 master(接收和修改文件元数据) 和
    chunkservers(交换实际文件数据) 通信的服务器。

MooseFS 读写原理

在这里插入图片描述

MooseFS 读操作原理解释:

  1. client 通过 master 访问数据
  2. master 返回给数据存在的 chunkserver 地址
  3. client 向 chunkserver 访问数据
  4. chunkserver 返回给 client 数据

在这里插入图片描述

MooseFS 写操作原理解释:

  1. client 询问 master 将数据写入至哪里
  2. master 会告知 chunkserver 创建一个块
  3. chunkserver 创建好块之后,告知 master
  4. master 告知 client 要将数据写入的位置信息(chunkserver)
  5. client 在 chunkserver 写入数据
  6. 多个 chunkserver 之间同步副本
  7. 同步成功后返回 client 成功信息,写操作完成

Metalogger 相关概念

MooseFS 集群中,所有写操作的元数据存储在 master 的内存中,并在一段时间内保存到磁盘(作为定期更新的二进制文件和立即更新的增量日志)。默认情况下 master 每一个小时会将内存中保存的元数据刷新到 metadata.mfs.back 二进制文件中。

如果配置了 metalogger 节点,那么 master 上的二进制文件和日志会同步到 metalogger 中。metalogger 只是从 master 收集元数据备份,因此硬件要求并不高于 master 本身,但是至少应具有与 master 相同的 HDD 空间(尤其是 /var/lib/mfs 中的可用空间,可以考虑将工作目录作为挂载点);如果您想在 master 发生故障时将 metalogger 用作 master,那么它应至少具有与 master 相同的内存大小。

MooseFS 块的相关概念

MooseFS 集群最初设计用于保存大文件的,它具有 64MiB 的硬编码块大小和 64KiB 的块大小。即使是一个小文件也要占用 64KiB 的空间,另外还要加上 4KiB 的校验和 1KiB 的报头。

关于存储在 MooseFS 块中小文件的占用空间问题确实很重要,但我们认为仍然可以忽略不计。

让我们以副本为 2 的 2500 万个文件为例,来计算存储开销:这可能会创建约 5000 万个 69KiB 块,由于内部碎片(文件大小小于块大小),这些块可能无法完全利用。因此,这 5000 万块的总空间约为 3.2TiB。

具有 10 万个小文件的更典型的中型到大型项目,最多消耗 13GiB 的额外空间。

安全地停止 MooseFS 集群

  1. 停止所有使用 MooseFS 挂载的进程。lsof -n | grep mfsmount 可能会有所帮助
  2. 使用 umount 命令卸载所有机器上的文件系统
  3. 停止 Chunkserver
  4. 停止 Master
  5. 停止 Metalogger

动态添加/删除 Chunkserver

如果该 Chunkserver 仅包含文件系统中的唯一副本(CGI 监视器将其标记为橙色),则断开该块服务器是不明智的。但是可以断开 or 更改单个硬盘:

  1. 将磁盘标记为要删除
  2. 重新加载 Chunkserver
  3. 等待复制(CGI 监视器中不应有标记为 “undergoal” or “missing” 的块)
  4. 关闭 Chunkserver
  5. 删除 mfshdd.cfg 中断开连接的磁盘的条目
  6. 关机—卸下硬盘—启动机器
  7. 开启 Chunkserver

PS: 经过测试,动态删除单个 HDD 的前提条件是副本数必须要小于 Chunkserver 数,让原本在要删除的 HDD 上的副本可以移动到其他 Chunkserver 的 HDD 上。

有兴趣的可以另外的文档:MooseFS 文件恢复测试和动态删除 HDD 测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值