1. 建立pool和ZFS檔案系統:
. 建立檔案系統,挂載在 /export/home 下
# zfs create tank/home
# zfs set mountpoint=/export/home tank/home
. 為多個使用者建立起始目錄
請注意:由于繼承而自動挂載在 /export/home/{ahrens,bonwick,billm} 下
# zfs create tank/home/ahrens
# zfs create tank/home/bonwick
# zfs create tank/home/billm
. 向池中添加更多空間
# zpool add tank mirror c2t0d0 c3t0d0
. 建立名為 “tank” 的存儲池 (type: “”,mirror,raidz,raidz2)
# zpool create tank <type> c0t0d0 c1t0d0 c1t1d0
. 修改檔案系統名稱
# zfs rename tank/home/ahrens tank/home/nahrens
. 删除檔案系統
# zfs destroy -Rf tank/fs
. 修改存儲池的名稱
# zpool export tank
# zpool import tank newpool
2. 設定屬性
自動以 NFS 方式共享該檔案系統
# zfs set sharenfs=rw tank/home
對檔案系統中所有資料啟用壓縮
# zfs set compression=on tank
将使用者 A的最大空間限制為 10g
# zfs set quota=10g tank/home/usera
保證使用者 B有 20g 的預留白間
# zfs set reservation=20g tank/home/userb
可通過指令查詢檔案系統的所有屬性
# zfs get all tank/home
可通過指令查詢存儲池的所有屬性
# zpool get all tank
大多數屬性可通過繼承方式自動設定
# zfs inherit <property> tank/home/eschrock
3. ZFS snapshot
檔案系統的隻讀副本
即時建立、數量不限,不占用額外空間 - 塊僅在發生更改時才會被複制
可通過每個檔案系統根目錄下的 .zfs/snapshot 通路
使使用者可在沒有系統管理者介入的情況下恢複檔案
對使用者A 的起始目錄執行快照捕獲
# zfs snapshot tank/home/[email protected]
復原到前一個快照
# zfs rollback tank/home/[email protected]
檢視星期三的 foo.c 版本
$ cat /tank/home/usera/.zfs/snapshot/wednesday/foo.c
删除快照
# zfs destroy -R tank/home/[email protected]
3.ZFS Clone
快照的可寫副本
即時建立、數量不限
存儲大部分為共享資料的衆多專用副本的理想方法
軟體安裝
工作區
無盤客戶機
建立 OpenSolaris 源代碼的克隆
# zfs clone tank/[email protected] tank/ws/lori/fix
4. ZFS send/receive
基于快照點
完整備份:任何快照
增量備份:任何快照增量
速度很快 - 開銷與更改的資料成比例
非常高效,可執行遠端複制
生成完整備份
# zfs send tank/[email protected] >/backup/A
生成增量備份
# zfs send -i tank/[email protected] tank/[email protected] >/backup/B-A
遠端複制:每分鐘發送一次增量
# zfs send -i tank/[email protected]:31 tank/[email protected]:32 |
ssh host zfs receive -d /tank/fs
5. ZFS 資料遷移
獨立于主機的磁盤格式
将伺服器從 x86 更改為 SPARC,也能運作
自适應位元組存儲順序 (Adaptive endianness):在兩個平台上都無需額外成本
寫入總是使用本地位元組存儲順序 (native endianness),在塊指針中設定位
僅當主機位元組存儲順序 (endianness) != 塊位元組存儲順序時,才會針對讀取進行位元組交換
ZFS 負責所有處理
無需考慮裝置路徑、配置檔案、/etc/vfstab 等等
ZFS 會在必要時進行共享/取消共享、挂載/取消挂載等等
從舊伺服器上導出池
old# zpool export tank
實體移動磁盤并将池導入到新伺服器中
new# zpool import tank
6. 裝置管理
添加/替換新裝置 (type: “”,mirror,raidz,raidz2)
# zpool add tank <type> c0t2d0 c0t3d0 c0t4d0
# zpool replace tank c0t1d0 c0t2d0
添加/移除鏡像裝置
# zpool attach tank c0t1d0 c0t2d0
# zpool detach tank c0t2d0
将裝置停止或手工啟動
# zpool offline tank c0t2d0
# zpool online tank c0t2d0
檢視存儲池目前狀态和 I/O 狀況
# zpool status -v tank
# zpool iostat tank 1
添加熱備裝置
# zpool add tank spare c0t2d0
指定熱備啟動/停止熱備
# zpool replace tank c0t1d0 c0t2d0
# zpool detach tank c0t2d0
将熱備裝置删除
# zpool remove tank c0t2d0
添加/删除獨立的日志裝置(性能改善)
# zpool add tank log c0t3d0
# zpool remove tank c0t3d0
7. ZFS 權限管理
可以将zfs(1M) 的管理權限分派給普通使用者
'zfs allow'
'zfs unallow'
将權限授予一個普通使用者
# zfs allow marks create,snapshot tank/marks
将指定權限回收
# zfs unallow marks create,snapshot tank/marks
檢視檔案系統目前的權限
# zfs allow tank/marks
8. 其它指令
顯示存儲池所有操作曆史記錄
# zpool history tank
更新存儲池到指定 SPA 版本
# zpool upgrade -V <version> tank
更新檔案系統到指定 ZPL 版本
# zfs upgrade -V <version> tank/fs
手工挂載/解除安裝檔案系統
# zfs mount -a
# zfs unmount tank/fs
# zfs unmount -a
以上内容摘自一位工程師presentation,錄于此,以備速查。