Fog Creek Software
Discussion Board




pseudo-RAID on a single drive?

I understand RAID uses two drives in parallel to double the throughput.

What's to stop a single drive being used that way? After all, any drive has more than one head, and just using the two heads on the same platter in parallel would double the throughput. Not to mention using four heads, and so on.

Why has this never been done? Is this a bandwidth limitation in the hard drive controller?

Alex.ro
Sunday, December 28, 2003

Wow ...

Mitch & Murray (from downtown)
Sunday, December 28, 2003

This question is discussed in depth at http://www.storagereview.com/

I think it's in the FAQ.

MX
Sunday, December 28, 2003

The FAQ question "Why has no one made a drive with internal RAID 0?" is answered at:

http://www.storagereview.com/php/tiki/tiki-index.php?page=InternalRAID0

MX
Sunday, December 28, 2003

Hm. They don't mention the first reason I thought of:

A single drive cannot, by definition, be a RAID - every single word in the acronym defines more than a single drive.

Having said that, then the other reason for trying to "RAIDify" a single drive would be to deliver performance, and obviously drive manufacturers think there are better ways of doing that (SATA, increased drive velocity, increased data density)

Philo

Philo
Sunday, December 28, 2003

I know that this is totally out of left field...

Back in the day, Netware beat the pants off of all other NOSes because of its drive geometry aware disk device driver.

The idea was that Netware would sort sector requests in such a way as to minimize drive head movement and maximize the number of platters involved. While this might mean that the sectors asked for might be returned in a different order, the overall performance was *much* better.

This sounds akin to what an internal RAID would accomplish for performance. On modern hardware, it's almost impossible to achieve these kind of performance increases because just about all drives lie about their geometry.

Mark Smith
Sunday, December 28, 2003

This feature of Netware was called elevator seeking, right?

MX
Sunday, December 28, 2003

Yup, I think so.

Mark Smith
Sunday, December 28, 2003

The current bottleneck is not the amount of data that can be read off the platters per unit of time.

The current bottleneck is the speed of transfer between the hard drive and the motherboard. This is why people start to foam at the mouth every time a newer high speed version of SCSI is announced.

Until the current bottleneck is removed, there is no point in reading from or writing to multiple platters at the same time.

jim
Monday, December 29, 2003

bzzt!

Ultra ATA/133 is 133MB/sec. PCI is 133MB/sec

Now let's see if I can do this right...

A WD Caviar drive has sixteen heads, 63 sectors/track, 512bytes/sector, and spins at 7200 rpm.

So that means that every second,
16*63*512*7200/60=62MB of data pass underneath the heads.

Can't pump data *anywhere* faster than it goes under the heads.

Philo

Philo
Monday, December 29, 2003

The solution thus far has been larger caches on the drives themselves. In that way you can spike and fill the bandwidth by pulling the data from the cache instead of from the drive.

It requires anticipating where you're going to pull the data from though, and that's never really accurate. They make a best guess and hope.

Brad Wilson (dotnetguy.techieswithcats.com)
Monday, December 29, 2003

Since the drive is already reading from multiple platters automatically, it's basically doing a "RAID-0-ish" thing already...  your data is "striped" across all of the platters.

Then again... is it?  Philo's math looks matches up fairly closely with current best-case throughput benchmarks I've seen, but the numbers also seem to assume a single head reading from a single platter...

John Rose
Monday, December 29, 2003

I may be wrong...

But don't all of the heads move together?

