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 一起使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/87311.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/87311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线程相关函数

思维导图 1. 创建一个分支线程,在主线程中拷贝文件的前一部分,主线程拷贝后一部分。 2.解读代码 info1 from child process_1 info1 from parent process3.解读代码,-打印多少次 14次

SeaTunnel 社区月报(5-6 月):全新功能上线、Bug 大扫除、Merge 之星是谁?

在 5 月和 6 月,SeaTunnel 社区迎来了一轮密集更新:2.3.11 正式发布,新增对 Databend、Elasticsearch 向量、HTTP 批量写入、ClickHouse 多表写入等多个连接器能力,全面提升了数据同步灵活性。同时,近 100 个修复与优化…

数学建模_非线性规划

matlab求解调用示例 第二道例题建模 matlab求解 1.matlab只能处理min问题&#xff1a; max两边取负号变成min 2. > > >号变成 < < <&#xff1a;两边取负号 调用示例 第二道例题建模 目标函数取平方而不取绝对值 后面省略

【BurpSuite 2025最新版插件开发】基础篇7:数据的持久化存储

1 前言 历史章节&#xff1a; 【BurpSuite 2025最新版插件开发】基础篇1&#xff1a;环境搭建 【BurpSuite 2025最新版插件开发】基础篇2&#xff1a;插件生命周期与核心接口 【BurpSuite 2025最新版插件开发】基础篇3&#xff1a;请求拦截和修改简单示例 【BurpSuite 202…

GPT-4 Turbo集成智能工作流,开启自动化研究与知识管理新篇章!

目录 一、系统架构设计二、核心模块实现1. 智能数据采集引擎2. 自动化研究引擎3. 知识管理系统 三、智能工作流引擎四、关键技术实现1. 动态工作流引擎2. 知识图谱构建 五、企业级部署方案1. 云原生架构2. Docker部署脚本 六、应用案例&#xff1a;药物研发项目七、性能优化策略…

告别SQL卡顿与混乱!AI如何赋能实时计算?

在当今数据驱动的商业环境中&#xff0c;SQL作为与数据库交互的核心语言&#xff0c;其编写效率和质量直接影响着企业的数据决策速度和系统性能。然而&#xff0c;我们在长期的企业服务实践中发现&#xff0c;数据库开发人员普遍面临以下痛点&#xff1a; SQL性能问题频发&…

LeetCode算法(和中等打的有来有回)——盛最多水的容器

文章目录 leetcode第11题&#xff1a;盛最多水的容器二次循环代码 双指针优化解析代码 leetcode第11题&#xff1a;盛最多水的容器 二次循环 这道题比较容易想到的就是通过二次循环遍历所有能盛的水的体积。 代码 class Solution {public int maxArea(int[] height) {// 记录…

Karmada 多集群服务发现

一、背景介绍 多集群架构下&#xff0c;不同 Kubernetes 集群间的服务如何互通是核心挑战。Karmada 支持 Kubernetes Multi‑cluster Service APIs&#xff08;MCS&#xff09;&#xff0c;通过 ServiceExport 和 ServiceImport 实现跨集群服务发现与调用&#xff0c;帮助多集…

macOS 26正式发布,全新Liquid Glass设计语言亮相

在全球科技爱好者翘首以盼的WWDC 2025开发者大会上&#xff0c;苹果公司正式揭开了macOS 26系统的神秘面纱。此次系统更新最令人瞩目的&#xff0c;当属其采用的全新Liquid Glass设计语言&#xff0c;该设计不仅重塑了Mac的视觉风格&#xff0c;更为用户带来了一场前所未有的操…

网络基础(3)

网络基础&#xff08;3&#xff09; 有关进程 1&#xff09;进程是人在系统中的代表&#xff0c;只要把数据给进程&#xff0c;人就相当于拿到了数据 2&#xff09;数据传输到主机不是目的&#xff0c;而是手段。到达主机内部&#xff0c;再交给主机内的进程才是目的 上网的…

C语言专题:17.逻辑运算与三目运算符(按位逻辑运算、条件运算符)

