亲爱的 Serverfault 社区,
在研究了许多用于生产环境部署的分布式文件系统之后,其主要目的是执行批处理和实时分布式计算,我确定了以下列表作为潜在候选者,主要考虑成熟度、许可证和支持:
- 头孢
- 光泽
- 集群文件系统
- 高清文件系统
- 卵泡性纤维化
- 驼鹿
- 文件系统
我们的系统应该具备以下关键特性:
- 开源、自由许可且可用于生产,例如成熟、可靠、社区和商业支持的解决方案;
- 能够在商用硬件上运行,最好是专门为此设计的;
- 提供数据的高可用性,重点关注读取;
- 高度可扩展性,因此可以在多个数据中心进行操作,甚至可能在全球范围内进行操作;
- 通过使用(元)数据的复制和分发消除单点故障,例如提供容错能力。
确定了敏感点并提出了以下问题:
- 处理层/应用程序在数据局部性方面的透明度,例如,知道数据在服务器级别的物理位置,主要用于资源分配和快速处理、高性能,如何实现这一点?从经验上看,您是否知道哪些解决方案可以提供这种透明度以及透明度达到何种程度?
- 上述大多数解决方案的 wiki 页面上都提到了 posix 合规性或一致性。这里的问题主要是,对 posix 标准的支持有多大相关性?例如,Hadoop 在设计上就不符合 posix 标准,其优缺点是什么?
- 那么分布式文件系统的同步和异步操作之间的区别是什么呢?虽然同步分布式文件系统由于可靠性而受到青睐,但它在可扩展性方面也存在某些限制。从您的专业知识来看,应该如何解决这一问题?
我期待您的回复。提前谢谢!:)
亲切的问候,
蒂姆·范·埃尔特伦
答案1
听起来你已经做了很多基础工作。关于你的关键要求,你确定的所有文件系统都在一定程度上满足了这些要求。这些都是分布式文件系统所做的事情,因为它存在分布式文件系统。
唯一值得进一步讨论的要求是许可——这可能是商业考虑你的公司,并有助于淘汰那些不适合你的有效候选人。商业原因。这是你需要在与公司其他部门协商后做出的一系列选择,听起来你已经知道你想要什么了。
我们实际上无法告诉您应该使用什么文件系统(您需要做更多的研究,并且建议进行一些实验室测试/模拟 - 利用虚拟化和大量免费的虚拟机管理程序!),但我可以让您稍微了解一下您的敏感点”
就数据局部性而言,对处理层/应用程序具有透明度,例如,知道数据在服务器级别的物理位置,主要用于资源分配和快速处理、高性能,如何实现这一点?根据你的经验,你是否知道哪些解决方案可以提供这种透明度以及透明度达到何种程度?
分布式文件系统通常对操作系统的其余部分(文件系统层之上)是透明的。文件系统负责将数据分发到各个节点、复制数据以实现容错,以及将数据移入/移出客户端计算机 - 您的操作系统会像对待其他文件系统一样对待它。
任何分布式文件系统没有在我看来,提供这种抽象层次是行不通的:客户端系统不应该需要他们不需要知道分布式文件系统 (FS) 背后的工作原理,也不需要知道 NFS 服务器的本地磁盘组织。
性能考虑是一个单独的问题 - 您上面提到的每个文件系统都可以在一定程度上进行调整。 最好的建议是“根据你的工作量做自己的基准测试”但是您也可以查看已发布的基准,以大致了解可以期待的结果。
上述大多数解决方案的 wiki 页面上都提到了 POSIX 合规性或一致性。这里的主要问题是,对 POSIX 标准的支持有多大相关性?
只有您可以回答相关性问题(根据您的要求),但作为老派 Unix 人,我可以告诉您,我希望 Unix/Linux 主机上的文件系统符合 POSIX 规范 - 特别是在最显眼的区域(文件名限制、权限、ACL)。
最小惊讶原则还规定在 Unix 或 Linux 系统上,您的文件系统应符合 POSIX 标准,并通过操作系统的标准工具公开权限和 ACL,因此我认为强烈支持使用具有 POSIX 兼容接口的分布式文件系统。
那么分布式文件系统的同步和异步操作之间的区别是什么呢?虽然同步分布式文件系统由于可靠性而受到青睐,但它在可扩展性方面也存在某些限制。从您的专业知识来看,应该如何解决这一问题?
再次,只有你可以防止森林火灾发出此呼吁。
正如您正确指出的那样,同步分布式文件系统存在一些可扩展性问题(主要涉及写性能)。它们还具有强一致性的优势。
异步分布式文件系统几乎总是具有更好的性能,但具有固有的风险水平——通常更有可能在集群内出现数据不一致,或者在同步/复制数据时通过瞬时单点故障丢失数据。
从我的角度来看(作为老派 Unix 人),一致性和稳定性胜过性能。McKusick 在关于 FFS 历史的演讲中有一段精彩的引言大意是“文件系统必须正确,因为当用户丢失数据时,他们会非常沮丧”——在商业/生产环境中,系统管理员在丢失价值数百万美元的数据时会被解雇,因此,多花几毫秒来确保数据通过分布式文件系统正确复制对我来说非常有意义,除非有非常不这么做的充分理由。
答案2
你需要多快的阅读速度?全球可扩展性有多重要?
我首先想到的是,Lustre 速度很快,但这只是您列出的它的唯一功能。
我知道有两件事可以满足您的要求。
Xrootd——只读,全局 HA,在科学界广泛使用。
http://xrootd.slac.stanford.edu/
OpenAFS——已经存在很长时间了并且广泛应用于高等教育。
这两种软件的读取速度都不如经过适当调优的 Lustre 系统,但都可以扩展到全球部署。据我所知,您列表中的其他软件更适合在单个数据中心访问。