9.1. | 使用 ZFS 最少需要多少記憶體? |
至少需要 4GB 的記憶體才能跑得順,但不同的工作負載可能會造成相當大的差異。 | |
9.2. | ZIL 是什麼而又何時會被使用? |
The ZIL (ZFS 動向日誌) 是一個紀錄日誌,用以實現系統當機時 POSIX 寫入保證的語義,多個正常 ZFS 寫入動作會被分成多個交易處理群組,並在交易處理群組被填滿時寫入磁碟 (“Transaction Group Commit”)。然而像 fsync(2) 這樣的系統呼叫,會要求該系統呼叫在返回前,能承諾已將資料寫入磁碟,ZIL 就是用來紀錄確認為已執行寫入的資料,但其實尚未存在於磁碟上,即尚未完成交易處理,交易處理群組具有時間戳記,在系統當機後,找到 ZIL 最後一個有效的時間戳記,即將遺失的資料再舍併至磁碟上。 | |
9.3. | 我需要用固態硬碟 (SSD) 來存 ZIL 嗎? |
ZFS 預設將 ZIL 儲存在包含所有資料的 zpool 中,如果應用程式的寫入負載很重,將 ZIL 儲存在同步速度非常快的獨立設備中,藉由循序寫入效能的提高可以改善整個系統的效能,對於其他類型的工作負載, 固態硬碟就不會有太大的助益。 | |
9.4. | L2ARC 是什麼? |
The L2ARC (Second Level Adaptive Replacement Cache) 是存於快速儲存設備 SSD 上的讀取快取,此快取在重新開機後會消失,請注意記憶體是第一層的快取,只有在記憶體不足的情況下才需要 L2ARC。 L2ARC 需要 ARC 的空間來為其製作索引,因此,有一種反常的情況,如果有一種工作集 (working set) 可以完美地剛好放入 ARC,一旦系統使用 L2ARC,該工作集的運作將不再完美,因為 ARC 需要用一部分空間來保存 L2ARC 的索引,以至於必須將工作集的一部分存入比記憶體慢的 L2ARC。 | |
9.5. | 建議啟用去冗餘 (deduplication) 嗎? |
一般而言,不建議這麼做。 去冗餘需要相當多的記憶體,而且會讓讀寫磁碟所需的時間變長,除非磁碟上儲存了非常多重複的資料,例如:虛擬機的映像檔或者是使用者的備份資料,否則開啟去冗餘可能弊大於利。另一個需要考量的狀況是:啟用去冗餘功能之後再將其關閉,無法將磁碟上去冗餘的狀態立即逆轉,必須等到下次修改了之前被去冗餘的資料,變更的區塊才會再被複製一份。 去冗餘也可能會導致某些非預期的情況,特別是刪除檔案時可能會慢很多。 | |
9.6. | 在我建立的 ZFS pool 中無法刪除和新增檔案,應該怎麼修復? |
這很有可能是該 pool 的空間使用率已達 100% 滿了,因 ZFS 需要儲存空間以將紀錄交易處理的輔助資料 (metadata) 寫入,為了讓該 pool 回復至可用狀態,必須用檔案切除的方法 (truncate 命令) 刪除不重要的檔案:
因為檔案切除不需要建立交易處理紀錄,並能釋放出可使用的磁碟區塊。 注意:如果系統曾進行過額外的 ZFS dataset 調校,例如:去冗餘,釋放出來的空間也許不會立即可得。 | |
9.7. | ZFS 支援固態硬碟 (SSD) 的 TRIM 功能嗎? |
自 FreeBSD 10-CURRENT 修定 r240868 開始,就支援 ZFS TRIM。ZFS TRIM 的支援分別已在 r252162 和 r251419 的修訂,加進所有 FreeBSD-STABLE 分支。 ZFS TRIM 預設就已開啟,也可以將其關閉,只要加入一行設定到 vfs.zfs.trim.enabled=0 注意:ZFS TRIM 也可能某些設定中會無效,例如:在採用 GELI 裝置上的 ZFS 檔案系統。 |
本文及其他文件,可由此下載: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。
若有 FreeBSD 方面疑問,請先閱讀
FreeBSD 相關文件,如不能解決的話,再洽詢
<questions@FreeBSD.org>。
關於本文件的問題,請洽詢
<doc@FreeBSD.org>。