
我知道,使用 Ploop 會丟失磁碟空間,因為在容器內添加/刪除文件,並且必須手動壓縮容器,但我還讀到,如果重新啟動或發生崩潰,容器可能會變得不可恢復。
有沒有辦法正確重新啟動 OpenVZ 伺服器以避免容器損壞?
答案1
即使不乾淨地關閉了 plooped 容器,通常也足以進行 fsck。這與在寫入操作期間關閉實際硬體沒有太大區別。因為我猜測您將在這些 ploop 上使用帶有交易日誌的檔案系統,所以您不應該遇到更多問題。
正如 Brian 所提到的,正確關閉主機節點將使容器保持乾淨並卸載它們的 ploop。
如果您使用的基於目錄的容器與主機節點使用相同的檔案系統,現在損壞的可能性很小。我認為實際上沒有太大區別,只是您可能需要考慮恢復時間。許多 ploop 的 fsck 時間可能比一個主機節點的檔案系統花費的時間更長,並且可能需要大量的手動互動。
另一方面,如果您的主機節點有一個非常大的檔案系統,則 fsck 可能需要很長時間,並且在 fsck 期間所有這些容器都會關閉。使用 ploop 的容器可以在主機節點恢復後以交錯方式啟動,前提是主機節點本身沒有任何需要 fsck 的內容。
您可以透過某種高可用性設定來緩解這種情況,其中主機節點從中央儲存加載其容器數據,並在發生故障時相互打開/關閉,但我認為這太過分了。
您考慮 ploop 的原因是什麼?我們考慮透過 NFS 來提高效能,容器中的許多小檔案確實會降低速度。但既然您提到了檔案系統損壞,那麼這可能不是您的情況。
答案2
不,您必須等到每個 ploop 都正確停止。
ploop 容器必須啟動才能透過其根目錄存取其檔案。
simpfs 容器是類似於 chroot 的目錄結構,因此無論開啟/關閉都可以存取它。
我管理著數千個貨櫃,我不能浪費時間等待。每當我需要存取或進行遷移時,我都必須等待 ploop 容器啟動,或者等到它關閉才能管理具有 ploop 容器的主機。另外,如果 ploop 損壞了,那麼你就必須從頭開始,它就消失了。因為我經歷過這種損害不是一次或兩次,所以我稱它為不可靠的系統,無論它應該有多好。