4

As I'm reading production notes of mongodb I found that RAID0 is not recommended:

Most MongoDB deployments should use disks backed by RAID-10. Avoid RAID-0 with MongoDB deployments. While RAID-0 provides good write performance, it also provides limited availability and can lead to reduced performance on read operations, particularly when using Amazon’s EBS volumes.

Question 1: As to my understanding, in a distributed system failure should be considered as an ordinary state. Then why would i care about the failure of one node? (I mean in a replica set)

Question 2: Shouldn't RAID0 provide good performance for both read and write? Why does it lead to reduced performance on read operations, any special reason?

6
  • Part of the quoted block there does read "most". So I would suppose if you are accepting replica set members going down that is part of the equation. 2 seems a bit of a "shot in a hat". Depending on the available controller configuration and channels, surely RAID-10 could double the read performance of a RAID-0 by being able to utilize the mirror disks as well. The EBS warning is from gathered experience. Just a few observations. But someone else might have something more definitive to an answer.
    – Neil Lunn
    Mar 6, 2015 at 10:08
  • @NeilLunn I'm just curious about why RAID-0 should be avoided. It seems like failure doesn't make it a big problem as long as I have a replica set. while if the reduced performance is about compare to RAID-10, this doesn't make it a bad choice either. I mean at least we got better performance than single disk, and we save our cost. BTW the post in stackoverflow is gone.
    – yaoxing
    Mar 6, 2015 at 10:30
  • I'm just adding the "dot points" in case either you or others missed the basics. There should be video around somewhere where Adam Commerford (hope I spelled that right) of MongoDB gives a good talk on "The cost of downtime". It should be part of the M202 (?) series, I think! That is usually mostly what deployment costs are about.
    – Neil Lunn
    Mar 6, 2015 at 10:35
  • 1
    I don't agree with your assumption in question 1. Each node in a distributed system should be made as reliable as possible, constrained by your budget. Mar 6, 2015 at 11:48
  • @NeilLunn I totally understand the importance of availability. I actually have the goal to keep our system uptime more than 99.93%. however, in a real world we usually have limited budget. that's why I'm asking this question and trying to find out every possibility to reduce our cost.
    – yaoxing
    Mar 8, 2015 at 7:37

1 Answer 1

1

Question 1: The answer here is yes and no. In a replica set if your PRIMARY fails one of your SECONDARIES will take charge. If all CRUD statements have replicated from PRI to SEC when your disk crash then you are fine. But in case that some statements are not (replication lag) and your disk crash you will lose those statements. If you can handle that loss RAID 0 will work for you. Additionally on a 3-member replica set when you have one disk fault on a node you must replace it asap else you are not in a safe state.

Question 2: I don't have a clear answer to that. I think you should investigate the level of read concurrency between RAID0 and RAID10. Also don't believe that for small-medium workloads will have noticeable differences.

5
  • Question 1: I got your point. Reasonable. Question 2: to my understanding reduced performance is talking about comparing to single disk. that's what confused me because every article says RAID0 gains better performance than single disk. I was thinking there might be special reasons lead to this result
    – yaoxing
    Mar 8, 2015 at 7:38
  • I suggest to open a Jira ticket to mongoDB regarding that documentation (jira.mongodb.org)
    – Antonios
    Mar 8, 2015 at 18:55
  • Worth trying. I created a issue there DOCS-4944
    – yaoxing
    Mar 9, 2015 at 1:24
  • 1
    You got a vote from me!
    – Antonios
    Mar 9, 2015 at 11:55
  • They don't seem to be answering, maybe because it's not so urgent. Anyway thanks for the answer. I'll mark this one as accepted answer.
    – yaoxing
    Mar 18, 2015 at 1:37

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.