將 ~/.cache 放在 tmpfs 中是個好主意嗎?
我擔心該
~/.cache
目錄有兩個原因:它會在我的 SSD 上造成大量不必要的寫入,並且它包含有關加密容器和外部驅動器中文件的資訊(如圖像縮略圖)。我把它放在一個 tmpfs 中,在
fstab
. 它執行沒有問題,直到它變滿:這會導致某些程序出現錯誤消息。我假設其中的文件
.cache
不應該是持久的(類似於/tmp
),這就是我使用 tmpfs 的原因。因此,我編寫了一個腳本,由 執行,如果 tmpfs 已滿,則每小時cron
清理一次。.cache
但這會導致
tracker
無法找到其數據庫的錯誤消息。這讓我想知道這個目錄真的不應該是持久的。把它放在一個好主意
tmpfs
嗎?
聽起來你確實有問題
是的,所以如果記憶體包含跟踪器數據庫,當您“清理”它時,您將再次重建它(在費力地掃描所有文件之後)。所以我不認為這是一個好主意。
根本問題是您有(組合)軟體寫入有限的文件系統,它不會觀察可用空間:(。
把想法大聲說出來
我相信 Fedora 曾經
/tmp
使用 tmpreaper 進行管理,它會刪除舊文件。理論上,一些應用程序開發人員可能已經預料到了該模型。在實踐中——人們只是不會對 ~/.cache 這樣做,所以你可能會遇到一些未經測試的極端情況,這些情況會爆炸。例如,我注意到它ls -l --time=atime ~/.cache/tracker
顯示出相當多的變化,所以恐怕不能保證它可以很好地工作。許多最重要的軟體都會有一些可配置的限制。但是,必須單獨配置每個,為每個分配固定數量的可用空間(或 0)並不是一個很好的解決方案。
我想它可能對網頁瀏覽有用,例如允許 100M 以確保您避免重新下載最近的圖像和程式碼。(實際上我懷疑 Firefox 的預設“自動記憶體管理”會避免填充文件系統本身)。
您可以為一些“白名單”軟體(使用符號連結重定向它們)擁有一個單獨的 tmpfs,您相信它不會填充它/已為其分配固定空間,並讓其他軟體出現空間錯誤(和被你現有的系統粗暴地清理)。
論文
我建議,如果您負擔不起標準的磁碟記憶體,那麼您確實需要更改為僅支持所選軟體的記憶體,然後僅對其他所有內容執行損壞限制。“如果”是這裡的重要詞。
(或者:如果您使用的特定軟體在重要因素上勝過最常見的軟體,那麼也許您是對的,您需要包含該特定軟體)。
執行數字。您的 SSD 真的處於危險之中嗎?
好吧,如果我們談論的是具有最小 eMMC 且可以執行 Windows 的廉價上網本,那麼是的,你有點搞砸了。您可能需要監控您的磁碟空間使用情況、您的軟體、限制和禁用自己。如果您需要使用這種失控(組合?)軟體,tmpfs 可能是包含一些對磁碟記憶體的寫入的有用部分。但是您需要辨識特定的軟體。
然而,對於通常以“SSD”(而不是“eMMC”)出售的設備,目前從 128-256GiB 開始,最常見的軟體根本不會造成任何問題。如果你想要得到數據、測試、可靠來源等支持的通用保證,Google是你的朋友——有一大堆有趣的文章。就我個人而言,我希望能夠監控使用情況,以獲得一個大致的想法。我認為這裡有一些有用的工具。
- 我曾經
tune2fs -l /dev/...
在給定的 ext4 文件系統上查看“終身寫入”。不幸的是 btrfs 似乎不支持這一點。- 在正在執行的系統上,您可以查看
/sys/block/<dev>/stat
. 第七列表示對設備的 512 字節寫入次數。我想您可以定期在關機腳本中記錄此內容。sudo atop
可以在磁碟模式下顯示每個程序的磁碟寫入。例如,如果您按“d”,它將顯示自啟動以來每個程序的累積寫入。幾秒鐘後,它將變為顯示最後一個間隔。 FIXME大概有更好的方法,例如保持在頂部顯示累積數字。我在 cron 下使用 tune2fs 執行了一個腳本以附加到日誌文件,並觀察到每天寫入 1-4GB 的情況。這比我真正想看到的要高,但考慮到驅動器的額定壽命寫入,對我來說沒問題。它應該可以使用十年以上,屆時它將超出保修範圍並且無論如何都需要更換。即使您不打算在驅動器超出保修期之前更換 - 額定壽命也必須保守;它不會立即死亡。測試表明,驅動器的使用壽命是其額定值的許多倍。
你確實備份了,對吧?您不必依賴硬體故障的異常缺席來確保任何關鍵數據的生存。