答案1
(免責聲明:作為 ZFS 初學者,這只是我目前的理解,旨在推動其他人提供更完整、更可靠的資訊)。
池屬性
ashift=12
在基本層面上,這確保 ZFS 的讀取/寫入操作與底層儲存的區塊邊界對齊。理論上對於 512 位元組的區塊來說就可以了,但是現在具有這些區塊的驅動器很少見,並且設定「太高」
ashift=9
的懲罰相當低。ashift
autotrim=on
自動地當不再需要某些空間時通知底層塊存儲。對於 SSD 特別有用,但似乎對經典 HDD 也沒有傷害(儘管它可能不會有幫助)。
資料集屬性
這些可以使用zfs create -o
或透過根檔案系統-O
的開關來指定zpool create
(預設將繼承給其他檔案系統)。
xattr=sa
這顯著提高了 xattr 的性能,並且沒有真正的缺點。 (僅適用於 Linux目前)。
dnodesize=auto
使用時應使用此屬性
xattr=sa
。不使用這些的主要原因是與不支援所需 ZFS 功能的系統交互。relatime=on
即使在唯讀互動中,追蹤文件的存取時間也可能非常昂貴。
relatime
顯著降低這些更新的粒度/頻率,但代價是atime
屬性中的資訊不太精確(同時保持一些通常需要的不變量)。請注意,長期以來,這是 Linux 上幾乎所有檔案系統的預設設定。如果需要精確atime
訊息,請不要開啟此功能。如果人們知道atime
永遠不需要它,那麼atime=off
可以提供更好的性能。normalization=formD
這將確保檔案名稱始終以相同的方式標準化。作為一個主要副作用,這也意味著檔案系統會將檔案名稱視為 UTF-8 編碼,並且無法再儲存其他檔案系統接受的具有某些「損壞」名稱的檔案名稱。如果不需要這樣做,則將其忽略。
compression=lz4
人們的共識似乎是,現代硬體上的壓縮成本是如此之低,以至於這實際上只有好處。主要儲存已經高度壓縮的資料的資料集可能需要關閉此功能。
不
recordsize
對於許多用例來說,預設記錄大小似乎是一個很好的中間立場,但某些用例(例如資料庫)可能會受益於特定值。
來源
- ZFS 上的 Debian 根目錄
- 許多個人論壇貼文