Tell me more ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I was wondering if there will be any noticeable difference in read and write performance (99% read, 1% write) between the 2 approaches. The server would be pushing 1-3Gbit.

The stripe size is 2MB and most files are way over that (50-500MB).

Data integrity isn't an issue as the server would have a shadow copy of all the data, but the upside of separate disk approach is that if a drive fails, only a small portion of the data will need to be copied from the shadow server, instead of the whole array (which is several terabytes).

share|improve this question

4 Answers

up vote 4 down vote accepted

Easy answer: benchmark it. Trying to guess at your exact access patterns and workload and then applying existing experience in different environments is a poor substitute for just trying it and seeing what happens.

share|improve this answer
No real way I could benchmark it other than putting a server into production and seeing how it performs, except that will take a week of prep, copying, and code changes. – k1lljoy May 13 '12 at 11:35
You would expect RAID0 to perform better because it will more evenly distribute the read load over the available spindles. But whether that benefit is worth the cost -- you can't tell without measuring – David Schwartz May 13 '12 at 11:36
Any rough estimate how great the difference will be? – k1lljoy May 13 '12 at 11:41
2  
@k1lljoy: 5 billion % – Iain May 13 '12 at 14:08
Sounds good. Thanks! – k1lljoy May 13 '12 at 20:41
show 1 more comment

Well, since you're having 99% reads, why not go for RAID1? Any modern RAID controller/software RAID will stripe the reads from the number of spindles you have with copies of the data.

This would of course imply that you have to recreate the whole array if both disks die.. But honestly, re-creating an array with a hot spare should take way less time than going offline to rebuild the whole thing with a new disk.

Separate disks in not any kind of raid could provide similar performance of RAID0, as long as you're very careful to distribute the load evenly on each disk.

share|improve this answer
Load is distributed evenly, and there are 12-24 disks in each server, so raid1 doesn't really apply here. Currently raid6 is used, but there are many downsides to it. – k1lljoy May 13 '12 at 11:56
RAID-6 has slower disk writes and is better than RAID-1 for high no. of reads. – gekkz May 13 '12 at 12:12
@gekkz, sure it's way better. The more spindles you have the more is RAID read bandwidth gain. – poige May 13 '12 at 12:14
The benefit of raid is that you'll never be able to push a single stream faster than a single disk can go unless you group the drives. That said, even if you have good backups, raid-0 is usually a bad idea because a simple disk failure will force you to take an outage while you recover. – Basil May 14 '12 at 16:04
The user says he does not need reliability, so RAID0 is a lot cheaper... – samsmith May 15 '12 at 2:48

You mentioned you're using RAID-6 now, which I assume is Linux Software RAID (aka MD). I suggest you stick with RAID-5/6 instead and put on top of it LVM-2 and XFS. XFS had always been rocking for concurrent writes pattern and with it's new delaylog option it pushes other FSes off road. :) All you need is to increase stripe-write RAID-5/6's cache size and your sustained bandwidth should be ok.

Such a setup also would be much easier to maintain, since there wouldn't be 12—24 different FSes with their own size limits, which you would have to deal with. But in case your application would handle it gracefully w/o maintenance overhead/headaches, it's would be the first thing to try, I think.

If you can afford RAID-10 (losing just one more disk in a name of date safety matter and saving RAM from stripe-write cache), this should be considered as well.

P. S. And for your task stripe size of 4MB is quite ok.

share|improve this answer
Posting a link to a 50 minute youtube video is not really a useful reference :) Can you back it up with a written reference? That said, I agree that for the OP's 99% read workload, RAID-6 is perfect. – Jeremy May 14 '12 at 2:23

RAID 0 Striping will give the best read perf, and more disks = more perf. RAID 0 is striping, so the data is spanned across multiple disks. The read workload is then spread across disks. 3 disks can do 3x the read IOPs of 1 disk, and 10 disks can do 10x the IOPs, and with a hot controller you really do increase perf almost linearly as you add disks (the nature of the data itself can affect scaling).

Modern SATA-3 controllers will give you AMAZING performance: http://www.lsi.com/products/storagecomponents/Pages/6GBSATA_SASRAIDCards.aspx

Striping + Mirroring (RAID 10) gives you the read perf, plus write perf, plus reliability (at addl cost of lots more disks)

share|improve this answer
How does RAID0 give you better read performance (throughput/latency) than other raid levels? – pauska May 13 '12 at 19:15
You're still not answering my question - how does RAID0 increase read performance compared to other RAID levels? You've stated in your answer: "RAID 0 Striping will give the best read perf" – pauska May 14 '12 at 8:20
added / edited response – samsmith May 14 '12 at 14:25
2  
It still doesn't explain why RAID0 should give any better read performance than any of the other RAID levels. The reason I'm asking is because that RAID0 does not give any better performance than RAID1/5/6/10/50 etc.. – pauska May 14 '12 at 15:48

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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