Steve Gibson ( http://www.grc.com ) of SpinRite fame has some information about drive mechanics over at http://www.grc.com/srdocs.htm

http://www.grc.com/files/technote.pdf is espcially interesting.

Mark Smith
Monday, December 29, 2003

"the numbers also seem to assume a single head reading from a single platter..."

This is one part I'm not sure about - the specs indicated "six physical heads, 16 logical heads"

Anyone know why a logical head isn't a physical head? I'm guessing there are actually three r/w surfaces per arm (6*3=18) with two tracks reserved for system use?

Philo

Philo
Monday, December 29, 2003

The heads move together, but only one data stream comes out at once. It doesn't read all the platter simultaneously.

Drives have "logical" views that different from the physical view, as I understand it, mostly because of BIOS geometry limitations.

Brad Wilson (dotnetguy.techieswithcats.com)
Monday, December 29, 2003

"The heads move together, but only one data stream comes out at once. It doesn't read all the platter simultaneously."
----------------------------

I think you're right, because otherwise we'd see an order-of-magnitude throughput difference between drives with differing numbers of platters.  (most drives on the market today have between 1 and 3 platters... I don't think there are any with 4...)

However, why *don't* they do it this way?

Maybe it's because a certain number of hard drive sectors are always marked as "bad", since no drive will ever have all their billions of sectors functioning perfectly.  If you did the "internal RAID" thing, if one sector failed, the drive would need to mark it as bad on all 2 or 3 platters.which I guess would really start cutting down on usable drive capacity...

John Rose
Monday, December 29, 2003

My understanding has always been that it is possible but expensive to make all track on all platters 'align' in the sense that the same track on all platters simultaneously under the head.

Therefore we have cheaper disks but every head may have its tracks slightly misaligned with the next head (given the density of tracks)

Huh?

Karel
Monday, December 29, 2003

Philo: so how come my fairly low-end 80GB drive gets 50MB/s?
62MB/16 is not even close. Even if you consider only 6 physical heads, it's still way short.

John Rose >> your data is "striped" across all of the platters.

That's probably the only explanation why we get these high throughput rates.

>>Maybe it's because a certain number of hard drive sectors are always marked as "bad"

If a bit in a byte is bad, the whole byte is bad, so just remap all eight (or whatever number) bits. How many bad sectors does a modern drive have, anyway? A few KBs worth.

That article hasn't convinced me, but then I'm ignorant. It says, track 1000 on one platter is not exactly in the same place as track 1000 on another. Well, if you format them at the *same time*, they will be. As for temperature variations, my ignorant guess is, try to work it out first before declaring it unfeasible.

Alex.ro
Monday, December 29, 2003

Logical (LBA) address != physical clynder/head/sector (CHS) address.

20 years ago, it did.  Controllers were given CHS addresses that actually corresponded to the geometry of the drive. At that time you needed to map out bad blocks by hand.

Today, the geometry of a hard drive is much more complex:

First, there are bitfield size limitations on the CHS values that are overflowed today.

Second, the number of sectors on a track is a function of the track number. Outer tracks have more sectors because there is more disk material to store data on.

Third, there are various ECC and redundancy methods built into the drives. A hard drive today typically has spare sectors on the SAME CYLINDER as the blocks they could potentially replace, so that hitting a bad block does not mean a seek penalty.

Given all of these complications, it's best to let the drive's controller work everything out, cache data to boot, and refer to the data using LBA addressing.

Modern low-end ATA hard drives today typically record on only 1-2 surfaces, there being only one platter. That's why the drives are so thin.

David Jones
Monday, December 29, 2003

Wouldn't using a single drive defeat much of the purpose of RAID? If that drive fails, you're going to have hell to try to recover the data.

T. Norman
Monday, December 29, 2003

"Philo: so how come my fairly low-end 80GB drive gets 50MB/s?
62MB/16 is not even close. Even if you consider only 6 physical heads, it's still way short."

I'm not sure what you're having problems with here, Alex - it's not "62MB/16" - the throughput is 62MB/sec at 7200rpm.

Your low-end drive is probably 5400rpm. 62MB/s * 5400/7200 = 46MB/sec.

This is why the only real factors in drive speed are rpm and cache. Everything else is really smoke and mirrors.

Philo

Philo
Monday, December 29, 2003

You were assuming 62MB/s with 16 heads reading simultaneously.

For all we know, only one head reads at any given time.

Hence my 62MB/16.

Alex.ro
Monday, December 29, 2003

Lolololol. Thanks. This discussion is the funniest thing I've read in a long time.

Jorel on Software
Tuesday, December 30, 2003

How come, Jorel? :)

Alex.ro
Tuesday, December 30, 2003

*  Recent Topics

*  Fog Creek Home