文档和网页对此不是很清楚。它是Linux技术吗?它是一种存储设备吗?
其他一些问题:
- 如果它是 Linux 技术,它适用于什么类型的存储?
- 什么是“磨损特性”?
- 为什么 MTD 分区定义有启动参数?
答案1
大多数常规 Linux(以及更普遍的 Unix)系统使用称为块设备的存储抽象。块设备是块(扇区)的序列。可以读取或写入各个块。假设读取或写入连续块比随机读取和写入更快,假设可以重复写入同一位置,并假设可以安全地写入各个扇区而不会干扰其他附近的扇区。
对于磁盘驱动器来说,这是一个非常好的模型。对于闪存来说,这不是一个好的模型。
闪存在重新写入之前必须被擦除。擦除电路相对复杂,因此擦除块(尤其是 NAND 闪存)通常比写入块大得多。每个擦除块在失败之前只能被擦除有限次数。因此,为了最大限度地延长使用寿命,需要一种机制来平衡设备的磨损。
有两种方法。一种方法是创建一个控制器,该控制器提供标准块设备接口,并通过将逻辑块重新映射到不同的物理块来处理磨损均衡,并且在某些情况下将“冷”(很少修改)数据从低磨损块移动到高磨损块。这意味着任何普通的文件系统都可以使用,但是重映射系统很难正确实现。特别是正确处理停电是非常困难的。 SSD、USB 棒、SD 卡等都采用这种方法。
另一种方法不是尝试假装闪存根本就是一个磁盘驱动器,而是创建一种直接代表闪存芯片的新设备类型。然后文件系统(或者在 ubifs 的情况下是 ubi 层)承担磨损均衡的责任。 Linux 将此类设备称为 mtd 设备。与硬盘驱动器一样,每个设备可以分为多个分区(尽管 IIRC 分区通常由系统固件定义,而不是由相关闪存设备上的分区表定义)。这种方法常见于嵌入式设备、智能手机和类似智能手机的平板电脑中。
答案2
一如既往,最好的描述是在维基百科上。
基本上它是嵌入式系统的板载闪存设备和操作系统看到的块设备等之间的抽象层(Linux 设备驱动程序)。