我的公司正在考虑购买哪种类型的 SAN。这专门用于 IO 受限的数据库服务器(存储现在是 DAS,但我们已经达到单台服务器的极限,并且我们还想添加集群)。
我们需要一个能够长期产生大约 3000 IOPS 的解决方案(我们目前的峰值约为 1000 IOPS)。我们的大多数数据库操作都是小规模的读取/写入。根据与 HP 工程师和其他在线人员的讨论,一台 HP P2000 配备 24 个 SAS HD,采用 RAID 10 配置,将以大约 2 万美元的价格提供接近该速度。添加控制器和其他项目来构建 SAN 使我们的最高预算接近 3 万美元。
但在网上,我看到许多 SAS SSD 的速度都达到 80,000 IOPS+。这个期望现实吗?如果现实,那么购买 P2000 或类似的入门级 SAN 并在其中安装几个 SSD 现实吗?我们的数据库很小,总共只有几 TB。如果我们这样做,我们就会剩下钱来购买第二个 SAN 用于镜像/故障转移,这似乎是明智的。
答案1
我可以具体谈谈您想要实现的目标。老实说,我不会考虑将入门级 HP P2000/MSA2000 用于您的目的。
这些设备有很多限制,从 SAN 功能集的角度来看,它们只不过是一盒磁盘。没有分层,没有智能缓存,最多 16 个磁盘虚拟磁盘组,低 IOPS 能力,SSD 支持不佳,(尤其是在您选择的设备上)。
你需要加强HP MSA2040看到任何性能优势或官方支持使用 SSD。另外,您真的想使用 iSCSI 吗?
如果您可以容忍本地存储,DAS 可能是您的最佳选择。PCIe 闪存存储价格合理,但需要仔细规划容量。
您能详细说明一下您实际服务器的规格吗?品牌/型号等。
如果集群是必需的,另一个选择是使用 HP MSA2040 单元,但使用 SAS 单元而不是 iSCSI。这比其他型号更便宜,允许您连接 4-8 台服务器,提供低延迟和高吞吐量,并且仍然可以支持 SSD。即使使用光纤或 iSCSI 型号,此单元也会比您链接的单元提供更大的灵活性。
答案2
我对磁盘 IO 使用的经验法则是:
SATA 每主轴 75 IOP。
对于 FC/SAS,每主轴 150 IOP
SSD 每主轴 1500 IOP。
以及 IOP每个阵列还要考虑每 TB 的 IOP。如果使用 SATA + RAID6,每 TB 的 IOP 比率很差的情况并不罕见。这听起来可能不算多,但您经常会发现有人在阵列上发现了“可用空间”,并想使用它。人们通常会购买千兆字节并忽略 iops,而事实上大多数企业系统的情况恰恰相反。
然后添加 RAID 的写入惩罚成本:
- 2 表示 RAID1、RAID1+0
- RAID5 为 4(或 4)
- 6 代表 RAID6。
在适当的情况下,大型写入缓存可以部分缓解写入损失。如果您有大量连续写入 IO(如 DB 日志),则可以显著减少 RAID 5 和 6 上的写入损失。如果您可以写入完整的条带(例如每个主轴一个块),则无需读取即可计算奇偶校验。
假设有 8+2 RAID 6 组。在单次写入 IO 的正常操作中,您需要:
- 阅读“已更新”的块。
- 读取第一个奇偶校验块
- 读取第二个奇偶校验块
- 重新计算奇偶校验。
- 写入全部 3 个。(6 个 IO)。
使用缓存的完整条带写入(例如 8 个连续的“块”,大小与 RAID 条带相同),您可以计算整个条带的奇偶校验,而无需读取。因此,您只需要 10 次写入 - 每个数据一次,奇偶校验两次。
这会使您的写入惩罚达到 1.2。
您还需要记住,写入 IO 很容易缓存 - 您不需要立即将其写入磁盘。它在软时间约束下运行 - 只要您的传入写入平均不超过主轴速度,它就能够以“缓存速度”运行。
另一方面,读取 IO 受到严格的时间限制 - 在数据被提取之前,您无法完成读取。此时,读取缓存和缓存加载算法变得很重要 - 可预测的读取模式(例如,从备份中获得的顺序读取)可以预测和预取,但随机读取模式则不能。
对于数据库,我通常建议您假设:
您的大多数“数据库”IO 都是随机读取的。(例如,不利于随机访问)。如果您可以负担得起开销,RAID1+0 是不错的选择 - 因为镜像磁盘提供了两个读取源。
大多数“日志”IO 都是顺序写入。(例如,有利于缓存,并且与许多 DBA 建议的相反,您可能想要 RAID50 而不是 RAID10)。
两者的比例很难说。取决于数据库做什么。
因为随机读取 IO 是缓存的最坏情况,所以 SSD 才真正发挥作用 - 很多制造商不费心缓存 SSD,因为速度差不多。因此,特别是对于临时数据库和索引等内容,SSD 的投资回报率很高。
答案3
你的分析非常正确。
使用少量 HDD 来处理大量 GB,使用大量 HDD 来处理少量 IOP。
使用少量 SSD 来处理大量 IOP,使用大量 SSD 来处理少量 GB
对你来说,哪个更重要?空间是 SSD 解决方案的主要成本驱动因素,因为每 GB 的价格要高得多。如果你说的是 200GB 数据库需要 4K IOP,那么一对 SSD 就可以满足你的需求。或者 24 个 15K 驱动器的磁盘阵列,为你留下大量空间用于批量存储。
这些 SSD 的实际 IOps 数量因存储基础设施而异(ewwhite 将对此进行详细说明),但获得这些速度是合理的。尤其是使用 Raid10 时,其中不计算奇偶校验。
答案4
我最近为我的雇主构建了一对存储服务器,使用 Dell C2100 机箱,运行 FreeBSD 10.1,配备十二个 2TB 7200rpm Western Digital“SE”企业级 SATA 驱动器。这些驱动器位于一个 ZFS 池中,该池由两个 6 驱动器 RAIDZ-2 虚拟设备 (vdev) 组成。连接到池的是一对 Intel DC S3500 SSD,它们具有超级电容保护,可防止断电,它们既用作 SLOG 又用作 L2ARC。通过 iSCSI 对该服务器进行负载测试,我能够达到 7500-8200 IOPS。我们的总成本(包括硬盘)约为每台服务器 2700 美元。
在这些基于 BSD 的系统运行期间,我们的一台 HP MSA2012i SAN 单元经历了两次控制器故障,而我们的另一台 MSA2012i 单元损坏了一个大型 NTFS 卷,需要 12 小时的停机时间才能修复。
戴尔和惠普向您出售 10% 的硬件和 90% 的支持承诺,但您最终永远无法利用这些支持。