Block-Device

Linux 會更新塊設備的大小嗎?

  • October 20, 2021

鑑於 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

不會。像 eMMC 和一些快閃記憶體驅動器這樣具有內部磨損均衡的設備一開始不會宣傳它們的全部容量。

因此,一個設備可能有 1536 個塊,但向系統顯示的只有 1024 個。作業系統可以訪問的 1024 個塊永遠不能保證是相同的塊,它們可以重新分配等等。

因此,顯示給作業系統的大小不能用於確定目前的壽命終止狀態。

閱讀一些白皮書後的額外更新:(Micron)

我從評論中得到了混雜的資訊,再加上我自己的理解,所以我試圖在這方面盡可能地正確。

顯然,每個美光 emmc 晶片都有 2% 的額外記憶體容量,稱為:預留塊。2% 是晶片的估計壽命退化。(我認為這更像是一個行銷數字)

每次檢測到壞塊時,它將被來自保留塊的新塊替換。這是由內部記憶體管理器完成的,它還平衡記憶體塊的使用以避免在特定熱點處磨損。作為副作用,EOL 會很快到來,因為記憶體塊總是以相同的強度使用。

所以這意味著從作業系統的角度來看,記憶體大小在一定程度上保持穩定。

Linux 驅動程序創建一個條目來檢查 emmc 設備的 EOL 估計。

看著:

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

在那裡你會找到一個數字:

  • 0x01:正常執行
  • 0x02:已消耗80%的預留記憶體容量
  • 0x03:已消耗90%的預留記憶體容量

0x03 是晶片的嚴重警告。從那裡開始,晶片將消耗它的容量並且會很快退化。

引用自:https://unix.stackexchange.com/questions/673212