Browse Prior Art Database

Adding wear-levelling (and potentially atomic journaling) support for metadata on FAT12/FAT16/FAT32 file system, targetting flash memory storage devices

IP.com Disclosure Number: IPCOM000175280D
Original Publication Date: 2008-Oct-07
Included in the Prior Art Database: 2008-Oct-07
Document File: 3 page(s) / 39K

Publishing Venue

IBM

Abstract

This article describes adding wear-levelling (and potentially atomic journaling) support for metadata on FAT12/FAT16/FAT32 file system, targetting the needs of flash memory storage devices.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 32% of the total text.

Page 1 of 3

THIS COPY WAS MADE FROM AN INTERNAL IBM DOCUMENT AND NOT FROM THE PUBLISHED BOOK

ARC820050232 Leonard T Guzman/Almaden/IBM

Vladimir Zbarsky

Adding wear-levelling (and potentially atomic journaling) support for metadata on FAT12/FAT16/FAT32 file system, targetting flash memory storage devices

Flash memory storage typically specify that individual sectors are not to be written to more than 10,000-100,000 times, after which such sectors become unusable. Magnetic storage media (such as hard drives), on the other hand, specifies much higher write reliability numbers for individual sectors. Conventional file systems in use today have been predominantly designed for magnetic storage media, and therefore are heavily using ("pounding", writing frequently) to areas holding file system administrative data.

Most flash memory storage devices in use today use FAT12 or FAT16 file system (developed by Microsoft and used in all MS-DOS and Window operating systems, standardized in ECMA-107 standard). Administrative areas of these filesystems include FAT table (2 copies) and root directory entry, which are rigidly specified to be located at the very beginning of the partition. Sectors holding this administrative data frequently went bad from excessive use on hard drives formatted with FAT-12 or FAT-16 during MS-DOS days. Flash memory storage devices are in even greater danger of that, especially if they are used exensively.

Known solutions to this problem include:
- Using a wear-levelling file system, such JFFS, or JFFS2, or other log-based file systems. The major drawback of those is poor compatibility, none of the Windows PCs or existing digital cameras or portable music devices support these file systems.
- Use a wear-levelling logic level, such as FTL or NFTL, underneath the FAT file system layer (typically implemented in the flash controller). Reputable flash memory storage device manufacturers typically implement this, but manufacturers producing very cheap devices for low-end niche of the market typically don't do this in order to lower costs.

Typical layout of storage devices partitioned using MS-DOS partitioning scheme and containing one or more FAT partitions is as follows:

|| MBR (master boot record) || unused sectors || partition 1 || partition 2 || ... || last partition ||

The structure of MBR is as follows:
|| machine code (i.e. first stage of boot loader) || partition table (starting and ending addresses of the first 4 partitions) || MBR signature (bytes AA55 in little-endian) ||

Unused space after MBR but before first partition can be used for boot loader (if its first stage doesn't needs more than 446 bytes) or for other administrative purposes. Conventional partitioning utilities (like Microsoft's fdisk) typically allocate 12-26 sectors for it, but it can be arbitrarily large. Unused sectors on flash memory storage devices typically aren't used at all, which opens a vast plethora of opportuniti...