Things that can done in a RAID server ( from a Graduate level Project perspective )

abhaybhegde

Member
Jun 13, 2007
26
0
0
Hi all.

I intend to do an Academic project based on RAID technology. The basic idea is to implement RAID 0 ,1 ,5 on my College Intranet server.

I am thinking of doing this project from an Industry perspective so that it can be helpful in building my Resume .

What generally are the roles of a Storage Engineer in the Industry. ?

Perhaps anyone who has experience in this field can share some ideas

Best Regards
 

Red Squirrel

No Lifer
May 24, 2003
70,651
13,831
126
www.anyf.ca
Raid 0 is good for temporary storage where cheap and/or fast disk space is needed. I've personally never seen it in the enterprise but I'm sure some companies may use it for non critical stuff. For example if you have a box that is used only to packet sniff, then you might have a huge raid 0 array. You do a capture, analyze the data, then dump it. If a disk fails it's not really a huge deal compared to if there is production uptime sensitive data stored there.

Raid 1 is often used for the OS, and raid 5 for data. Raid5 gives more disk space for your buck, while raid 1 is more simplified, and I think the read performance is better.
 

Brovane

Diamond Member
Dec 18, 2001
6,392
2,582
136
Hi all.

I intend to do an Academic project based on RAID technology. The basic idea is to implement RAID 0 ,1 ,5 on my College Intranet server.

I am thinking of doing this project from an Industry perspective so that it can be helpful in building my Resume .

What generally are the roles of a Storage Engineer in the Industry. ?

Perhaps anyone who has experience in this field can share some ideas

Best Regards

I will take a jab at this. I manage about over 100+ servers both physical and virtual. I also manage a Dell CX3-40 SAN.

Usually when we build a server box. The OS drive is RAID 1. For example if you have a Dell PE 710R which is a 2U box. You could have 2x73GB Disks as RAID 1 and you load the OS there. Then if you have 4x300GB Disks you would do RAID 5 for general storage. For example just a simple SQL server. However with this setup is not really optimized for IO.

If you are doing it right you would make the Server SAN connected. So the Server just has 2xHard Disk for RAID1 and the OS. You then have HBA cards in the server then they connect the server into a SAN. If you wanted to you could also do iSCSI using the network cards. Really from my experience more and more storage is being put off the server box onto a system like iSCSI SAN or Fiber Channel SAN.

The only time I have used RAID 0 is on a SAN for backup disks. For example I am dumping data from primary storage to secondary storage and then I will come along with tape and backup the data. I would use RAID 0 since it doesn't matter if I lose the data because I can always get it again from primary storage. The good thing about RAID 0 is it is fast. That is why I prefer RAID 0+1 if I have the storage capacity. Most of my SQL servers for the Data Disks are sitting on 0+1 storage for high IO. The problem is with RAID 5 and a production SQL server is that as soon as you loose a disk you kill performance until the rebuilt has been completed.
 

mv2devnull

Golden Member
Apr 13, 2010
1,532
162
106
And there is always the chance that a second disk error occurs on RAID5 before its rebuild is complete.

Aligning data to match the striping of the array is naturally important for the performance.


But what is "academic" in such project? Aren't the procedures available on the Best Practises guides of the industry already?
 

pitz

Senior member
Feb 11, 2010
461
0
0
Setting up RAID is trivial.

What would be interesting, from a coding perspective, would be to optimize RAID code (ie: the Linux md driver), so that it can more efficiently use the drives.

For instance, the current md driver, in a RAID-1 configuration, will only send a single read request to one of the drives in the set, alternating back and forth between drives. Yes, the interleaving improves throughout, but does not improve latency.

A useful coding modification of the md driver might be to build a system that will send a single read request to N disks in the mirrored array, and then simply discard (or cancel, as in, delete from the NCQ/TCQ) requests that are no longer needed.

I assume you want something to do as your M.Sc. thesis, correct? This would be a good project, and would improve the usability of Linux software RAID. Similar could be done on a RAID-5 array, to wit: you could request all data bits and parity bits for a particular read, and, if, the parity and just a small portion of the data shows up first -- simply do the XOR reconstruction on-the-fly, and return the completed blocks. This, too, isn't implemented in the Linux md driver either.

Good luck! PM me if you're good at C/ASM and I can maybe give you some more architectural concepts for optimizations to the existing Linux RAID code if you want.
 

Kenazo

Lifer
Sep 15, 2000
10,429
1
81
There's also raid6 which is interesting, but I never really seen it in use. It's basically raid 5 but with another parity disk. you can lose up to 2 disks, instead of just one. It only makes sense to do it with 5+ hard drives.

Oh and this is actually a really good read on raid:

http://en.wikipedia.org/wiki/Standard_RAID_levels

After recently losing a RAID 5 on a rebuild we've now gone to RAID 6 with 5 136gig SAS drives for our data storage on a new Windows 2008 R2 remote desktop server. We can now lose three drives before we're FUBAR'd.
 

pjkenned

Senior member
Jan 14, 2008
630
0
71
www.servethehome.com
Setting up RAID is trivial.

