Skip to main content

ZFS操作說明

限制zfs記憶體使用量
zfs status
zpool import —取得zpool資訊
zpool import zpool名稱 —回復zpool儲存池
zpool list —看有無zfs
zpool get freeing zpool名稱       --檢查已經釋放的zpool空間
cat /proc/spl/kstat/zfs/arcstats --檢視運行參數
/etc/modprobe.d/zfs.conf
options zfs zfs_arc_max=4299967296 --限制最高4GB(zfs建議至少4GB)
zfs set user quota@username=10gb  --使用者配額(none則移除配額,groupquota為群組配額)
zfs get quota  --列出配額
zfs set reservation=10G   --zpool保留空間(none移除保留)
zfs get reservation   --檢視保留空間

補充:因為zpool destroy並不會同步馬上釋放,所以可以用這個指令先看已經釋放了多少

zpool create pool名稱 /dev/sda(要加入的硬碟)  —新增zpool
zpool create zpool名稱 mirror /dev/sda /dev/sdb —建立鏡射zpool
zpool add zpool名稱 raidz ada2s1 ada2s2 ada2s3 ada2s4(加入的硬碟)

補充:Raidz1 約等同 Raid5 允許一個HD掛
Raidz2 約等同 Raid6 允許兩個HD掛,但至少要4顆HD
Raidz3                   允許三個HD掛
-o ashift=12 設定參數
-m           指定路徑

zfs create -o compression=on zpool名稱 --建立zpool 並實行壓縮
zfs create -o compression=lz4 zpool名稱 --建立zpool 並實行lz4壓縮
zfs set compression=on tank(儲存池名稱) —設定現有zpool的壓縮
zfs set compression=lz4 tank(儲存池名稱)—設定現有的zpool lz4壓縮(建議)

zpool destroy pool名稱 —取消zpool(不會做確認)

補充:若有快照需先刪除快照,否則需加 -r 強制刪除

zpool offline zpool名稱 ada2s2 —硬碟下線
zpool replace zpool名稱 ada2s2(舊的) ada3s1(新的) —更換新硬碟
zpool detach zpool名稱 /dev/sda —卸載硬碟
zpool attach zpool名稱 /dev/sdb(原有) /dev/sda(新硬碟)   —加入新裝置(變Raid1)
zpool status —詳細狀態檢視
zpool clear -F zpool名稱  --修復zpool
zfs set compression=on zpool名稱 —對Zpool使用壓縮
zfs set compression=lz4 zpool名稱 —對Zpool使用lz4壓縮
zpool upgrade tank —更新zpool版本
zfs get compression —檢視壓縮狀況
zfs get compressratio—壓縮比(越高越好)
zfs rename (原名稱) (新名稱)

補充:ubuntu 需要先umount該區後才能更名

zfs diff   ---檔案比較
zfs snapshot zpool名稱@快照名稱   --建立快照(可用-r對子資料建立快照)
zfs destroy zpool名稱   --移除快照
zfs rename zpool原名稱 zpool新名稱 --更改快照名稱(可用-r對通常@後名稱做修改)
zfs rollback 快照名稱      --使用快照還原
zfs rollback 檔案路徑@快照名稱     --還原特定檔案或資料
zfs send zpoolA@快照名稱|zfs receive zpoolB(將zpoolA的快照內容轉至zpoolB,加-i作漸近式快照)
zfs send zpoolA@快照名稱 > zpoolB(將zpoolA的快照資料轉至zpoolB)
zfs list  --列出所有檔案(沒有快照,可用 -t all全部列出或-t snapshot 僅列出快照)

#清除超級塊:(加-f強制執行)

zpool labelclear

#取得儲存池資訊:

zpool get all zpool名稱

#列出硬碟詳細列表:

zpool list -v

#設定自動擴展容量:

zpool set autoexpand=on zpool名稱

#增加L2ARC讀取快取:(使用remove做移除)

zpool add -f zpool名稱 cache /dev/disk/by-id/

#增加ZIL寫入快取:

zpool add zpool名稱 log /dev/disk/by-id/

#重新更新zpool.cache File

zpool set cachefile=/etc/zfs/zpool.cache zpool名稱

#查看 zpool 使用狀況

zpool iostat -v

#對 zpool 加上 Metadata 的 Special Device 加速讀取效能的方式

zpool add zpool名稱 special mirror /dev/nvme0n1 /dev/nvme1n1

·    說明:Metadata 是指 ZFS 儲存檔案系統資訊的資料, 由於讀取和寫入頻率較高,因此對系統效能有較大的影響。所以在一般 HDD 的 ZFS 加上 SSD 當 Special Device 就可以提高整體存取效能。不過需要注意的是 Special Device 如果損壞, 整個 zpool 就會毀損, 因此會將 special device 用兩個實體的 SSD 進行 mirror 保護來確保安全。另外 spool 設上 special device 是無法復原回沒有設定的狀態, 因此設定前要審慎。
·    語法 : zpool add <pool> special mirror <device1> <device2>
·    Exp. 對 pbs-zpool 加上 /dev/nvme0n1 與 /dev/nvme1n1 當 special device

zpool iostat -v zpool名稱  —可以檢視實際寫入狀況
zfs scrub zpool名稱   —錯誤檢察

備註:如果要中止請加-s


容量擴充
逐步將新的大容量硬碟換上做同步後執行

zpool online -e pool-00 adaX adaX 即可

zfs新增使用swap

zfs create -V swap空間 zfs名稱/swap
zfs set checksum=off zfs名稱/swap
zfs set 自定義名稱:swap=on zfs名稱/swap
ll /dev/zvol/zfs名稱/ #檢查是否設定完成
mkswap -f /dev/zvol/zfs名稱/swap
swapon /dev/zvol/zfs名稱/swap
vim /etc/fstab 
/dev/zvol/zfs名稱/swap none swap sw 0 0

限制zfs記憶體使用量

nano /etc/modprobe.d/zfs.conf
     4GB:
                options zfs zfs_arc_max=4294967296
     6GB:
                options zfs zfs_arc_max=6442450944
update-initramfs -u -k all