0

OpenStack Swift 部署文档说:

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

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

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

3 回答 3

1

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

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

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

于 2013-12-25T03:41:17.797 回答
1

为什么首先你需要 Swift 的 RAID?

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

或者,如果您想深入了解 RING 算法,我的同事对 RING 进行了视频深入研究。

希望能帮助到你,

阿图尔

于 2013-12-18T10:30:48.983 回答
1
  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 个容器,更不用说其他复制过程了,审计师ETC)

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

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

于 2015-10-17T03:58:42.850 回答