1752806 Members
5811 Online
108789 Solutions
New Discussion юеВ

strip array

 
Robert Binkley
Advisor

strip array

Hello Admins
Sorry to be getting of the point of the list.
I am working on my master thesis.


Configuration: 20 Gb Logical Volume, 4 Separate Disks, 1 Meg Stripe Size, Each on separate
controllers
1) What happens for a data request read, 8k, that resides on Disk 3?
I l think the read will generate a 1Meg stripe from each disk, assembled by the Unix OS into a 4 Meg I/O request and loaded into the Unix Page Buffer. This would seem plausible if the minimal write fragment for the Logical volume was 4 Meg, but it seems there would be a lot of wasted space. Would the system be able just to retrieve the 8k?

2) What happens for a data request write, 8k to update info on Disk 3?
I think it touches each drive. But what is actually written? Does the Unix OS need the entire corresponding stripe to be in the buffer to
write to the Logical volume. If so, does that mean that an 8k update to a striped volume requires the entire stripe to be in the page cache, then
for the 8K portion to be updated, and then the entire stripe written back to disk.
3) What happens for a data request write, 40M to write a file to the stripe?
I think the data is separated during the File IO for parallel writes across controllers to all disks simultaneously.
4) Are all I/O request sequential to the Logical Volume as a whole or can
the I/O be performed in parallel accessing separate drives simultaneously
if separate I/O requests can be satisifed separate drives?
I think the Logical volume is access sequentially for reads and writes.
5 REPLIES 5
Shahul
Esteemed Contributor

Re: strip array

Hi

I am not very much thru in strp array, But these much I can tell U that, If U are dealing with small file sizes it is better to have small strip size.

Best of luck

Shahul
David Navarro
Respected Contributor

Re: strip array

Hi, I can help you with first question. You can create a logical volume with -I and -i options, one is for specify nimber of disks for stripping and the other is for specify block size of strip, I think you can use 8.

Good Luck
Vincent Fleming
Honored Contributor

Re: strip array

Hi;

The LVM works just as you would expect - yes, all these things have been thought of before, and optimizations have been made. 10 years ago, these questions were being asked.

The stripe size is not the minimum block size for the logical volume (aka "device" - it acts like a disk). The minimum block size is 512 bytes - the blocking factor for the disks themselves.

Filesystems impose their own minimum block size (typically 8K), but this is independent of the volume's or disk's blocksize - but would always be a multiple of the disks' blocksize. So, no it doesn't read the entire stripe to get just 8k of it. The only time it would read (or write) more than you ask for is if you asked for less than the minimum blocksize. (say, 128 bytes - it would have to read a full 512 bytes) Small writes like this are done in a read/modify/write fashion, as it always has since the beginning of time.

Reads and writes to different drives are indeed performed at the same time - otherwise, why stripe at all? There would be no performance benefit unless you could do I/O to more than one drive at a time.

For a really detailed description of striping and other RAID levels, get a copy of "The RAID Book", from the RAID Advisory Board (www.raid-advisory.com), which has excellent, very detailed descriptions of how all this is done, and what optimizations have been applied to increase performance and data security.

Good luck.
No matter where you go, there you are.
A. Clay Stephenson
Acclaimed Contributor

Re: strip array

Hi Robert,

You are basically mistaken on every count but that's okay. My favorite answer is to ask the box itself.
A formula for a real dog is to require that one read 4MB to actually read 8KB. While your model might make sense for sequential i/o it certainly makes no sense for random i/o. In any event, your stripe size is really much too big.

I suggest that you actually do this test yourself though if you don't have the hardware
for four separate disks you could make a volume group with only two disks and only one controller and watch the winky-blinky LED's.

You then set up a logical volume with say 8k stripes. I suggest that you do reads/writes such that they only fall on one disk. I also suggest that you write to the raw LVM devices as the UNIX buffers really don't enter into this part of the discussion. You will find that only one of your disks in the volume group is actually hit.

You should also be aware that the extent/stripe size has nothing to do with the filesystem blocksize though choosing blocksizes which could span stripes could hamper performance. Generally, you choose a stripe size that is some multiple of the filesystem block size. VxFS filesystem prefer i/o transfers in blocks of 64K; a good feature of VxFS is that a file can occupy 1K even though I/O is occurring in 64K chunks.

4) The I/O's are queued by the OS sequentially
but not necessarily processed by the underlying disk subsystems in strict order. You have some control over that by asserting the O_SYNC mode flag bit.

Regards, Clay
If it ain't broke, I can fix that.
Sanjay_6
Honored Contributor

Re: strip array

Hi Robert,

The whole thing went above my head. I couldn't read beyond a couple of lines. Do you need any help ?. Can we help you ?.

Thanks