Mar*_* M. 31 linux storage filesystems
随着Hadoop的和CouchDB的在博客各地和相关新闻什么是分布式容错存储(引擎),实际工作。
所以问题是哪个分布式文件系统具有以下功能集(没有特定顺序):
很高兴有:
我不是在寻找托管应用程序,而是一些可以让我在我们的每个硬件盒中使用 10GB 并在我们的网络中提供存储空间的东西,可以轻松地安装在众多主机上。
Kar*_*zke 16
我不能和其他人说话,但您似乎在“分布式存储引擎”和“分布式文件系统”之间感到困惑。它们不是同一种东西,它们不应该被误认为是同一种东西,而且它们永远不会是同一种东西。文件系统是一种跟踪事物在硬盘驱动器上的位置的方法。像 hadoop 这样的存储引擎是一种跟踪由键标识的数据块的方法。从概念上讲,没有太大区别。问题是文件系统是存储引擎的依赖项……毕竟,它需要一种写入块设备的方法,不是吗?
除此之外,我可以谈谈在生产环境中使用 ocfs2 作为分布式文件系统。如果您不想要详细的细节,请在此行之后停止阅读:这有点酷,但它可能意味着比您想象的更多的停机时间。
过去几年,我们一直在生产环境中运行 ocfs2。没关系,但是对于很多应用程序来说并不是很好。你真的应该看看你的需求并弄清楚它们是什么——你可能会发现你对错误的宽容度比你想象的要大得多。
例如,ocfs2 为集群中要挂载分区的每台机器都有一个日志。因此,假设您有四台 Web 机器,当您使用 mkfs.ocfs2 进行分区时,您指定总共有六台机器,以便给自己一些增长空间。这些日志中的每一个都占用空间,这会减少您可以存储在磁盘上的数据量。现在,假设您需要扩展到七台机器。在这种情况下,您需要取下整个集群(即卸载所有 ocfs2 分区)并使用 tunefs.ocfs2 实用程序创建额外的日志,前提是有可用空间。只有这样,您才能将第七台机器添加到集群中(这需要您将文本文件分发到集群的其余部分,除非您使用实用程序),将所有内容备份,然后在所有七台机器上安装分区机器。
明白了吗?它应该是高可用性,这应该意味着“始终在线”,但就在那里,您有很多停机时间……上帝保佑您因磁盘空间而拥挤。您不想看到拥挤 ocfs2 时会发生什么。
请记住,曾经是管理 ocfs2 集群的“首选”方式的 evms 已经像渡渡鸟一样支持 clvmd 和 lvm2。(很好地摆脱了 evms。)此外,heartbeat 很快就会变成一个僵尸项目,有利于 openais/pacemaker 堆栈。(另外:在为 ocfs2 进行初始集群配置时,您可以指定“pcmk”作为集群引擎而不是心跳。不,这没有记录。)
就其价值而言,我们已经回到了由起搏器管理的 nfs,因为与我们看到的基本停机时间相比,当起搏器将 nfs 共享迁移到另一台机器时,几秒钟的停机时间或一些丢弃的 tcp 数据包是微不足道的共享存储操作,例如在使用 ocfs2 时添加机器。
我认为您将不得不放弃 POSIX 要求,很少有系统实现这一点 - 事实上,即使 NFS 也没有(想想锁等)并且没有冗余。
任何使用同步复制的系统都会非常缓慢;任何具有异步复制(或“最终一致性”)的系统都将违反 POSIX 规则并且行为不像“传统”文件系统。