I wholeheartedly agree. For a graduate level project, you really want to pioneer something. If you improved Linux's raid 5/6 implementation, you would have a great paying job in about a second. Employers like to see you have produced something commercially viable.

On raid 5/6. With larger disk capacities raid 5 is really scary. I've seen more than one incident involving people pulling the wrong "failed" disk for whatever reason. I've done something similar however it was on a raid 6 array so it was not a big deal (the hotspare had already been rebuilding so there was a lot of disk activity). I have moved to raid 6 and raid 1 almost exclusively now.

Another thought is to do something to improve caching with software raid using SSD's, and if possible get a grant to buy ram drives for a three tier storage solution. The big storage vendors are all integrating solid state storage in their solutions.
 

pitz

Senior member
Feb 11, 2010
461
0
0
Yeah no kidding, upon further research, the Linux md code mostly hasn't been touched since before the time of SATA, or widespread/commonplace NCQ. It never was great code, in the first place, for taking advantage of SCSI's TCQ (I'd go as far to suggest that Linux's SCSI layer is somewhat braindead). Optimizations along those lines certainly would be very valuable insofar as improving database performance on Linux machines that use software RAID.

:)
 
Last edited:

pitz

Senior member
Feb 11, 2010
461
0
0
RAID 0 is never used on an actual server.

Used to see it a lot on Usenet servers (remember those things?). Fairly unimportant if someone's porno alt.binary.* newsgroups got wiped out, so it was a good solution for both the space demands of a full Usenet feed, as well as the sheer amount of I/O and relatively small transactions that were inherent in taking a full Usenet feed.

But yeah these days, the only times its seen on a 'server' is when someone's needs a massive amount of space in /tmp to run a scientific application that has a lot of intermediate steps that require hard I/O (for instance, I have written apps that did this for spectral analysis of hundreds of years of climate data), in which case, the RAID0 is helpful in providing the I/O prowess necessary (although the completed datasets certainly were stored on properly redundant storage).
 

mv2devnull

Golden Member
Apr 13, 2010
1,532
162
106
Usenet servers were partial mirrors of each other, were they not? So Usenet was kind of RAID 0+1.

It is very clear in storage that "one size does not fit all".

There is more than just the md code. The dmraid and the LVM2 do scare the innocent too.
 

Voo

Golden Member
Feb 27, 2009
1,684
0
76
Setting up RAID is trivial.

What would be interesting, from a coding perspective, would be to optimize RAID code (ie: the Linux md driver), so that it can more efficiently use the drives.

For instance, the current md driver, in a RAID-1 configuration, will only send a single read request to one of the drives in the set, alternating back and forth between drives. Yes, the interleaving improves throughout, but does not improve latency.

A useful coding modification of the md driver might be to build a system that will send a single read request to N disks in the mirrored array, and then simply discard (or cancel, as in, delete from the NCQ/TCQ) requests that are no longer needed.

I assume you want something to do as your M.Sc. thesis, correct? This would be a good project, and would improve the usability of Linux software RAID. Similar could be done on a RAID-5 array, to wit: you could request all data bits and parity bits for a particular read, and, if, the parity and just a small portion of the data shows up first -- simply do the XOR reconstruction on-the-fly, and return the completed blocks. This, too, isn't implemented in the Linux md driver either.

Good luck! PM me if you're good at C/ASM and I can maybe give you some more architectural concepts for optimizations to the existing Linux RAID code if you want.
Ok I'm not writting a thesis atm, but that sounds like a fun project nevertheless.. ahh too much interesting stuff floating around ;)
 

pitz

Senior member
Feb 11, 2010
461
0
0
Ok I'm not writting a thesis atm, but that sounds like a fun project nevertheless.. ahh too much interesting stuff floating around ;)

Yeah, in addition to implementing above, likely, a huge part of the problem could be working around the abstraction or API of the low level device drivers (ie: the SCSI drivers), and the md driver. Just looking at the code, its not apparent that one could just implement such with modifications in the md code alone.

Of course, one would have to sell the community on accepting changes to what has been a very successful part of Linux, and that has been, an extremely stable base of disk I/O code and RAID functionality, in favour of something new which is not quite as field-proven. The fact that a code update hasn't been done since 2000 roughly, could be offered as proof that the Linux community feels there is little to be gained with 'tinkering with success'.
 

Brovane

Diamond Member
Dec 18, 2001
6,392
2,582
136
After recently losing a RAID 5 on a rebuild we've now gone to RAID 6 with 5 136gig SAS drives for our data storage on a new Windows 2008 R2 remote desktop server. We can now lose three drives before we're FUBAR'd.

From a SAN perspective I have never seen a double drive failure on a RAID 5 group. Where I work we have had a SAN since 1999 and this has never happened. I looked at doing RAID 6 since our SAN will support. However I decided it wasn't worth it. From the SAN perspective usually by the time we receive a replacement drive from Dell on 4-hour parts the rebuild process has been completed from the Hot Spare, so the RAID 5 array isn't even degraded anymore. The failed drive has a orange light. it is a simple process to pull the bad drive and then put in the replacement. The Hot Spare then sync's with the replacement drive and the RAID array is full restored and the Hot Spare is available again for another drive failure.