Tuesday, September 8, 2009

SSD disks... Bah!

SSD disks seems to be the hot and cool new disk technology. And I have to admit I don't understand why this is so hot. I think it's useful alright, but really, putting an ancient block level interface that dates back to the 1970's or so, to access a persistent, random access and fast media just seems backwards to me. Why? Because by doing this, we retain compatability with that old block-level access of course, but we loose performance and we loose random access.
Properly used, flash based memory should provide fast, persistent random-access memory, that is the promise of the technology, right? Any many seems copncered with what filesystem to use on SSD disks? Hey, com on, it's just like RAM! Slower, yes, by persistent. I don't need blcok level access, it doesn't help and the interfaces are inherently slow. And if the underlying media is random access, why, for heavens sake why?

Yes, I know there are a few issues to solve with Flash storage still, and that it will eventually "burn-out", but it seems like those problems are being worked on and a much smaller than what they used to be.

No, I don't want an SSD optimized filesystem, but I don't want to access flash over a serialized stoarge anyway! Can we instead have a standardized means of accessing flash as it should be accessed: Random access! Persistent! SSD is just a stop-gap solution for the real thing, in my mind. And yes, I understand that things take a while to develop. And yes, I understand that compatability with older equipment, hardware and OSes are a good thing. But the real McCoy here is, hey, you gessed it, a means of random access to flash! The issues with erasing flash should also be possible to solve, probably in software. So we probably need a software layer here.

Maybe we should be virtualizing RAM to flash. Maybe we should add some new interface for a "persistent malloc". Maybe applications should not need to be Flash aware (I think they should, as only the application knows what data needs persistence and what does not). But in any case, applications should be able to access Flash as true Random access, although I do understand that there are limites to this in terms of erasing. That is the problem I want fixed, not a new filesystem!

In a database, putting the transaction log on flash should be great, for example, but there are many more uses. Can we see a Flash based MySQL Storage Engine. No, not one optimized for SSD, one that accesses Flash directly!

But SSD's should, in my mind, should eventually be gone. Which is not the same thing as it will happen. We used the silly IDE interface for way too long, for example.



Unknown said...

Yes, its not the optimal way of doing things with flash. But if the messed up way we can easily use it with existing storage engines, file systems and applications is signifigantly faster than continuing to use rotational disk media, then its better and should be used. Incremental improvement is easier to adapt to.

Unknown said...


I think Intel is trying to do what you are asking for. I just hope this comment makes it, as I can't understand the blogger language :)

Fred Blasdel said...

What you propose already exists -- the flash-specific hardware interface is called MTD. It's widely used in embedded devices, including almost every little home router device.

Unfortunately it sucks for anything else -- you have to do all wear-leveling purely in software, and you have to somehow wear-level the wear-leveling information as you store it.

NAND storage is only random access for reads -- writes must always be done a full page at a time -- extremely expensive for small writes.

Arnab Nandi said...

"In a database, putting the transaction log on flash should be great, for example, but there are many more uses. Can we see a Flash based MySQL Storage Engine. No, not one optimized for SSD, one that accesses Flash directly!"

From http://www.rethinkdb.com/ :

Solid-state drives provide fast random reads, enabling append-only storage technology. We use elegant and simple algorithms to deliver amazing features and performance that is up to ten times faster than existing databases.

Unknown said...


Tanx for sommenting. And yes, I know it exists. But there should be a way to orgainze writes in such a way so that we could make that look like random access, even if it is not. Maybe wasting some stoarge space, but I don't see that as an issue, if the win in performance is big enough.
Biút even if not: If we just cannot do writes in random, and making that happen in some abstract layer, then can we at least expose THAT in some layer.
And as you say, technologies and interfaces ARE there, but not for any wide general use... Can we have that please, instead of block access through a 1950's style block based I/O system.
Anyway, thanx for the input, I have a few things to investigate now!