USB drive on server?

John Austin ja at jaa.org.uk
Fri Oct 26 09:18:04 UTC 2007


> Blocks that have been freed in the filesystem are still static data as far 
> as the flash controller is concerned, unless the controller can understand 
> the FS metadata.  Yes, when they are reallocated by the FS, the controller 
> will be able to move that to another free flash block, freeing the old 
> block.  However, as long as they just sit unused by the FS, they are 
> unavailable to the flash controller for wear leveling unless "static" wear 
> leveling is used.  As I see it, the worst case is where the filesystem has 
> touched all the blocks that the controller makes visible and then one 
> single-block file (or the superblock) is constantly rewritten in place.  The 
> controller will only be able to wear level between that block and its 
> spare-block pool.
> 
> So the question is "how big is the spare-block pool"?
> 
> http://www.sandisk.com/Assets/File/OEM/WhitePapersAndBrochures/RS-MMC/WPaperWearLevelv1.0.pdf 
> was published by Sandisk 4 years ago.  Here's an early paragraph:
> 
> "Each memory chip is divided into blocks. A block is an array of memory 
> cells organized as
> sectors. The number of blocks and sectors vary from product to product. The 
> minimum unit for a
> write or read operation is a page (or sector). The minimum unit for an erase 
> operation is a block.
> Physical blocks are logically grouped into zones. For the current 
> technology, a typical zone size is
> 4 MB. However, this may change from product to product. Wear leveling is 
> done within a zone.
> The current firmware does not spread the wear across the capacity of the 
> card. Each zone has
> about 3% additional "spare blocks" beyond what is assigned to meet the 
> logical capacity of the
> flash card. This group of blocks is commonly referred to as the "Erase Pool"."
> 
> On the other hand, your Corsair PDF talks of a 2GB device having a write 
> page size of 2KB, an erase block size of 128KB (64 pages) and a leveling 
> management unit of 128MB (1024 blocks).  Unfortunately, it does not tell us 
> how many spare blocks are in a leveling unit.  I'll assume the 3% from 
> Sandisk and this gives us about 32 spare blocks.
> 
> Next, we have to ask what happens if only one page is changes in the block? 
> I'm going to assume the worst case that this causes the whole block to be 
> moved to a new block and the old one freed.  Corsair states that they use 
> SLC technology for 100,000 erase cycle life instead of MLC with 10,000 so I 
> will use this assumption.  (I have read specifications for other devices for 
> 10,000 cycle lifetime so I'd but that the cheaper devices d ouse MLC).
> 
> Ok, so assume that the superblock does get rewritten every 30 seconds (I do 
> not know this for a fact).  The lifetime of the wear management unit 
> containing the superblock is 32 * 100000 writes or 3 years.  OK, that may be 
> ok for you.  On the other hand, if the device uses MLC technology, devide by 
> 10 and you only get 3.6 months!!
> 
> Now it may be that some devices use better algorithms and will give you a 
> longer life.  (I would expect that a US$5000 "sold-state disk" will have 
> implemented things better and would have a much longer life.)  On the other 
> hand, if you run out to Fry's and buy a $10 1GB USB stick, don't expect it 
> to last vey long.
> 
> One problem I've seen is that no manufacturer gives you all of the 
> information you need.  Also, what is true for one device may not be true for 
> another.
> 
> It seems to me that one way to extend the life is to use ext3 with a large 
> "ordered" journal that will spread out the writes to the superblock 
> throughout the journal (I assume the superblock is journaled, anyone know 
> for sure?).  Also, turn off atime on the filesystem.
> 
> What we need is a version of JFFS that can be used on an external device. 
> Assume that the device does not do wear leveling and do it in the OS.
> 
> 
Many thanks for your detailed reply.

I am still trying to convince myself that "up market" memory sticks
are not to be relied upon.

If you are correct in the way they work then a lot of
people are going to be disappointed in the useful life of such devices.

Yet Corsair give them a ten year warranty.

I have emailed Corsair and asked some further questions,
but not before ..........

I re-read the wording in

http://www.corsairmemory.com/_faq/FAQ_flash_drive_wear_leveling.pdf

"Corsair's flash drives typically use dynamic wear levelling"

the spec sheet for the CMFUSB2.0-8GBGT states that it used Static wear levelling !!!!

http://corsairmemory.com/_datasheets/CMFUSB2.0-8GBGT.pdf

Do I believe this?

Maybe we have been discussing the wrong thing !!??

John








More information about the fedora-list mailing list