Flash disks and FFS layout heuristics
Matthew Dillon
dillon at apollo.backplane.com
Mon Mar 31 13:06:30 PDT 2008
:You've talked yourself into pretty much the same mistake that led to
:jffs2, which turned out to be a terrible idea.
I'm not familiar with jffs2 but a blockmap abstraction in of itself
just doesn't have the terrible characteristics you are implying.
The implementations might have been bad but the concept is quite sound.
Here's a question. Ok so the best write performance is to essentially
append to the NAND device. That's fairly obvious though as long as you
are able to fully complete a page it doesn't really matter where the
data goes. So the main issue is being able to complete a page (since
you can't rewrite it).
But how do you index that information? You can't simply append the
information to the NAND unless you also have a way to access it. So
does the filesystem have to scan the NAND (or significant portions of it)
in order to build an index of the filesystem topology in system memory?
No matter what you do you have to index the information *SOMEWHERE*.
That somewhere is either going to be in-NAND or in-memory or some
combination of the two. If it is entirely in-memory you have to scan
the auxillary information in nearly the entire NAND array to build
your index. If it is entirely in-NAND you have a significant updating
problem.
A named-block model, done right, can serve as the index. That is, it
is exactly the same problem just viewed from a different angle.
A named-block model does not necessarily imply that the indexing
topology has to be stored entirely in-NAND, it does not imply any sort
of linear array, and it does not imply any random-updating requirement.
I don't know what the jffs2 folks did but you shouldn't take their
performance failure as an indication that the general concept is
incorrect.
-Matt
More information about the freebsd-arch
mailing list