​ C语言中的逻辑运算符和三目运算符&#xff08;条件运算符&#xff09;是非常常见且基础的操作符&#xff0c;它们分别用于布尔逻辑运算和简化条件判断的表达式。通过合理使用这些运算符&#xff0c;可以使代码更加简洁、清晰。本文将重点介绍逻辑运算符、三目运算符和按位逻…

【分布式 ID】一文详解美团 Leaf

文章目录 1. 前言2. 项目启动示例 - MYSQL 和 Zookeepr2.1 Leaf-segment 模式2.2 Leaf-snowflake 模式 - 单节点2.3 Leaf-snowflake 模式 - 多节点 3. Leaf-segment 详细讲解4. Leaf-segment 源码解析4.1 SegmentBuffer 号段缓存4.2 Segment 号段4.3 初始化号段服务 SegmentIDG…

互联网大厂Java面试实录:Spring Boot与微服务在电商场景中的应用

互联网大厂Java面试实录&#xff1a;Spring Boot与微服务在电商场景中的应用 面试场景 面试官&#xff1a;你好&#xff0c;谢飞机&#xff0c;欢迎参加我们的Java开发岗位面试。首先&#xff0c;能否简单介绍一下你的技术背景&#xff1f; 谢飞机&#xff1a;嗨&#xff0c…

XILINX Ultrascale+ Kintex系列FPGA的架构

Xilinx&#xff08;现为AMD&#xff09;Kintex UltraScale系列FPGA是基于16nm FinFET工艺的高性能、中等成本的现场可编程门阵列&#xff0c;专为高带宽、低功耗和成本效益的应用设计&#xff0c;广泛用于5G通信、数据中心、视频处理、航空航天等领域。以下详细介绍Kintex Ultr…

腾讯云实名资质 “待补充后提交” 解决方法

目录 一、引言二、为什么会出现 “待补充后提交” 状态三、需要补充的具体材料3.1 营业执照3.2 法人身份证相关3.3 短信管理员资料3.4 合规使用承诺函 四、处理流程详细步骤4.1 登录腾讯云控制台4.2 进入实名资质相关页面4.3 上传补充材料4.4 提交审核 五、注意事项5.1 材料规范…

8分钟讲完 Tomcat架构及工作原理

https://www.bilibili.com/video/BV1J3411k7Xc/?spm_id_from333.337.search-card.all.click&vd_source36145f3620bdf21c0f1a843352e603fb JavaWeb开发必看&#xff01;Tomcat架构及工作原理&#xff08;8分钟&#xff09; 分阐明了Tomcat的工作原理。 一、Tomcat的核心架…

C盘爆满元凶!WinSxS组件解密

C盘爆满元凶!WinSxS组件解密 WinSxS是什么?核心功能与重要性目录为何疯狂膨胀?安全清理权威指南优先使用微软官方工具:DISM工具清理效果与性能影响重要风险提示总结C盘爆满元凶!WinSxS组件解密你是否也遇到过: C盘空间频频告急,检查发现WinSxS文件夹竟独占数十GB空间?想…

毕业设计(启智模块化机器人的组装与K5的使用

记录一下 毕业设计的部分笔记 准备清空文件发到csdn做一个纪念0.0 物联网毕业设计 机器的组装与K5的使用 基础文件的学习 首先安装K5 和文件包中的JLink驱动 并且文件实例里的代码必须加上x后缀否则 只能用K4 来打开 供电&#xff1a;整个系统都需要电池运转 build 存放…

从0开始学习R语言--Day37--CMH检验

对于有多个特征的数据&#xff0c;我们一般的处理方式是构建特征函数&#xff0c;计算每个特征向量的系数&#xff0c;从而将其影响纳入到研究量中&#xff0c;但对于简单的问题&#xff0c;也这样做的话未免有点小题大做。这时我们可以考虑用CMH来分析变量在每个特征下的影响&…

搜索选择DFS还是BFS

1. DFS&#xff08;深度优先搜索&#xff09;&#xff1a;优先进行深度纵向搜索&#xff0c;DFS所需的内存少于BFS所需的内存&#xff0c;利用堆栈实现&#xff0c;适合找最短路径。 2. BFS&#xff08;广度优先搜索&#xff09;&#xff1a;优先进行广度横向搜索&#xff0c;…