他们似乎只谈论性能,但我认为与其他混合 RAID 类型相比情况并非如此。
看这里:http://www.mongodb.org/display/DOCS/Amazon+EC2#AmazonEC2-EBSvs.LocalDrives
答案1
你在问什么——“为什么 MongoDB 推荐 EBS 而不是本地磁盘”或“为什么 MongoDB 推荐 RAID-10 而不是单个 EBS?” 我认为你给出的链接已经很好地回答了这两个问题,但回顾一下:
- EBS 与本地磁盘:如果您希望 MongoDB 数据在实例崩溃或重启后仍然存在,那么这是理所当然的。实例崩溃或重启后,本地磁盘也会消失。
- EBS 的 RAID-10:简而言之,EBS 性能令人震惊地差(更糟糕的是,不稳定)。RAID-10 至少将负载分散到许多卷上。
编辑:那么,还有第三个问题。评论中的链接所链接的实际基准测试数据已消失,因此我们只有评论,但我认为这是一个糟糕的基准测试,因为所涉及的逻辑是错误的。不同 RAID 级别所需的每块 I/O 如下:
- RAID1:跨 N 个磁盘进行 N 次写入
- RAID5:N-2 次读取(收集条带中现有的、未更改的数据 - 如果幸运的话,可能会缓存),跨 N 个磁盘进行 2 次写入
- RAID10:跨 N 个磁盘进行 2 次写入
我无法解释为什么基准测试会得到这样的结果,因为数据已经丢失但我的猜测是,没有进行足够的测试来消除测试共享资源时固有的可变性。我以前为 Heroku 做了很多这样的工作,随着时间的推移(以及随着数量的变化),运行的可变性令人震惊。
至于您引用的维基百科文章,它在这种情况下是无关紧要的,因为它全是关于高端 SAN 设备中的 RAID-5;您在虚拟机内部执行 RAID-5,而虚拟机缺乏使“奇偶校验重新计算和重新分配的任务 [...] 作为对主机透明的后端过程执行”的能力 - 以及“大型 SAN”和“软件 RAID”之间的各种其他差异。
答案2
10gen 不久前举办了一场网络研讨会,专门讨论在 AWS 上使用 MongoDB。它处理了两个问题:(1) 性能和 (2) 容错能力,因为最近 AWS 在单个可用区内发生了多日中断。他们的解决方案是跨多个节点的 RAID 10。
我建议你看一下幻灯片,因为它们比我在 SF 帖子中的解释要好得多。
http://www.10gen.com/presentations/mongodb-austin/2012/mongodb-on-amazon-ec2 http://www.10gen.com/presentations/webinar-best-practices-mongodb-aws