Ceph 用于小文件?

Ceph 用于小文件?

目前我的数据中心有 6 台专用服务器。两台服务器是运行 exim 和 dovecot (Maildir) 的邮件服务器以及 4 台 Web 服务器。每台服务器有两个 3TB 硬盘。

我当前的问题是,我们现在有一个视频制作团队,他们需要存储。可能是可扩展的存储。目前他们必须查看哪些服务器上有足够的可用空间。这就是我想要解决的问题。

所以我的想法是使用 Ceph 来做两件事:首先为邮件和 Web 服务器创建故障转移解决方案。因此,如果服务器发生故障,负载均衡器只需切换到文件也可用的另一台服务器。

第二个是我获得了视频文件的可扩展存储,视频团队不必关心文件大小。他们的文件结构位于一台机器上,并且可以在这台“机器”上处理他们的文件。如果我需要更多存储空间,我只需租用另一台专用服务器并将其添加到“集群”中即可。

这就是为什么我想问 Ceph 是否是一个好主意。或者您还有其他更好的建议吗?

答案1

一般来说,Ceph 非常适合您的用例。我绝对可以很好地处理“大视频文件”的情况。

但你没有说你有多少个小文件,以及它们有多小。

如果您只有几百万个文件,那么一切都很好。

太少的大型旋转磁盘上太多的小文件可能会导致操作难题,适用于 Ceph 和大多数定期进行完整性检查的存储系统。

在旋转磁盘 HDD 上使用 Ceph 时,了解以下几点非常重要:

  • CephFS 将每个文件存储为 >= 1 个对象(“RADOS 对象”)。
  • 对此类对象的任何操作都需要进行磁盘查找。这些操作包括:
    • 擦洗:自动、定期校验和检查,以防止位腐烂和检测到故障磁盘
    • 恢复:当磁盘出现故障时
    • 平衡:当您向集群添加更多磁盘时
  • HDD 每秒只能执行约 100 次搜索。
  • 因此,如果您有许多小文件(例如 5 亿个),则一项此类操作(例如从某些磁盘丢失中恢复)大约需要500000000 objects / 100 seeks-per-second / 3600 s / 24 h=60天去完成。这是很长一段时间,在这种情况下另一个磁盘可能已经再次出现故障。
  • Ceph 目前没有更有效地处理小文件的功能。其他一些文件系统也具有这样的功能:
    • ZFS(非分布式文件系统)具有非顺序清理和重新同步,请参阅我的评论这个博客,以及这个 OpenZFS执行有了这个犯罪。我已经提交了一份Ceph 支持相同的功能请求
    • SeaweedFS(分布式,如 Ceph)将多个小文件捆绑成更大的“卷”文件。反过来,您无法立即删除文件。相反,它将大文件中的区域标记为已删除,并且垃圾收集稍后会清理它们,重写整个大文件。它也没有像 Ceph 那样经过实战测试和记录,请参阅我的帖子这里

对于Ceph,如果你可以对文件进行分区(例如大文件在一个目录,小文件在另一个目录),在服务器上添加一些SSD,那么你可以告诉 CephFS哪个设备类型用于哪个目录。

相关内容