基於小型 RAM 的 /tmp

基於小型 RAM 的 /tmp

我的 VPS 主機的配置 Web 介面為我提供了一個下拉框來設定我的/tmp.

預設為“16MB RAM”,替代選項為“硬碟”。

只有 16MB 的/tmp可用空間是否可能會給某些軟體帶來麻煩?或不?

答案1

只有 16MB 可用的 /tmp 是否可能會給某些軟體帶來麻煩?

是的,如果某個軟體想要寫入/tmp並且它或其他軟體已經填充了分區。一般來說,這可能表明系統配置不佳、對可用資源的合法限制,或者其他軟體的行為不當——無論如何,想要編寫的軟體不太可能嘗試自行找到解決方案並會拋出錯誤。

有些軟體會假設它可以將大檔案寫入/tmp,公平地說,這是一個公平的假設。這個問題屬於「配置不當」的錯誤範疇。

您應該問自己的第一個問題是:“使用 RAM 對我來說有什麼好處/tmp?”最明顯的是潛在的好處是存取 RAM 比存取磁碟快得多。然而,這種明顯的潛在好處在現實中不太可能有那麼大的好處,因為:

  • 無論如何,系統都會將經常存取的檔案快取在 RAM 中。減少可用於此快取的 RAM 量以便將/tmp其放入其中有點愚蠢,因為這意味著不常用的檔案/tmp將取代快取中的常用檔案。

  • 應用程式已經可以自由地將內容儲存在 RAM 中,這通常比將它們儲存在檔案中更容易,因此如果它們將某些內容放入 tmp 檔案中,則不太可能會從 RAM 中受益。如果您查看 中的實際內容/tmp,可能主要是套接字和 fifo 或少量 IPC 資料。透過基於 RAM 的檔案系統存取它們在概念上更簡潔,但我懷疑這會產生任何真正的區別。

既然如此,為什麼還要/tmp在RAM中實現呢?

  1. 它簡化了 的首選屬性的實現/tmp,即它在關閉時被擦除。

  2. 它可能會稍微減少硬體的磨損。這在僅具有廉價、有限壽命快閃記憶體用於儲存或根本沒有可寫入儲存(例如嵌入式系統)的環境中更為重要。

  3. 假設/tmp沒有被濫用,使用 RAM 會利用現代硬體通常巨大的記憶體容量——也就是說,這些東西也可能在 RAM 中,假設它是它應該是的那種東西。

16MB可以已經足夠了,但如果某個進程失控,也還不算什麼——而且/tmp必須是任何人都可寫的。然而,如果某個進程向 寫入內容時出現混亂/tmp,如果它最終填滿硬碟,或者因為耗盡了 RAM 分區而更快地發出紅旗,會更好嗎?

如果你對你正在使用的軟體有信心,後者更有意義,所以你可以選擇 RAM 分區。您應該先檢查您的實際/tmp使用情況,以防發生任何異常情況(例如du -h /tmp)。您可以提出一個“正常閾值”,並使用 cron 作業檢查該閾值,以在超出閾值時提醒某人和/或進行一些緊急清理。

不幸的是,某些應用程式可能偶爾會轉儲一些內容,/tmp如果突然失敗,這些內容不會被刪除,而在伺服器上(不會經常關閉),這些內容可能會無限期地留在那裡。我認為,這種情況的發生可能是非常無害的,例如,當有人登入並使用某些東西時,連線就會被任意關閉或放棄。

所以非RAM/tmp比較安全。濫用行為可能會在更長的時間內被忽視,但這只是因為它不像 RAM 那麼嚴重。此外,如果確實有什麼問題引起了問題,磁碟上就會留下確鑿的證據,指出問題的根源。

相關內容