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/usera@tuesday
復原到前一個快照
# zfs rollback tank/home/usera@monday
查看星期三的 foo.c 版本
$ cat /tank/home/usera/.zfs/snapshot/wednesday/foo.c
刪除快照
# zfs destroy -R tank/home/usera@monday
3.ZFS Clone
快照的可寫副本
即時建立、數量不限
儲存大部分為共用資料的眾多專用副本的理想方法
軟體安裝
工作區
無盤客戶機
建立 OpenSolaris 原始碼的複製
# zfs clone tank/solaris@monday tank/ws/lori/fix
4. ZFS send/receive
基於快照點
完整備份:任何快照
增量備份:任何快照增量
速度很快 - 開銷與更改的資料成比例
非常高效,可執行遠程複製
產生完整備份
# zfs send tank/fs@A >/backup/A
產生增量備份
# zfs send -i tank/fs@A tank/fs@B >/backup/B-A
遠程複製:每分鐘發送一次增量
# zfs send -i tank/fs@11:31 tank/fs@11: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,錄於此,以備速查。