天天看點

ZFS常用指令

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,錄于此,以備速查。