RAID 磁盘使用模式和性能 [已关闭]

问题描述 投票:0回答:3

OpenStack Swift 部署文档 说:

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

但我没有找到对此的任何阐述或解释。因此,在深入研究 Swift 源代码之前,我想询问社区:

  • RAID 友好的“磁盘使用模式”应该是什么?
  • Swift 的磁盘使用有什么特别之处?
filesystems raid openstack-swift
3个回答
1
投票

Swift 因其

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

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

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


1
投票

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

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

或者,如果您想深入了解 RING 算法,我的同事在 RING 上做了一个视频深入研究。


1
投票
  1. RAID 友好的“磁盘使用模式”应该是什么?

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

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

    Swift 磁盘 I/O

    1. A/C/O 服务器上大部分是随机的
    2. 高并发并行
    3. 放置一个对象的放大系数为 6 倍(至少写入 3x 对象并更新 3x 容器,更不用说其他复制过程、审核员等)

    Openstack Swift 设计用于使用商用服务器和硬盘,这意味着在相当优质的硬件上成本最低,而这些硬件通常不包括 RAID 卡。然而,在服务器中使用 8-10 个以上硬盘需要 RAID/HBA 卡,因此在实践中许多人会使用 RAID 卡,但将每个硬盘配置为单驱动器 RAID0,或者如果主板不支持,则使用 HBA 卡服务器机箱可容纳的硬盘数量。

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

© www.soinside.com 2019 - 2024. All rights reserved.