在 ZFS 中使用精簡配置時,如何確保不會耗盡物理磁碟空間?
如果這似乎是一個基本問題,請原諒我,但我在 Google 上找不到任何具體的東西,而且我不是行業的系統管理員。
我們正在辦公室使用 NexentaStor 和 8 磁碟 RAID Z3 配置(8 x 1.36 TB 驅動器)設置 SAN,並且正在配置所有內容。
目前,就總磁碟空間而言,我們在 SAN 上有大約 10.8 TB 的“真實”儲存,全部分配在單個 zpool/zvol 中。我正在考慮用 100 TB 的空間(例如為了爭論)精簡配置 zvol,以應對未來的增長。
理論上看起來很簡單:當我們接近用完實際磁碟空間時,我們只需添加一些新驅動器,它就會“正常工作”:無需擔心文件系統大小調整或停機時間。
但是,我們如何知道何時需要添加更多容量,而不是每隔幾個小時登錄 SAN 並確保我們仍有可用空間?
例如,這通常是通過設置
cron
作業來處理,還是 NexentaStor(或 ZFS 本身)在您接近容量時提供警告,或者您是否應該只“知道”在任何給定時間剩餘多少空間並且必須自己跟踪?如果有幫助,10.8 TB zvol 將用作我們的虛擬伺服器和測試虛擬機(也是精簡配置)的備份儲存(通過 iSCSI),所以我看到的部分問題是它可能很容易執行如果我們不斷地創建/快照/恢復虛擬機(我們在測試不同的機器配置和軟體環境時經常這樣做),就會導致磁碟空間不足。
在 Nexenta 方面,有一個
volume-check
預設設置為每小時執行的腳本。它將:
Check volume health and capacity, clear correctable device errors, validate mountpoints.
它還通過電子郵件發送每週總結報告。
但是,在為您列出的目的規劃 Nexenta 儲存解決方案時,您應該考慮一些事項。
- 您可能需要考慮擁有多個池以提高靈活性。單個池可以工作,但有時需要移動數據,或者只能在本地儲存上選擇第二個池。
- ZFS zvol 可以動態擴展/收縮。例如,如果您將 20TB 分配給精簡配置的 zvol,則可以非常輕鬆地將其更改為 30TB 或 100TB。如果您目前沒有 100TB,則無需為將來過度配置 100TB。
- 使用精簡配置的 zvol,一旦空間被使用,您就無法回收它。如果您在 10TB 池中精簡配置 2TB zvol,填滿 zvol,然後刪除該 zvol 上的 VM,您的池仍將僅顯示 8TB 可用空間。2TB 將保留。
- 您將使用 ZFS 壓縮或重複數據刪除,還是兩者都使用?過度配置確實有意義的一種情況是,如果您使用的是內聯壓縮和高度可壓縮的數據。重複數據刪除的數據也是如此。就我而言,我使用的數據集壓縮了 60%-80%,因此我提供的 zvol 比我實際擁有的儲存量更大。
- 使用鏡像與 raidz1/2/3 相比,可以更輕鬆地擴展底層儲存。您可以將鏡像磁碟對添加到 zpool,但不能擴展 raidz1/2/3,除非您添加另一個 vdev(raidz(x) 磁碟組)。您還希望重新平衡其中的數據以在磁碟之間重新分配。
- 您將使用哪種虛擬化技術?如果是 VMWare,則可以精簡配置。我相信,您將看到接近 80% 使用率的數據儲存警告。如果您處於快照大小增長的危險情況,VMware 也會抱怨。
- 如果您正在進行大量 VM 測試,或者 VM 的大小會波動,我建議將 iSCSI 和 zvols 用於相對靜態的 VM,將 NFS 用於測試 VM(如果這是您首選的虛擬化解決方案的一個選項)。使用 NFS,您可以更有效地利用儲存空間,因為您可以看到 zpool 的全部可用大小並且無需擔心任何大小上限。
簡而言之……我不會過度配置來考慮未來的增長。這不是必需的。Nexenta 每小時檢查一次,以提醒空間使用率。還要考慮是否會使用壓縮(重複數據刪除需要更多計劃)。在投入生產之前進行測試並查看 VM 佔用空間的樣子。以後改起來就更難了。