UBI - Unsorted Block Images

Download Report

Transcript UBI - Unsorted Block Images

UBI – Unsorted Block Images
Artem Bityutskiy <[email protected]>
Introduction
• A new technology for flash devices
• Designed by IBM
• Publicly accessible Git tree
• GPL license
• More information at www.linux-mtd.infradead.org
Plan
1. Linux MTD overview
2. UBI overview
Linux MTD overview
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, MTD API
NAND
NOR
DataFlash
AG-AND
OneNAND
ECC’d NOR
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
MDT device vs Block device
Block device
MTD 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
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
…
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
UBI overview
UBI layer
Flash File System (e.g., UBIFS)
UBI layer
MTD layer
…
Physical flash
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
volume
“C”
B to
“A”
to10
40
logical
logical
eraseblock
Create
…
and UBI
so
on
volume
“C”
“B”
-–size
size
15
20
10eraseblocks
logical
logical eraseblocks
eraseblocks
MTD device (physical
flash)
Volume C
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
UBI volume vs. MTD partition
MTD partition
UBI 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
How it works
• LEBs are mapped to PEBs
Return 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 PEB 4 PEB 5 PEB 6 PEB 7 PEB 8 PEB 9 PEB 10
Re-map
LEB
Move data
Low erase counter
MTD High
device
erase counter
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 this
PEB
Write
newcoming
data
to this
PEB
filled
MarkPartially
this PEB
s bad
No
panic!
Recover
the data tobecome
a good PEB
Write
error!
The eraseblock’s
bad!
physical
eraseblock
Bad physical
Empty physical
eraseblock
Eraseblock
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
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
Static and dynamic UBI volumes
• Dynamic volumes are read-write
• Static volumes are read-only
• Static volumes are protected by CRC-32 checksum