Linux

安裝失敗時防止根系統填滿的最佳方法?

  • August 16, 2017

我們有一個內部 Web 伺服器(虛擬化,託管 ReviewBoard,但不是超級相關),我們有一個相對一致的故障模式,失敗的 NFS 掛載導致 / 填滿。發行版是 Ubuntu(不要問),如果解決方案依賴於不同的發行版,實施起來會更慢。

正在對 /mnt/backup/ 執行備份,這應該是將 NFS 掛載到另一個系統。不幸的是,當掛載失敗或掛載時,會在根文件系統上執行備份,正如您可以想像的那樣,很快 / 就滿了,然後服務開始失敗。

已經討論了許多可能的解決方案。

  1. 監控 /mnt/backups 並確保它不是 root。也許是一個 cron 工作。
  2. 使用 /mnt/protected/backups,並首先將 /protected 掛載到一個小文件系統,也許是循環掛載到本地文件,這樣它失敗的可能性就會大大降低。
  3. chmod a-rwx /mnt/backups(根文件系統掛載點)。我不確定安裝在受保護的導向器上是否有效,我認為可以。
  4. 在掛載的樹上創建一個名為“Backups”的目錄,然後軟連結“ln -s /mnt/backup/Backups /Backups”。除非掛載 /mnt/backup,否則使用 /Backups 進行備份將失敗,因為本地樹不包含子目錄。
  5. 執行檢查目錄是否正確安裝在備份腳本中。

我對這些方法的任何回饋、利弊或人們用作保護根文件系統免受此類討厭的標準方法的任何其他技術感興趣。

5 號 - 在您的備份腳本中進行測試,以確保在繼續之前安裝目錄。如果掛載不可用或不存在,腳本應該會失敗。或者您可以在執行備份之前確保已安裝內容。

試試這個mountpoint命令,它會檢查一個指定的目錄是否是一個掛載點:

mountpoint -q /mnt/backups || mount /mnt/backups

最防錯的解決方案是使掛載點不可寫。這將是您的解決方案#3。但是,您還應該執行一個額外的步驟。chattr +i /mnt/backups. 這是因為即使沒有權限,root 仍然可以寫入目錄。使用chattr +i(設置不可變標誌)甚至 root 都不能寫入它。掛載後,權限無關緊要,因為權限將屬於遠端目錄,而不是本地目錄。

引用自:https://serverfault.com/questions/337602