[FreeBSD] ZFS 快照(snapshot)

如果數據集(dataset)存在快照(snapshot),則不能銷毀該數據集。
如果已從快照創建克隆(Clone),則必須先銷毀克隆,才能銷毀快照。

  • 建立快照
    創建 tank/home/ahrens 的快照,其名稱為 friday。

    # zfs snapshot poolname/home/ahrens@friday

    -r 選項可為所有後代文件系統創建快照。

    # zfs snapshot -r tank/home@now
    # zfs list -t snapshot
  • 檢查dataset
    #zfs list
  • 讓snapshot可讀
    # zfs set snapdir=visible poolname

    會出現/poolname/.zfs

  • 備份快照
    1. 將備份的 snapshot 放在本機的其他 zfs 區域:

    # zfs send zroot@root | zfs recv Seagate_3T/zroot_backup  會在 Seagate_3T 的目錄新增 zroot_backup 的目錄來備份 zroot@root
    # df -h
    Filesystem                 Size    Used   Avail Capacity  Mounted on
    zroot                      9.6G    805M    8.8G     8%    /
    Seagate_3T                 2.7T     32k    2.7T     0%    /Seagate_3T
    Seagate_3T/zroot_backup    2.7T    805M    2.7T     0%    /Seagate_3T/zroot_backup
    # zfs list -t snapshot
    NAME                           USED  AVAIL  REFER  MOUNTPOINT
    Seagate_3T/zroot_backup@root    27K      -   805M  -
    zroot@root                     186K      -   805M  -

    2. 遠端備份:
    先讓 S HOST 使用rsa key登入D HOST

    # zfs send poolname@date | ssh (destination IP) zfs receive poolname/backup

    可用 netstat 1 觀察 D host狀況

  • 壓縮快照
    zfs 也提供將 snapshot 壓縮的功能:

    # zfs send pool/fs@snap | gzip > backupfile.gz
  • 增量備份
    # zfs send -i poolname@snap1 poolname@snap2 | ssh host2 zfs recv poolname/backup

    第一個參數是較早的快照,第二個參數是較晚的快照。在這種情況下,poolname/backup dataset必須存在,增量接收才能成功

  • 倒回快照 # zfs rollback
  • 刪除快照 # zfs destroy 快照名稱

參考資料:Oracle Solaris ZFS 管理指南

[FreeBSD] ZFS 快照(snapshot) 有 “ 1 則迴響 ”

發表迴響