Linux 会更新块设备的大小吗?

Linux 会更新块设备的大小吗?

鉴于 emmc 磨损监控,我想知道正在运行的 Linux 操作系统中显示的大小。 emmc 芯片有一个内部管理器,用于跟踪所有不同字节寄存器的使用强度。理论上,当达到实时限制时,SSD、USB 棒或 emmc 芯片等闪存设备的容量应该会缩小。

 $ lsblk -b

.. 返回块大小(以字节为单位),如下所示:

lsblk-b

如果整个 emmc 映像的容量和大小下降,这个数字会自动更新吗?

是否有其他工具可以实现实际可用块大小的实时表示?

编辑:在 @Marcus 和 @Artem 发表评论后

emmc 驱动程序具有此虚拟文件系统条目,其中已实现“生命周期结束”指示。如果我没记错的话,0x02 代表容量大小损失 80%,0x03 代表容量大小损失 90%。意识到您的 emmc 已经消失有点晚了,所以我正在寻找一种方法来在早期阶段指示这个重要信息。

看着 :cat /sys/class/block/mmcblk1/device/pre_eol_info

答案1

不会。具有内部磨损均衡功能的设备(例如 eMMC 和某些闪存驱动器)一开始不会宣传其全部容量。

因此,设备可能有 1536 个块,但仅向系统显示 1024 个块。操作系统可以访问的 1024 个块永远不能保证是相同的块,它们可以重新分配等等。

因此,向操作系统显示的大小不能用于确定当前的寿命终止状态。

答案2

阅读一些白皮书后的额外更新:(微米)

我从评论中得到了混杂的信息,并结合了我自己的理解,所以我试图尽可能正确地表达这一点。

显然,每个 Micron emmc 芯片都有 2% 的额外内存容量,称为:保留块。 2% 是芯片的估计寿命退化。 (我认为这更多的是一个营销数字)

每次检测到坏块时,都会用来自保留块的新块替换它。这是由内部内存管理器完成的,它还平衡内存块的使用,以避免特定热点的磨损。作为副作用,EOL 会很快到来,因为内存块总是以相同的强度使用。

因此,这意味着从操作系统的角度来看,内存大小在一定程度上保持稳定。

Linux 驱动程序创建一个条目来检查 emmc 设备的 EOL 估计。

看着:

cat  /sys/class/block/mmcblk1/device/pre_eol_info 

在那里你会找到一个号码:

  • 0x01:正常运行
  • 0x02:消耗了80%的预留内存容量
  • 0x03:消耗了90%的预留内存容量

0x03 是芯片的严重警告。从那时起,芯片将消耗其容量并很快退化。

相关内容