Linux基础 -- UBI(**Unsorted Block Images**)

UBI(Unsorted Block Images)是 Linux 中为原始 NAND Flash 设计的一种 逻辑卷管理层,其核心作用是:在 NAND 闪存设备上提供 坏块管理、擦写均衡(wear leveling)和逻辑到物理地址映射等机制,为上层文件系统(如 UBIFS)提供可靠、抽象的存储支持。


一、UBI 处于哪一层?

以 NAND Flash 的访问层级来看:

+---------------------------+
| 文件系统(UBIFS)         |
+---------------------------+
|       UBI 层              |
+---------------------------+
| MTD(Memory Technology Device)层 |
+---------------------------+
| 物理 NAND Flash 芯片       |
+---------------------------+

二、为什么需要 UBI?

NAND Flash 与普通块设备(如硬盘)相比,存在以下挑战:

问题描述
❌ 坏块出厂就可能存在坏块,使用过程中还会增加
❌ 最小擦除单位为 Block(128K、256K等)而写入单位是 Page(2K、4K)
❌ 写入次数有限每个块典型的擦写寿命是 10,000~100,000 次
❌ 不支持重写只能擦除再写,不能覆盖写
❌ 写入延迟变化擦除、写入时间比读取慢得多

因此,需要一个中间层(UBI)来:

  • 管理 坏块
  • 实现 擦写均衡(wear-leveling)
  • 提供 逻辑卷 支持
  • 抽象底层 NAND 差异,简化文件系统设计

三、UBI 的核心概念

概念说明
PEB(Physical Erase Block)物理擦除块,对应 NAND Flash 的最小擦除单位
LEB(Logical Erase Block)逻辑擦除块,由 UBI 映射到某个 PEB
Volume(卷)一个独立的存储逻辑空间,可以挂载文件系统(如 UBIFS)或原始数据
UBI Header每个 PEB 块都有头部,用于校验与定位
VID Header存放块的卷号、LEB 编号、版本号等信息
EC Header擦写计数(Erase Counter),用于 wear-leveling

四、UBI 与 UBIFS 的关系

  • UBI 提供逻辑卷管理
  • UBIFS(UBI File System)运行在 UBI 之上

UBIFS 支持特性包括:

  • 动态大小卷支持(类似 LVM)
  • 写放大(write amplification)优化
  • 断电保护(使用日志机制)
  • 高压缩比(zlib/lzo)

五、UBI 的常用命令工具

命令说明
ubiformat /dev/mtdX格式化一个 MTD 分区为 UBI 结构(会擦除)
ubiattach /dev/ubi_ctrl -m X把某个 mtdX 附加为 UBI 卷
ubimkvol /dev/ubi0 -N volname -s size创建逻辑卷
ubiupdatevol /dev/ubi0_X file.img更新某个卷的内容
ubinfo查看当前 UBI 卷信息
mount -t ubifs ubi0_0 /mnt/ubi挂载 UBI 卷(如果是 UBIFS)

六、举个例子

假设有一个 NAND 分区 /dev/mtd4,你想把它作为 rootfs:

# 1. 格式化为 UBI
ubiformat /dev/mtd4

# 2. 附加到 UBI
ubiattach /dev/ubi_ctrl -m 4

# 3. 创建逻辑卷(名字为 rootfs,大小 auto)
ubimkvol /dev/ubi0 -N rootfs -s 120MiB

# 4. 写入文件系统镜像
ubiupdatevol /dev/ubi0_0 rootfs.img

# 5. 挂载到系统
mount -t ubifs ubi0_0 /mnt/ubi

七、UBI 的使用场景

  • 嵌入式设备(OpenWRT、Android、Yocto)中的 rootfs
  • 工业级存储管理(高可靠性、高寿命)
  • 自定义启动分区 / 数据分区管理

八、总结

特性UBI 作用
坏块管理自动跳过坏块、记录可靠块
擦写均衡记录擦除计数、平均分配写入
逻辑映射提供 LEB → PEB 映射表
卷管理支持多个逻辑卷(rootfs、data 等)
支持文件系统通常配合 UBIFS 一起使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值