使用 24x SSD 阵列设置低成本图像存储服务器以获得高 IOPS?

Nen*_*nad 5 raid performance storage ssd iops

我想构建一个低成本的 Ra*san,它可以为我们的社交网站托管图像(数百万张),每张照片有 5 种大小,每张图像有 3 KB、7 KB、15 KB、25 KB 和 80 KB。

我的想法是在 Raid 6 中构建一个带有 24x 消费者 240 GB SSD 的服务器,这将为我提供一些 5 TB 磁盘空间用于照片存储。要拥有 HA,我可以添加第二个并使用 drdb。

我希望超过 150'000 IOPS(4K 随机读取)。

由于我们大多只有读取权限并且很少删除照片,因此我认为与消费者 MLC SSD 搭配使用。我阅读了许多耐力评论,只要我们不重写单元格,就不会出现问题。

你觉得我的想法怎么样?- 我不确定是 Raid 6 还是 Raid 10(更多 IOPS,成本 SSD)。- 文件系统是否可以使用 ext4 - 你会使用 1 个还是 2 个 Raid 控制器,带扩展器背板

如果有人意识到类似的事情,我很乐意获得真实世界的数字。


更新

我已经购买了 12 个(加上一些备用的)OCZ Talos 480GB SAS SSD 驱动器,它们将被放置在一个 12 托架 DAS 中并连接到一个 PERC H800(1GB NV 缓存,由具有快速路径的 LSI 制造)控制器,我计划设置 Raid 50与 ext4。如果有人想知道一些基准测试,请告诉我您希望看到什么。

Dav*_*ett 7

在 RAID10 上使用 RAID6。对于主要基于读取的 I/O 负载,当阵列没有降级时,吞吐量应该相似,您会获得更好的冗余(任何两个驱动器都可以使用 R6 同时发生故障,如果两个故障驱动器都在同一条腿上,R10 将无法继续运行(所以只能在 4 驱动器阵列中的六个两个驱动器故障组合中存活四个,我不确定这个 4/6 数字对于更大的阵列是如何缩放的)),并且您可以获得更大的可用阵列大小,除非您将驱动器排列在 4 驱动器子阵列中(见下文)。

你的空间计算出来了,当然是 RAID10。24*240Gb 是 5760Gb,没有冗余(RAID0 或 JBOD)。使用 RAID10,您将只能获得 2880Gb,因为(通常)每个块有两个精确副本。如果您将所有驱动器用作一个大型 RAID6 阵列,您将获得 5Tb(5280Gb,在阵列上分布的两个驱动器的奇偶校验信息),但我个人会更加偏执并创建较小的 RAID6 阵列并将它们与 RAID0 或 JBOD 连接 -这样一来,更换驱动器时的重建时间就会更短,并且在许多情况下,您可以在更多驱动器同时发生故障时幸免于难(每条腿可能会死两个驱动器,而不是总共 24 个驱动器中的两个驱动器,而不会使阵列变得无用)。每条腿有四个驱动器,您可以获得与 RAID10 相同的空间量。

关于控制器:这些可能是 RAID 的单点故障。如果控制器死机,您将立即丢失所有连接到它的驱动器。虽然此类故障非常罕见(随机损坏更为常见),但如果它发生在您身上,注意减少影响并没有坏处。如果您使用 RAID10,请确保没有一对驱动器位于同一个控制器上(这意味着至少有两个)。如果拆分为 4 个驱动器的 RAID-6 阵列,则使用四个控制器,每个控制器都有一个驱动器或一个给定的阵列。这当然假设您正在使用软件 RAID 和简单的控制器,这可能不太可能(您在驱动器上花费了这么多钱,您最好可以使用一些不错的硬件 RAID 控制器!)。

如果您还没有,您也应该考虑备份解决方案。RAID 将保护您免受某些硬件故障的影响,但不会保护您免受许多人为错误和其他潜在问题的影响。


sla*_*dot 6

我会考虑使用 OpenSolaris、SolarisExp 11、OpenIndiana 或 Nexenta 可以实现的混合解决方案。混合池的成本要低得多,而且价值几千美元的 RAM,您将拥有 150k+ IOPS,并且大部分是普通的旋转磁盘。在 Nexenta,我们有很多客户正是这样做的。ZFS 是一个健壮的文件系统,如果有足够的 RAM 和/或 SSD 用于额外的读/写缓存,您可以以相对较低的成本获得非常健壮的解决方案。使用社区版 Nexenta Core,您可以完全免费获得 18TB。当然,新版本的 OpenIndiana 将允许许多相同的功能。添加到此快照、克隆、使用 ZFS 发送/接收的复制,您可以构建一个 SAN,该 SAN 将以低得多的成本让任何 EMC 物有所值。很多 SSD 都不错,但还有其他选择,