Linux

ZVOL 上 ZFS/ext4 的可靠性,不是用於性能,而是用於透明壓縮,在低記憶體系統上?

  • March 7, 2018

我在網際網路上閱讀了許多關於低記憶體系統上 ZFS 的爭議聲明,但大多數案例都是用於高性能數據儲存。

我想使用 ZFS 不是出於性能原因,而是因為它支持透明壓縮和重複數據刪除(後者可能是可選的)並且似乎仍然比 BTRFS 更成熟。我不想使用任何 RAID 配置。

我想在筆記型電腦上使用它,用於 root 和 home 文件系統,儲存空間和數據安全(斷電或其他隨機不一致後的可恢復性,由於 RAM 低導致的損壞風險非常低等)比磁碟性能。我希望與 ext2/3/4 提供的安全性相當。

我想在 ZVOL 上使用 ext4。

所以,問題是:

  • 如果不關心 IO 性能/記憶體並且不需要 RAID 功能,是否可以將 ZFS 配置為在“低 RAM”下可靠地工作?
  • 如果我不使用 ZFS 作為文件系統本身,而只是使用 ZVOL,我將另一個文件系統放在上面,那麼 RAM 需要如何變化?
  • 啟用重複數據刪除後,RAM 需要如何變化?如果打開了重複數據刪除並且 RAM 開始變低,它是否仍然安全 - ZFS 可以暫停重複數據刪除並使用更少的 RAM 嗎?
  • 是否可以停用自動重複數據刪除,但不時手動執行?
  • 即使在 RAM 較低的情況下,ZVOL 上的 ext4 能否可靠地儲存我的數據,並且如果發生不一致,修復的成功機會很高(就像 ext2/3/4 一樣)?ZVOL 之上的 ext4 是否會增加強韌性,因為它增加了 ext4 的強韌性,還是數據與底層 ZVOL 一樣強韌?

系統規格:

  • Linux
  • 8 GiB RAM(與顯卡共享),但其中大部分(至少 7 GiB)應該可用於使用者空間軟體,
  • 用於 ZFS 的大約 700 GiB SSD 儲存,
  • 可能在另一個系統上 128 GiB 的 eMMC 用於 ZFS。
  • 目前磁碟使用情況(du -sh位於 的較大目錄/)(/ 是 ext4,安裝在頂部的 /var 是 reiserfs)(希望將其移動到具有透明壓縮的儲存):
74M     /etc
342G    /home
5.0G    /opt
1.5G    /root
261M    /tmp
35G     /usr
30G     /var

或者,只使用 BTRFS(已經閱讀過由於“錯誤”可能會發生嚴重/難以恢復的數據失去,但這都是有爭議的……)?

簡短的回答:

  • 是的,它可以成功地使用 ZFS 的低 RAM (~ 1 GB)。
  • 您不應該使用 dedup,但 RAID 和壓縮通常是可以的。
  • 啟用複制後,它適用於所有新寫入的數據,您無法輕易擺脫它。
  • 您不能啟用重複數據刪除追溯,因為它僅適用於線上數據。
  • 你的想法是不必要的複雜,沒有充分的理由,所以我建議只使用 ZFS 並收工。

長答案:

如果不關心 IO 性能/記憶體並且不需要 RAID 功能,是否可以將 ZFS 配置為在“低 RAM”下可靠地工作?

是的,即使啟用了 RAID 功能。您需要的比網上人們聲稱的要少得多,例如,看看這個執行高速文件伺服器的人,該伺服器使用 FreeBSD、2 核和768 MB虛擬化。或者查看 SolarisInternals Guide(目前只能通過 archive.org 獲得),其中提到 512 MB 作為最低要求,1 GB 作為最低建議,2 GB 作為完整建議。

不過,我會遠離重複數據刪除。不是因為分頁記憶體很慢,而是因為如果您的系統停止執行,您將無法返回非重複數據刪除。此外,它是 RAM 和磁碟之間的交易,而在預算系統上,您兩者都沒有,因此您不會獲得太多收益。

如果我不使用 ZFS 作為文件系統本身,而只是使用 ZVOL,我將另一個文件系統放在上面,那麼 RAM 需要如何變化?

您將需要額外的記憶體用於第二個文件系統和 ZFS 之上的層,具體取決於您計劃如何訪問它(KVM、FUSE、iSCSI 等虛擬化)

啟用重複數據刪除後,RAM 需要如何變化?如果打開了重複數據刪除並且 RAM 開始變低,它是否仍然安全 - ZFS 可以暫停重複數據刪除並使用更少的 RAM 嗎?

您無法暫停重複數據刪除,但您的數據仍然是安全的。會有很多記憶體交換和等待,所以它可能不是很有用。重複數據刪除是線上的,因此要禁用它,您需要關閉重複數據刪除並再次寫入所有數據(這實際上是將所有數據複製到新文件系統並銷毀舊文件系統)。

是否可以停用自動重複數據刪除,但不時手動執行?

不,因為它不會影響靜態數據。如果您啟用了 dedup 並想要寫入一個塊,ZFS 會查看它是否存在於 dedup 表中。如果是,則放棄寫入並將引用添加到去重表。如果否,則寫入並添加第​​一個引用。這意味著您的舊數據不受重複數據刪除的影響,並且在不寫入任何新塊的情況下打開它對舊數據的使用大小沒有任何影響。

即使在 RAM 較低的情況下,ZVOL 上的 ext4 能否可靠地儲存我的數據,並且如果發生不一致,修復的成功機會很高(就像 ext2/3/4 一樣)?ZVOL 之上的 ext4 是否會增加強韌性,因為它增加了 ext4 的強韌性,還是數據與底層 ZVOL 一樣強韌?

在我看來,這是不必要的複雜性,因為您不會獲得新功能(例如在相反的情況下使用下面的 ext4 和頂部的 ZFS,例如快照),並且還會獲得一些新的職責,例如fsck更多的fdisk格式化練習。

我會這樣做的唯一案例是如果有一個特殊的應用程序需要特定文件系統的低級功能或具有硬編碼的假設(幸運的是,這種行為最近似乎已經消失了)。

引用自:https://unix.stackexchange.com/questions/358778