Disk Arrays
cancel
Showing results for 
Search instead for 
Did you mean: 

RAID EDUCATION

Chris Geier
Occasional Advisor

RAID EDUCATION

I am perplexed at some of the details of how raid works. I hope I can make this clear enough. I do not understand striping, and stripe size accross disks. Lets say for example I have a RAID 0 or 0+1 array. With 10 disks The stripe size is 128K. However my average IO is 16K. Since the IO is less than the stripe size it does not use all the disks. From what I can tell from the white papers it would only use one since the stripe size is more than the io. Is this the case? And if it is, what is being put on the other disks? anything? or are you only getting the theoretical through put of using 1 disk and thats what they mean in the whitepapers? Are their really good documents that explain some of this. I have been seeing some old ones on some university websites but I am still unlcear on once the data is actually queued to the contoller how the raid is actually done. given the above questions can someone help
9 REPLIES
Ranjith_5
Honored Contributor

Re: RAID EDUCATION

Hi Chris,

I atached a detailsed power point Presentation on Raid Systems.

Hope this helps.

Regards,
Syam
Chris Geier
Occasional Advisor

Re: RAID EDUCATION

Awesome information. However I am still unclear as to how the controller handles stripe size as it relates to io size. If my average IO size is 17KWrite and 8KRead but my stripe size is 128K. how does the raid contoller handle the disparity. Theoretically from what I have read, it would write it only to the first disk in the stipe set since the stripe size is greater than the IO size. Since it does this in a round robin type fashion, it would write that IO to the first disk, the next 17K IO to the next disk etc. So if you have smaller IOS than the stripe size you are not getting any benefit from the number of spindles. Correct? in raid 5 it would write that IO/stripe then calculate and write the parity which is why R5 is slower. For raid 10 it would write that stripe to the first disk then mirror it on the other set of striped disks.
Uwe Zessin
Honored Contributor

Re: RAID EDUCATION

Correct, you will not benefit from multiple spindles if you have a single, synchronous write stream with small I/Os. But that is not a typical I/O pattern for many servers.
.
Chris Geier
Occasional Advisor

Re: RAID EDUCATION

Things are starting become more clear with this.

As far as IO size after generating load with various test tools for some time. The average write is 8k the average read is 17K that at least is what Perfmon tells me. I am still working to research the SQL layer of this and how it contributes to the IO size. Oddly enough I would not expect the IO size to be that small since the most used rows in the DB are rows that contain a blob which should average 1.5MB in size. So I am now looking into how SQL passes datat to the next layer.
Ross Minkov
Esteemed Contributor

Re: RAID EDUCATION

Chris,

Why don't you just change the stripe size to a smaller value then? Most RAID controllers today have 64K or 128K as default, but also support 8K, 16K, 32K, ... all the way up to 256K.

Regards,
Ross
Iain Ashley
Trusted Contributor

Re: RAID EDUCATION

Hi Chris,
A lot of what you ask is dependant on the particular array that you are talking to. Also, is the stripe size that you are using configured from the O/S or on the array? Most arrays don't give you the option to change the stripe size as they make it irrelevant due to the use of cache. When you write to an array, your data will go into the cache and be written to the disk in the most efficient way when the cache becomes full. So I suspect you are talking about O/S configured striping, in which case I would tune your stripe to the default write size of your file system. HPUX using VxFS the default is 8k/write. So the best thing to do yould be to set your stripe size to 8k. It does not matter what the actual size of the total I/O is as it will be broken up into 8k chunks for writing to the file system. You can change the default to 16k if that fits your I/O profile better, so change your stripe size also.

Regards
Iain Ashley
Uwe Zessin
Honored Contributor

Re: RAID EDUCATION

You don't really want to work with that small chunk sizes on your array. Even if you set chunk size = I/O size, there is no guarantee that the I/O starts at the chunk's boundary - it depends on the file system layout. That means that the logical I/O will be split into two physical I/Os. Most arrays work with unsynchronized spindles. In that case the array must wait for the second disk until the data passes the head, too.

Guess what is faster - a full 8 or 16K transfer from a single disk drive or an additional wait, which, on average takes half the rotational delay (8 milliseconds for a 15k RPM disk).
.
Nidal Ali
Advisor

Re: RAID EDUCATION

Hi Chris,
you could know more about the RAID technologies through reading this Introduction to RAID Technology from the following web site:

http://www.utexas.edu/cc/vms/about/raid.html

Regards
Nidal Ali
Nidal Qashou
Ahmad_16
Occasional Visitor

Re: RAID EDUCATION

A complete answer of your questions could be found in the "RAIDBook" by St. Peter MN. Feb,1997. It is over a 300 pages and if you are new grad, you will find it very interesting.