Linux

交換性如何影響嵌入式電腦中 SDHC 儲存卡的壽命?

  • March 11, 2017

這個問題中,超級使用者的幾個答案報告了Raspberry Pi 單板電腦其他嵌入式設備中的SDHC 卡故障,時間從幾周到幾年不等。

在對關於交換性的一個無關問題的回答的評論中,有人猜測調整交換性是否有利於文件記憶體頁面而不是匿名頁面會增加依賴 SD 卡作為主要儲存介質的嵌入式系統中 SD 卡的壽命。直覺上,調整交換性似乎應該對寫入 SD 卡有一些影響,但很難說與其他因素(例如日誌記錄或臨時性)相比,交換對 SD 卡耐用性的整體壓力有多大影響。文件。

問題是在此類系統中,調整 swappiness 對 SD 卡的壽命有多大影響?

答案應該有具體的經驗或參考資料作為支持。請記住好主觀,壞主觀

答案在很大程度上取決於您的案例。

我不再擁有 Raspberry Pi,但我曾經擁有 512 MB RAM。方便的是,我的 NFS 伺服器具有相同的數量。除了 NFS,這台伺服器(和我所有的其他伺服器一樣)有一個 m68k 交叉編譯器,可以通過distcc. 它還有一個永遠線上的 GNUscreen會話,連接到另一台伺服器的串列埠。讓我們看一下vmstat

$ vmstat | awk '{ printf "%4s %2s %2s\n", $3, $7, $8 }' | tail -n 2
swpd si so
  0  0  0

在這種情況下,沒有任何交換價值比其他任何價值都好,因為系統從不交換。小型嵌入式系統通常甚至沒有交換空間。來自於無交換嵌入式系統的記憶體管理方法,Linux 期刊 2005 年的一篇文章:

Linux 核心記憶體不足 (OOM) 殺手通常不會在台式機和伺服器電腦上呼叫,因為這些環境包含足夠的常駐記憶體和交換空間,使得 OOM 情況很少發生。然而,無交換嵌入式系統通常只有很少的主記憶體儲器並且沒有交換空間。在這樣的系統中,通常不需要分配大的記憶體空間;然而,即使是相對較小的分配也可能最終觸發 OOM 殺手。

在採用這種方法的系統中,情況也是如此:由於沒有交換空間,交換性不會影響儲存的壽命。

如果您使用 Raspberry Pi 更像是一個桌面系統,可能執行 X 並在 Python 中為您的生物學作業進行基因測序(我已經看到它完成了),那麼您可能需要擔心一些事情。讓我們來了解一下:

假設您的記憶體不足,並且您的 swappiness 設置得非常高,幾乎完全換出程序記憶體並保留文件記憶體。為了具體起見,還假設您有一個 8 類 SDHC 卡,並且它的塊大小(相當低)為 16 KB。

然後您可以寫入 8 MB/s,即每秒 512 個塊。如果沒有磨損均衡,並假設在 100,000 次寫入後失敗,那麼在失敗前您只剩下 195 秒,或僅超過三分鐘。當然,這是最壞的情況。通過磨損均衡,故障時間接近 100,000 次寫入乘以未使用塊的數量。假設您有 1 GB 或 65,536 個塊可用於磨損均衡。在這種情況下,你得到(大約)65,536 倍的時間,或者大約 24 年的不斷交換。

由於您可能不會在24 年內不斷交換,因此這不太可能是過早閃死的原因。

更可能成為問題的是文件訪問時間的記錄。每當讀取文件時,它的訪問時間都會更新,除非使用該noatime選項安裝文件系統。這需要在每次讀取文件時寫入一個塊。

像 ext3 和 ext4 這樣的日誌文件系統在每次寫入時都會將額外的數據寫入介質日誌。一些文件系統(例如 ext2 或 FFS)不支持日誌。使用這些文件系統(或在其他文件系統中關閉日誌)肯定會提高快閃記憶體介質的壽命,但會在斷電或介質移除的情況下降低數據可靠性。

我認為系統日誌通常不會對快閃記憶體介質的消亡有太大影響,因為我/var/log 在過去一個月中唯一發生變化的文件是btmpwtmplastlog.

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