Filesystems 有没有像POSIX这样没有单点故障的高性能文件系统?

Filesystems 有没有像POSIX这样没有单点故障的高性能文件系统?,filesystems,nfs,distributed-system,Filesystems,Nfs,Distributed System,我们有一个web服务,它需要为应用服务器(在冗余负载平衡器后面并行运行的多个冗余系统)提供一个与POSIX兼容的共享文件系统。我们目前正在运行GlusterFS作为应用服务器的共享文件系统,但我对系统的性能不满意。与运行GlusterFS的存储服务器的实际原始性能相比,在所有其他GlusterFS服务器(目前有3台服务器)处于热备用状态的情况下运行DRBD和单个NFS服务器看起来更合理 我们的工作负载高度面向读取,通常处理小文件,我很乐意使用“最终一致”系统,只要客户端可以在需要时请求对单个文件

我们有一个web服务,它需要为应用服务器(在冗余负载平衡器后面并行运行的多个冗余系统)提供一个与POSIX兼容的共享文件系统。我们目前正在运行GlusterFS作为应用服务器的共享文件系统,但我对系统的性能不满意。与运行GlusterFS的存储服务器的实际原始性能相比,在所有其他GlusterFS服务器(目前有3台服务器)处于热备用状态的情况下运行DRBD和单个NFS服务器看起来更合理

我们的工作负载高度面向读取,通常处理小文件,我很乐意使用“最终一致”系统,只要客户端可以在需要时请求对单个文件进行同步(也就是说,客户端准备等待文件成功存储在后端存储中)。我甚至愿意接受这样一种系统,这种“同步”需要通过POSIX
fdatasync()
以外的其他方式查询文件状态。文件元数据(如修改时间)并不重要,只重要文件名和内容

我目前知道可能的候选人以及每个人目前存在的问题:

  • GlusterFS:实际上,总体性能非常差,在添加新服务器/块时,性能会下降
  • Ceph:配置/管理非常复杂,据我所知,POSIX兼容性极大地牺牲了性能
  • MooseFS:部分模糊的开放源码(大量内部编写的代码以故意丢失补丁历史的方式少量发布),文档留下了许多需要改进的地方
  • Seaveedfs:非常简单的设计和高性能,这个项目的未来并不明朗,因为几乎所有的代码都是由Chris Lu编写和维护的-如果他不再编写任何代码会发生什么?不清楚“文件管理器”组件是否不支持单点故障

我知道这会阻止我们拥有真正一致且始终可用的系统。有没有适合分布式文件系统的好系统,写操作必须是持久的,但读取性能确实很好,并且系统没有单点故障?

我是Chris Lu,正在研究Seaveedfs。有计划将其商业化。(通过添加更多高级功能。)


文件服务器没有简单的故障点,您可以有多个文件服务器实例。文件管理器存储可以是任何键值存储。如果不需要SPOF,可以使用Cassandra、Redis cluster、CockroachDB、TiDB或Etcd。或者,您可以添加自己的键值存储选项,这非常简单。

BeeGFS看起来很有趣:-有人有使用它的实际经验吗?啊。。比格夫斯的驾照真的很奇怪(),可能不会在法庭上被持有,但我不想成为第一个尝试的人。乍一看,似乎没有人应该在实际生产中使用这个软件。似乎你把自己局限于开源文件系统。it可能有商业原因,但也有良好的商业系统(软件定义和/或基于设备)。您说POSIX类似,所以NFS似乎是一种可能性。有许多高可用性、高性能的商用存储系统可能适合。我不会在这里一一列举(因为我为其中一人工作)。关键点是:你应该考虑不要限制自己的开源,比如文件系统和存储。我的经验是关闭源供应商已经足够坏,以避免与他们合作,除非绝对必要。如果我有源代码(有时没有源代码,但我尽量避免),我有资格自己调试问题。封闭源代码可以工作,直到您遇到一些模糊的边缘情况,这对于供应商来说是非常罕见的。然后,您可以向供应商投入资金,使其更有趣,或者开始为主要子系统寻找替代方案。您还可以尝试查看GFS2、OCFS2和OrangeFS。其中一些是共享磁盘,因此您需要获得一些更具容错性的共享磁盘—可能与文件系统不同,这些磁盘可能是商用的。关于文件服务器:文件服务器是否有内存缓存?在多台服务器上运行文件服务器实例是否安全?任何给定的客户端仅连接其中一台服务器,所有文件服务器进程共享一个键值存储(例如Cassandra或Redis)?如果这是安全的,这是同步的还是最终一致的设置?客户端有没有办法等待给定文件的同步状态?@MikkoRantalainen Filer有一些短的TTLE缓存,但基本上是无状态的。它就像一个无状态的web服务器,可以运行多个实例。没有锁。在文件管理器存储上运行的最后一个将获胜。对于mysql/postgres文件存储,存在重命名文件夹的事务。