linux - 在我的例子中,好的分布式通用文件系统?

标签 linux filesystems amazon-s3 cloud storage

我一直在研究使用分布式文件系统和我的专用服务器而不是使用 Amazon S3 的想法,结果只是令人头疼!



我的项目具有以下特征/要求:

  • 用户文件存储在专用服务器中。每个文件都存储在两台独立的机器中,位于不同的数据中心(彼此相距 150-200 英里)

  • 我正在使用 Amazon RDS 托管关联的 mysql 数据库 (*)。它相当紧凑(仅保存 ID/文件元数据)

  • 文件/数据约为 50TB。当然,数据确实会发生变化,并且肯定会随着时间的推移而增长



我的问题是:是否有一个良好的通用、分布式并行容错文件系统,具有以下特征:

  • 稳定且相当快(上传/下载)

  • 相当容易设置和维护

  • 处理数据存储,以便我只需在需要时需要关心删除/添加新服务器(即通过编辑简单的配置将新服务器添加到文件系统的服务器池中,或类似的东西)

我读过有关 OpenStack、GlusterFS、MogileFS、XtreemFS 等的内容...但读得越多,我就越感到困惑!

(*) 是的,我意识到了矛盾。从成本角度来看,将数据库托管在 RDS 上确实有意义。但与使用专用服务器相比,在亚马逊上存储(最多)50TB 的用户文件成本太高(只要它足够好)。

PS。我的应用程序尚未上线,因此如果有人有适合我的情况的好主意,我愿意接受建议。



编辑尝试进行S3克隆,我只需要使用现有的托管基础​​设施来构建小型云解决方案,我的问题是寻找正确的分布式文件系统来处理/自动化此操作。

最佳答案

我们最近从昂贵的存储解决方案切换到开源 Lizardfs 作为我们的分布式存储解决方案。一旦您了解了基本概念,设置和扩展就非常简单。

查看https://docs.lizardfs.com/introduction.html#architecture快速概览。但现在暂时忘掉 Shadow Master 和元记录器吧。您需要知道的是,有

  1. ma​​ster:调节流量(确保有足够的CPU)

  2. chunkservers:实际存储数据。使用任何类型的附有一堆硬盘的现成硬件。

  3. 客户端:只是简单的挂载点。因此,如果您愿意,您可以获得 50TB 的巨型安装。主机将告诉客户端在哪里查找/存储文件。实际数据直接从客户端传输到 block 服务器并返回。

您可以根据需要添加任意数量的 chunkserver,master 会自动尝试平衡它们之间的存储使用情况。添加存储就是添加硬盘或添加服务器。它们不一定是真正的裸机机器,但这可能是最便宜的。

lizardfs 有 2 个令人惊叹的功能可以实现地理复制。

  1. 目标(请参阅 https://docs.lizardfs.com/adminguide/replication.html#standard-goals ):文件对您来说有多重要。您可以在文件级别/文件夹级别定义文件需要复制的次数。你要2份3份吗? 10?您可以为仅用于存档目的的旧文件定义 2 个副本的目标。并在 SSD 驱动器上为所有新文件定义 4 个副本的目标。

这些相同的目标也可用于进行地理复制。您可以通过相应地标记 block 服务器来定义数据必须存储在至少两个不同的位置。 (例如 DC1 和 DC2)

  • 机架感知(参见https://docs.lizardfs.com/adminguide/advanced_configuration.html#configuring-rack-awareness-network-topology):您基本上定义IP范围来告诉系统您的网络是什么样的。这样,客户端将尝试从最近的服务器提供文件。
  • 易于设置是 lizardfs 吸引我的原因。我听说过有关 Ceph 的很多好消息,但设置它是另一回事......

    一开始让我担心的是这项技术的成熟度如何。所以我花了很多研究来弄清楚谁在使用它。 Orange Polish(一家大型电信提供商)是用户之一。 和Cloudweavers/opennebula实际上围绕它建立了一项业务selling complete solutions .

    关于linux - 在我的例子中,好的分布式通用文件系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9964781/

    相关文章:

    VB6 应用程序在单台 PC 上无法进行 8.3 路径转换

    ruby-on-rails-3 - 回形针 + S3 : Migrating existing files from one :path format to another

    amazon-web-services - CloudTrail - CloudTrail 管理事件中的 sourceIPAddress 字段

    linux - ubuntu 上服务的状态

    linux - 两次 Bash 命令替换

    c - C语言中的结构,指针和树

    file - 黑莓文件系统

    java - 如何将 Excel 文件从 AWS S3 存储桶获取到 Java 中的 MultipartFile 中

    linux - 命令终止时 GNU screen 关闭窗口

    c++ - CMake 没有找到特定的 boost 库 (boost_random)