UBIFS
Encyclopedia
The Unsorted Block Image File System (UBIFS) is a successor to JFFS2
, and competitor to LogFS
, as a file system for use with raw flash memory
media. Development began in earnest in 2007, with the first stable release made to Linux kernel
2.6.27 in October 2008.
Note that UBIFS works on top of an Unsorted Block Images device, which is itself on top of a MTD
device. MTDs are not to be used directly. Two major differences on UBIFS (compared to JFFS2) are that UBIFS supports write caching, and UBIFS errs on the pessimistic side of free space calculation. UBIFS tends to perform better than JFFS2 for large NAND FLASH devices. This is a consequence of UBIFS design goals: faster mounting, quicker access to large files, and improved write speeds. UBIFS also preserves or improves upon JFFS2
's on-the-fly compression, recoverability and power fail tolerance. UBIFS's on-the-fly data compression allows zlib
(Deflate
algorithm) or LZO.
JFFS2
stores files system indexes in memory whereas UBIFS stores indexes in flash. This directly impacts the scalability of JFFS2 as the tables must be rebuilt every time the volume is mounted. Also, the JFFS2 tables may consume enough system RAM that some images may be unusable.
UBIFS is the default root filesystem of the Nokia N900
Smartphone
.
devices. UBI serves two purposes, tracking NAND flash bad blocks and providing Wear leveling
. Wear leveling
spreads the erases and writes across the entire flash device. UBI presents logical erase blocks to higher layers and maps these to physical flash erase blocks. UBI was written specifically for UbiFs so that it does not have to deal with wear leveling and bad blocks. However, UBI may also be useful with cramfs
and NAND flash; cramfs
is not aware of NAND flash bad blocks.
JFFS2
Journalling Flash File System version 2 or JFFS2 is a log-structured file system for use with flash memory devices. It is the successor to JFFS. JFFS2 has been included in the Linux kernel since the 2.4.10 release. JFFS2 is also available for a couple of bootloaders like Das U-Boot, Open...
, and competitor to LogFS
LogFS
LogFS is a Linux log-structured and scalable flash file system, intended for use on large devices of flash memory. It is written by Jörn Engel and in part sponsored by the CE Linux Forum....
, as a file system for use with raw flash memory
Flash memory
Flash memory is a non-volatile computer storage chip that can be electrically erased and reprogrammed. It was developed from EEPROM and must be erased in fairly large blocks before these can be rewritten with new data...
media. Development began in earnest in 2007, with the first stable release made to Linux kernel
Linux kernel
The Linux kernel is an operating system kernel used by the Linux family of Unix-like operating systems. It is one of the most prominent examples of free and open source software....
2.6.27 in October 2008.
Note that UBIFS works on top of an Unsorted Block Images device, which is itself on top of a MTD
Memory Technology Device
Memory technology devices are a new type of device file in Linux for interacting with flash memory. The MTD subsystem was created to provide an abstraction layer between the hardware-specific device drivers and higher-level applications...
device. MTDs are not to be used directly. Two major differences on UBIFS (compared to JFFS2) are that UBIFS supports write caching, and UBIFS errs on the pessimistic side of free space calculation. UBIFS tends to perform better than JFFS2 for large NAND FLASH devices. This is a consequence of UBIFS design goals: faster mounting, quicker access to large files, and improved write speeds. UBIFS also preserves or improves upon JFFS2
JFFS2
Journalling Flash File System version 2 or JFFS2 is a log-structured file system for use with flash memory devices. It is the successor to JFFS. JFFS2 has been included in the Linux kernel since the 2.4.10 release. JFFS2 is also available for a couple of bootloaders like Das U-Boot, Open...
's on-the-fly compression, recoverability and power fail tolerance. UBIFS's on-the-fly data compression allows zlib
Zlib
zlib is a software library used for data compression. zlib was written by Jean-Loup Gailly and Mark Adler and is an abstraction of the DEFLATE compression algorithm used in their gzip file compression program. Zlib is also a crucial component of many software platforms including Linux, Mac OS X,...
(Deflate
DEFLATE
Deflate is a lossless data compression algorithm that uses a combination of the LZ77 algorithm and Huffman coding. It was originally defined by Phil Katz for version 2 of his PKZIP archiving tool and was later specified in RFC 1951....
algorithm) or LZO.
JFFS2
JFFS2
Journalling Flash File System version 2 or JFFS2 is a log-structured file system for use with flash memory devices. It is the successor to JFFS. JFFS2 has been included in the Linux kernel since the 2.4.10 release. JFFS2 is also available for a couple of bootloaders like Das U-Boot, Open...
stores files system indexes in memory whereas UBIFS stores indexes in flash. This directly impacts the scalability of JFFS2 as the tables must be rebuilt every time the volume is mounted. Also, the JFFS2 tables may consume enough system RAM that some images may be unusable.
UBIFS is the default root filesystem of the Nokia N900
Nokia N900
The Nokia N900 is a smartphone made by Nokia. It supersedes the Nokia N810. Its default operating system, Maemo 5, is a Linux-based OS originally developed for the Nokia 770 Internet Tablet. It is the first Nokia device based upon the Texas Instruments OMAP3 microprocessor with the ARM Cortex-A8...
Smartphone
Smartphone
A smartphone is a high-end mobile phone built on a mobile computing platform, with more advanced computing ability and connectivity than a contemporary feature phone. The first smartphones were devices that mainly combined the functions of a personal digital assistant and a mobile phone or camera...
.
Unsorted Block Images
Unsorted Block Images (UBI) is an erase block management layer for Flash memoryFlash memory
Flash memory is a non-volatile computer storage chip that can be electrically erased and reprogrammed. It was developed from EEPROM and must be erased in fairly large blocks before these can be rewritten with new data...
devices. UBI serves two purposes, tracking NAND flash bad blocks and providing Wear leveling
Wear leveling
Wear leveling is a technique for prolonging the service life of some kinds of erasable computer storage media, such as Flash memory used in solid-state drives and USB Flash drives...
. Wear leveling
Wear leveling
Wear leveling is a technique for prolonging the service life of some kinds of erasable computer storage media, such as Flash memory used in solid-state drives and USB Flash drives...
spreads the erases and writes across the entire flash device. UBI presents logical erase blocks to higher layers and maps these to physical flash erase blocks. UBI was written specifically for UbiFs so that it does not have to deal with wear leveling and bad blocks. However, UBI may also be useful with cramfs
Cramfs
The compressed ROM file system is a free read-only Linux file system designed for simplicity and space-efficiency. It is mainly used in embedded systems and small-footprint systems....
and NAND flash; cramfs
Cramfs
The compressed ROM file system is a free read-only Linux file system designed for simplicity and space-efficiency. It is mainly used in embedded systems and small-footprint systems....
is not aware of NAND flash bad blocks.
External links
- Home page
- UBIFS experiments on the XO LaptopOLPC XO-1The XO-1, previously known as the $100 Laptop, Children's Machine, and 2B1, is an inexpensive subnotebook computer intended to be distributed to children in developing countries around the world, to provide them with access to knowledge, and opportunities to "explore, experiment and express...
(One Laptop per Child) - University of Szeged page