如此多的选项,而测试它们的时间却如此之少......我想知道是否有人对用于视频流和存储/编码的分布式文件系统有经验。
我有很多巨大的视频文件(50GB 到 250GB)需要存储在某个地方,能够将它们编码为 mp4 并从多个 Adobe FMS 服务器流式传输它们。处理这一切的唯一方法是使用分布式文件系统,但现在的问题是哪个?
到目前为止,我的研究告诉我:
- Lustre:成熟成熟的解决方案,被很多大公司使用,最好是大于 10G 的文件是内核驱动程序。
- Gluster:新的,不太成熟的,基于 FUSE 的,这意味着易于安装,但由于 FUSE 开销可能会更慢。更好地处理大量较小的文件 ~1GB
- MogileFS : 似乎只适用于小文件~MB,使用 HTTP 访问??未来可能的 FUSE 绑定。
到目前为止,Lustre 似乎是赢家,但我想听听我所拥有的特定应用程序的真实体验。
Hadoop、Redhat GFS、Coda 和 Windows DFS 听起来也可以作为选项,因此欢迎任何体验。如果有人有基准,请分享。
经过一些实际经验,这是我学到的:
- 光泽:
- 性能:惊人的快!我可以断言 Lustre 可以提供大量流,并且编码速度不受通过 Lustre 访问文件的影响。
- POXIS 兼容性:非常好!无需修改应用程序即可使用光泽。
- 复制、负载平衡和故障转移:非常糟糕!对于复制负载平衡,我们和故障转移需要依赖其他软件,例如虚拟 IP 和 DRDB。
- 安装:最糟糕的!普通人无法安装。需要内核、光泽补丁和调整的非常特定的组合才能使其正常工作。而当前的 luster 补丁通常适用于与新硬件/软件不兼容的旧内核。
- MogileFS:
- 性能:适用于小文件,但不适用于大中型文件。这主要是由于 HTTP 开销,因为所有文件都是通过 HTTP 请求发送/接收的,这些请求将所有数据编码为 base64,为每个文件增加了 33% 的开销。
- POXIX 兼容性不存在。所有应用程序都需要修改为使用 mogilefs,这使得它无法用于流式传输/编码,因为大多数流式传输服务器和编码工具不理解 MogileFS 协议。
- 通过一次访问多个跟踪器,可以在应用程序中实现开箱即用的复制和故障转移以及负载平衡。
- 安装相对容易,大多数发行版中都存在现成的软件包。我发现的唯一困难是设置数据库主从以消除单点故障。
- 光泽:
- 性能:对流媒体非常不利。在 10Gbps 网络中,我无法达到超过几 Mbps。客户端和服务器 CPU 因大量写入而猛增。对于编码工作,因为 CPU 在网络和 I/O 之前就已经饱和。
- POXIS:几乎兼容。我使用的工具可以将 gluster 挂载作为磁盘中的普通文件夹访问,但在某些边缘情况下,事情会开始导致问题。检查 gluster 邮件列表,你会发现有很多问题。
- 复制、故障转移和负载平衡:最好的!如果他们真的工作。Gluster 是非常新的,它有很多错误和性能问题。
- 安装太容易了。管理命令行非常棒,在多台服务器之间设置复制、条带化和分布式卷再简单不过了。
定论:
不幸的是,结论是“没有银弹”。
目前,我们将 Gluster3.2 中的媒体文件放在一个复制卷中,用于存储和转码。只要您没有很多服务器,就可以避免异地复制和条带卷。
当我们要流式传输媒体文件时,我们将它们复制到一个光泽卷,该卷通过 DR:DB 复制到第二个光泽卷。然后 wowza 服务器从 luster 卷中读取媒体文件。
最后,我们使用 MogileFS 在我们的 Web 应用程序服务器中提供缩略图。