ubifs卷与mtd分区

时间:2016-10-10 14:41:06

标签: linux-kernel filesystems embedded-linux jffs2 ubifs

我正在将产品从jffs2文件系统迁移到ubifs。

之前的jffs2设计包含3个mtd分区(2 ro和1 rw)。

转向ubifs - 我应该创建:

  • 一个mtd分区和3个卷
  • 3 mtd分区,每个1卷

基本上我问我是否应该在转移到ubifs时用卷替换分区? (我的理解是,如果这样做,ubi层将管理整个闪存)

谢谢, 跑

1 个答案:

答案 0 :(得分:2)

存在选项,这里有好处......

  

一个mtd分区和3个卷

UBI 图层将管理音量。这是一个闪存虚拟化层,可将不可靠的闪存转换为可靠的内存。 UBI层执行磨损均衡。即使对于只读数据,偶尔重写数据也是有益的。这将为浮动门等充电,以便数据保持更长时间的可读性。对于读写数据,它对于寿命非常有益。 UBI磨损均衡将在所有卷上进行。这会极大地增加文件系统可以处理的擦除写入周期。

  

3 mtd分区,每个1卷

这通常不太理想,但有一些好处,它可能适合某些用户。主要具有单独的分区增加了安装单个体积的可靠性。如果单个MTD分区出现问题,则整个闪存可能无法使用。通过具有单独的MTD分区,当读写文件系统失败时,可以使用只读MTD / UBI / UbiFS系统。

这对第三种选择更有利,

  

具有混合文件系统的多个MTD。

可以将CramFS,RomFS放置在某些闪存设备中,其中设备块由制造商提供可靠性。这可能是一个启动文件系统,它是系统最低功能所需的全部内容。用于操作这些分区的工具非常简单(与UBI / UbiFS相比),并且可以在最小的代码空间中实现。一些系统具有较大的DDR和较小的片上SRAM。加载程序/闪存可能会限制代码空间。

也就是说,最近(最近两年)mtd-utils包含UBI解析代码。这可能需要移植到闪存器,恢复代码等。恢复代码可能位于附加的 initrd 分区中,该分区执行UBI / UbiFS分区的挂载/故障安全恢复。

u-boot 包含用于管理和操作UBI / UbiFS代码的代码,它在许多平台上使用两阶段启动(从内部SRAM运行,配置DDR然后迁移)以具有丰富的功能一个启动加载器。 u-boot 本身需要在另一台设备上 OR ,如上所述。

第二个选项 3个mtd分区,每个 1个卷可能是最不可能/最需要的。第一个将有利于系统/闪存的生命周期。最后一个将提供更高可靠性/恢复的简单性。 best 将取决于分区上的数据以及可用于恢复数据的非Linux资源。幸福的媒介是为UBI提供尽可能多的NAND闪存空间,并在您需要逻辑分区时使用卷。

通常,我会质疑为什么要使用卷,只是将所有数据放在一起,但这又取决于数据的性质。