【问题标题】:RAID disk usage pattern and performanceRAID 磁盘使用模式和性能
【发布时间】:2014-01-06 08:42:27
【问题描述】:

OpenStack Swift deployment documentation 说:

Swift 的磁盘使用模式是 RAID 可能的最坏情况,使用 RAID 5 或 6 时性能会迅速下降。

但我没有找到任何详细说明或解释。所以,在深入挖掘 Swift 源代码之前,我想问问社区:

  • RAID 友好的“磁盘使用模式”应该是什么?
  • Swift 的磁盘使用有什么特别之处?

【问题讨论】:

    标签: filesystems raid openstack-swift


    【解决方案1】:

    由于其Ring 数据结构,Swift 是完全随机的 IO 模型。简而言之,Ring 将文件统一映射到所有磁盘。

    如果您有高随机写入工作负载,RAID 5 或 RAID 6 的性能会非常差。查看更多信息here

    场景类似于数据库。数据库还有些统一地存储文件,例如mongodb。您会发现他们也不建议使用 RAID 5 或 RAID 6。仅推荐使用 RAID 10。

    【讨论】:

      【解决方案2】:

      为什么首先需要使用 Swift 进行 RAID?

      Swift 原生使用 XFS,大部分操作由其原生算法 RING 处理。

      如果你想深入了解 RING 算法my colleagues did a video deep dive in on RING.

      希望对你有帮助,

      阿图尔

      【讨论】:

      • 谢谢,但我的问题不是关于 Swift 本身,我不会将它与 RAID 一起使用。我想了解磁盘使用问题,它与 RAID 的关系,以及(例如)能够向坚持“以防万一”的人解释为什么不应该以这种方式使用 Swift。
      • 抱歉,我的知识仅限于 Swift 和 RING,所以给了你我必须分享的东西。我希望有人能帮助你解决你的问题。干杯。
      【解决方案3】:
      1. RAID 友好的“磁盘使用模式”应该是什么?

      人们使用 RAID 卡的原因如下:

      1) 防止单个驱动器故障(RAID 0 除外) 2) 获得比单个驱动器更高的 I/O 性能(RAID 5、6、10、50 等,以及使用 BBU 写回缓存等) 3) 使用的驱动器数量超过主板支持的 RAID/HBA 卡 4) 一些存储管理功能(GUI 或命令行工具)

      1. Swift 的磁盘使用有什么特别之处?

      Swift 磁盘 I/O 是 1) 在 A/C/O 服务器上大多是随机的 2)并行高并发 3)放一个对象的6倍放大系数(至少写3个对象和更新3个容器,更不用说其他复制过程,审计等)

      Openstack Swift 旨在使用商品服务器和硬盘驱动器,这意味着在质量相当好的硬件上成本最低,通常不包括 RAID 卡。但是,一个服务器需要 RAID/HBA 卡才能使用 8-10+ 个 HDD,所以实际上很多人会使用 RAID 卡,但将每个 HDD 配置为单驱动器 RAID0,或者使用 HBA 卡,如果主板不支持服务器机箱可以容纳的 HDD 数量。

      您当然可以使用 RAID5、6、10,并失去一些容量来获得一些保护和性能,但这通常比需要的成本更高。 Swift 具有可调的复制因子,默认为 3 倍。

      【讨论】:

        猜你喜欢
        • 2020-05-22
        • 1970-01-01
        • 2014-05-04
        • 2015-11-15
        • 1970-01-01
        • 2016-04-19
        • 2017-04-07
        • 2016-04-24
        • 2016-12-22
        相关资源
        最近更新 更多