Similar presentations:
UBI – Unsorted Block Images
1. UBI – Unsorted Block Images
Artem Bityutskiy <[email protected]>2. Introduction
• A new technology for flash devices• Designed by IBM
• Publicly accessible Git tree
• GPL license
• More information at www.linux-mtd.infradead.org
3. Plan
1. Linux MTD overview2. UBI overview
4. Linux MTD overview
5. MTD overview
• MTD stands for Memory Technology Devices• MTD is a Linux subsystem ( drivers/mtd/)
• MTD provides uniform access to various flash devices
• MTD provides a generic API for that
• MTD provides an “MTD device” abstraction
JFFS2
character device (/dev/mtd0)
MTD device, MTDAPI
NAND
NOR
DataFlash
AG-AND
OneNAND
ECC’d NOR
6. MTD device
• MTD device consists of eraseblocks• Eraseblock size varies, typically 32-128 Kilobytes
• Eraseblocks may be written to , but not re-written
• Whole eraseblock has to be erased first
• Then it is possible to write there
re-write
write
write
write
write
write
write
X
Eraseblock, 128K
…
MTD device
7. MDT device vs Block device
Block deviceMTD device
• Consists of sectors
• Consists of eraseblocks
• Sectors are small (512, 1024 bytes)
• Eraseblocks are larger (32-128 Kilobytes)
• 2 operations: read and write
• 3 operations: read, write and erase
• Bad sectors are hidden by hardware
• Bad eraseblocks are not hidden
• Sectors do not get worn out
• Eraseblocks get worn-out after 104-105
erasures.
MTD device is more difficult to handle
8. MTD partitions
• Flash chip may be split on several MTD partitions• MTD partition is a set of consecutive eraseblocks
• MTD partitions is a physical flash area
Partition 1 (e.g., initfs)
Partition 2 (e.g., rootfs)
… so on
…
9. Drawbacks of MTD partitions
• MTD partitions are static – now way to change them “on-flight”• Do not provide wear-leveling for the whole chip
JFFS2
…
Partition 1
Bad blocks
Partition
2
10. UBI overview
11. UBI layer
Flash File System (e.g., UBIFS)UBI layer
MTD layer
…
Physical flash
12. Logical Volumes
• UBI provides logical volumes instead of MTD partitions• UBI volumes are in a way similar to LVM volumes
• UBI volumes may be dynamically created, deleted and re-sized
Volume A
Volume
Volume
B
B
Volume C
Delete
Re-size
Re-size
volume
“C”
B “B”
to
“A”
to1040
logical
eraseblock
Create
…
and UBI
sovolume
on
volume
“C”
-–logical
size
15
20
10eraseblocks
logical
eraseblocks
MTD device (physical flash)
Volume C
13. Wear-leveling
• UBI does wear-leveling across whole MTD device!• Wear-leveling is done by UBI, not by the UBI user!
JFFS2
Boot volume
RootFS volume
MTD device (physical flash)
DataStorage volume
14. UBI volume vs. MTD partition
MTD partitionUBI volume
• Consists of physical eraseblocks (PEB)
• Consists of logical eraseblocks (LEB)
• Does not implement wear-leveling
• Implements wear-leveling
• Admits of bad PEBs
• Devoid of bad LEBs
Advantages of UBI
• Allows dynamic volume creation, deletion and re-sizing more flexibility
• Eliminates the “wear” problem simpler software
• Eliminates bad eraseblocks problem simpler software
15. How it works
• LEBs are mapped to PEBsReturn 0xFFs
erase
read
write
• Any LEB may be mapped to any PEB
Static Volume
read-only
A data
LEB 0 LEB 1 LEB 2 LEB 3
Volume B
LEB 4
LEB 0 LEB 1 LEB 2
UBI layer
PEB 0 PEB 1 PEB 2 PEB 3
Re-map
LEB
Move data
Low erase counter
PEB 4 PEB 5 PEB 6 PEB 7
MTD device
High erase counter
PEB 8 PEB 9 PEB 10
16. Bad eraseblocks handling
• UBI volumes are devoid of bad eraseblocks• UBI does proper error recovery transparently
Write more data
The data have been successfully written!
An UBI volume
Re-map
the LEB
to to
this
PEB
Write
newcoming
data
this
PEB
MarkPartially
this PEBfilled
s bad
No
panic!
Recover
the
data to become
a good PEB
Write
error!
The eraseblock’s
bad!
physical
eraseblock
Bad physical
Empty physical
eraseblock
Eraseblock
17. UBI interfaces
UBI character devices:
1. /dev/ubi0, /dev/ubi1, … – UBI devices: volume create, delete, re-size, and get
device description operations
2. /dev/ubi0_0, /dev/ubi0_1, … - UBI volumes: read, write, update, and get volume
description operations
UBI sysfs interface: /sys/class/ubi
UBI in-kernel interface: include/linux/mtd/ubi.h
18. Volume update operation
• Useful for software updates• Volume is in “corrupted” state if update is interrupted
• “Corrupted” volumes are not usable and must be updated
19. Static and dynamic UBI volumes
• Dynamic volumes are read-write• Static volumes are read-only
• Static volumes are protected by CRC-32 checksum