鉴于 emmc 磨损监控,我想知道正在运行的 Linux 操作系统中显示的大小。emmc 芯片有一个内部管理器,它跟踪所有不同字节寄存器的使用强度。理论上,SSD、USB 记忆棒或 emmc 芯片等闪存设备的容量应该会在达到寿命极限时缩小。
$ lsblk -b
.. 以字节为单位返回块大小,如下所示:
如果整个 emmc 映像的容量和大小下降,这个数字会自动更新吗?
是否有任何其他工具可以实现实际可用块大小的实时表示?
编辑:在@Marcus 和@Artem 的评论之后
emmc 驱动程序具有此虚拟文件系统条目,其中已实现“生命终止”指示。如果我没记错的话,0x02 代表 80% 的容量损失,0x03 代表 90% 的容量损失。意识到你的 emmc 已经消失有点晚了,所以我正在寻找一种方法来在更早的阶段指示这些关键信息。
看着 :cat /sys/class/block/mmcblk1/device/pre_eol_info
不会。像 eMMC 和一些闪存驱动器这样具有内部磨损均衡的设备一开始不会宣传它们的全部容量。
因此,一个设备可能有 1536 个块,但向系统显示的只有 1024 个。操作系统可以访问的 1024 个块永远不能保证是相同的块,它们可以重新分配等等。
因此,显示给操作系统的大小不能用于确定当前的寿命终止状态。
阅读一些白皮书后的额外更新:(Micron)
我从评论中得到了混杂的信息,再加上我自己的理解,所以我试图在这方面尽可能地正确。
显然,每个美光 emmc 芯片都有 2% 的额外内存容量,称为:预留块。2% 是芯片的估计寿命退化。(我认为这更像是一个营销数字)
每次检测到坏块时,它将被来自保留块的新块替换。这是由内部内存管理器完成的,它还平衡内存块的使用以避免在特定热点处磨损。作为副作用,EOL 会很快到来,因为内存块总是以相同的强度使用。
所以这意味着从操作系统的角度来看,内存大小在一定程度上保持稳定。
Linux 驱动程序创建一个条目来检查 emmc 设备的 EOL 估计。
看着:
在那里你会找到一个数字:
0x03 是芯片的严重警告。从那里开始,芯片将消耗它的容量并且会很快退化。