我有一個用於科學計算的伺服器,每個用戶都有一個虛擬機器(Linux或Windows)供他們使用。問題是,當許多使用者使用該伺服器時,這些計算產生的報告會佔用大量儲存空間。
我想知道是否有任何方法可以壓縮輸出,不是在報告完成之後,而是在將其寫入磁碟時
更新1:我們使用 Vsphere 作為虛擬機器管理程序,使用 HDD 進行存儲
答案1
您可以內聯壓縮和/或刪除重複的儲存。有多種方法可以實現這一目標——有些更簡單,有些更有效。
首先,Linux 和 UNIX 系統可以使用 ZFS——一種檔案系統和磁碟區管理器,支援區塊層級的壓縮和重複資料刪除。任何在此之上構建的共享或本地存儲系統都可以使用這些功能,因此像 ZFS 之上的 NFS 這樣簡單的東西就可以透過跨所有虛擬機的共享池來完成您想要的操作。
Linux 可以使用 btrfs,這是一個支援內嵌重複資料刪除和壓縮的多裝置檔案系統。與上面的想法相同。 Btrfs 的硬體需求比 ZFS 少,但內聯重複資料刪除仍然相當密集(因為您最好使用任一檔案系統在更大的共用資料集上執行此操作)。關於 btrfs 需要記住的一點是,它首先是一個檔案系統,其次是一個磁碟區管理器。它也不像 ZFS 那樣提供基於區塊的抽象,因此它純粹是一個基於檔案的系統。
有多種 NAS/SAN 產品包含此功能。使用共享儲存可以充分利用重複資料刪除和壓縮,同時成為固定且受支援的產品。 FreeNAS 就是這類系統的範例,它可以使用 ZFS。 Synology NAS 設備也可以且經常使用 btrfs。
答案2
我同意@SmallLoanOf1M,但您可以做的另一個想法實際上是壓縮虛擬機內的報告- 這樣您就不會將負載放在底層虛擬機管理程序(即Xen Dom0)上並將其置於虛擬機的CPU限制內。
如果您可以透過管道傳輸數據,您始終可以執行以下操作:
report-generator-program | lz4 > report-file.lz4
或者,gzip
如果您想要更慢但更好的壓縮,或者xz
想要融化您的 CPU,請使用。