有无单点故障的高性能POSIX类文件系统吗?
Is there any high performance POSIX-like filesystem without a single point of failure?
我们有一个 Web 服务需要某种程度上 POSIX 兼容的应用程序服务器共享文件系统(多个冗余系统 运行 在冗余负载平衡器后面并行)。我们目前 运行ning GlusterFS 作为应用程序服务器的共享文件系统,但我对该系统的性能不满意。与存储服务器 运行ning GlusterFS 的实际原始性能相比,运行 DRBD 和单个 NFS 服务器与所有其他 GlusterFS 服务器(当前 3 个服务器)在热备份中等待时看起来更合理角色。
我们的工作负载是高度读取导向的,通常处理小文件,我很乐意使用 "eventually consistent" 系统,只要客户端可以在需要时请求同步单个文件(即客户端准备等到文件成功存储到后端存储)。我什至会接受一个系统,其中 "sync" 需要通过 POSIX fdatasync()
以外的其他方式查询文件的状态。修改时间等文件元数据并不重要,只有文件名和内容。
我目前知道可能的候选人以及每个人目前遇到的问题:
- GlusterFS:实践中整体性能很差,添加新的 servers/bricks 时性能下降。
- Ceph:据我所知 configure/administrate 非常复杂,POSIX 兼容性会牺牲很多性能。
- MooseFS:部分混淆的开源(大量内部编写的代码转储很少发布,故意丢失补丁历史记录),文档有很多不足之处。
- SeaweedFS:非常简单的设计和高性能,这个项目的未来还不清楚,因为几乎所有代码都是由 Chris Lu 编写和维护的——如果他不再编写任何代码会怎样?不清楚 "Filer" 组件是否不支持单点故障。
我知道 CAP theorem 阻止了真正一致且始终可用的系统。分布式文件系统有什么好的系统写必须持久,但是读性能真的很好,系统没有单点故障?
我是 SeaweedFS 的 Chris Lu。有计划将其商业化。 (通过添加更多高级功能。)
文件管理器没有简单的故障点,您可以有多个文件管理器实例。文件存储可以是任何键值存储。如果不需要 SPOF,可以使用 Cassandra、Redis 集群、CockroachDB、TiDB 或 Etcd。或者您可以添加自己的键值存储选项,这非常简单。
我们有一个 Web 服务需要某种程度上 POSIX 兼容的应用程序服务器共享文件系统(多个冗余系统 运行 在冗余负载平衡器后面并行)。我们目前 运行ning GlusterFS 作为应用程序服务器的共享文件系统,但我对该系统的性能不满意。与存储服务器 运行ning GlusterFS 的实际原始性能相比,运行 DRBD 和单个 NFS 服务器与所有其他 GlusterFS 服务器(当前 3 个服务器)在热备份中等待时看起来更合理角色。
我们的工作负载是高度读取导向的,通常处理小文件,我很乐意使用 "eventually consistent" 系统,只要客户端可以在需要时请求同步单个文件(即客户端准备等到文件成功存储到后端存储)。我什至会接受一个系统,其中 "sync" 需要通过 POSIX fdatasync()
以外的其他方式查询文件的状态。修改时间等文件元数据并不重要,只有文件名和内容。
我目前知道可能的候选人以及每个人目前遇到的问题:
- GlusterFS:实践中整体性能很差,添加新的 servers/bricks 时性能下降。
- Ceph:据我所知 configure/administrate 非常复杂,POSIX 兼容性会牺牲很多性能。
- MooseFS:部分混淆的开源(大量内部编写的代码转储很少发布,故意丢失补丁历史记录),文档有很多不足之处。
- SeaweedFS:非常简单的设计和高性能,这个项目的未来还不清楚,因为几乎所有代码都是由 Chris Lu 编写和维护的——如果他不再编写任何代码会怎样?不清楚 "Filer" 组件是否不支持单点故障。
我知道 CAP theorem 阻止了真正一致且始终可用的系统。分布式文件系统有什么好的系统写必须持久,但是读性能真的很好,系统没有单点故障?
我是 SeaweedFS 的 Chris Lu。有计划将其商业化。 (通过添加更多高级功能。)
文件管理器没有简单的故障点,您可以有多个文件管理器实例。文件存储可以是任何键值存储。如果不需要 SPOF,可以使用 Cassandra、Redis 集群、CockroachDB、TiDB 或 Etcd。或者您可以添加自己的键值存储选项,这非常简单。