Wear levelling
From Wikipedia, the free encyclopedia
Wear levelling (also written wear leveling) is a technique[1] for prolonging the service life of some kinds of erasable computer storage media, such as flash memory.
The term has also been used by Western Digital to describe their hard disk preservation technique, but hard disks are not generally wear-levelled devices.
Contents |
[edit] Rationale
EEPROM and flash memory media have individually erasable segments, each of which can be put through a finite number of erase cycles before becoming unreliable. This can be anywhere between 10,000 and 1,000,000 cycles[citation needed], for example, for NAND flash devices. Erasable optical media such as CD-RW and DVD-RW are rated at up to 1,000 cycles (100,000 cycles for DVD-RAM media).
Wear-levelling attempts to work around these limitations by arranging data so that erasures and re-writes are distributed evenly across the medium. In this way, no single sector prematurely fails due to a high concentration of write cycles.
Conventional file systems like FAT, UFS, ext2 and NTFS were originally designed for magnetic disks and as such rewrite many of their data structures (such as their directories) repeatedly in place. Some file systems aggravate the problem by tracking last-access times, which can lead to file metadata being constantly rewritten in-place.
[edit] Techniques
There are several techniques for extending the life of the media:
- A checksum or error-correcting code can be kept for block or sector in order to detect errors or correct errors.
- A pool of reserve space can also be kept. When a block or sector does fail, future reads and writes to it can be redirected to a replacement in that pool.
- Blocks or sectors on the media can be tracked in a least recently used queue of some sort. The data structures for the queue itself must either be stored off-device or in such a way that the space it uses is itself wear-levelled.
On flash memory devices, such as CompactFlash and Secure Digital cards, these techniques are implemented in hardware by a built-in microcontroller. On such devices, wear-levelling is transparent and most conventional file systems can be used as-is on them.
Wear-levelling can also be implemented in software by special-purpose file systems such as JFFS2 and YAFFS on flash media or UDF on optical media. All three are log-structured filesystems in that they treat their media as circular logs and write to them in sequential passes. File systems which implement Copy-on-write strategies, such as ZFS, also implement a form of wear-levelling.
[edit] References
- ^ U.S. Patent 6,850,443 Wear leveling techniques for flash EEPROM systems.