2014年8月31日 星期日

[FreeBSD]zfs snapshot建立

ZFS源自於Sun MicrosystemsSolaris作業系統開發的檔案系統。ZFS是一個具有高儲存容量、檔案系統與卷管理概念整合、嶄新的磁碟邏輯結構的輕量級檔案系統,同時也是一個便捷的儲存池管理系統。
而接下來要使用zfs中非常實用的功能-snapshot,關於snapshot的說明如下:
ZFS使用寫時拷貝技術的一個優勢在於,寫新資料時,包含舊資料的塊被保留著,提供了一個可以被保留的檔案系統的快照版本。由於ZFS在讀寫操作中已經儲存了所有構建快照的資料,所以快照的建立非常快。而且由於任何檔案的修改都是在檔案系統和它的快照之間共享的,所以ZFS的快照也是空間最佳化的。
可寫快照("克隆")也可以被建立。結果就是兩個獨立的檔案系統共享一些列的塊。當任何一個克隆版本的檔案系統被改變時,新的資料塊為了反映這些改變而建立,但是不管有多少克隆版本的存在,未改變的塊仍然在其他的克隆版本中共享。
首先要先觀察目前zfs狀態
#zpool status直行後出出現下列狀態,如果沒有請檢查一下相關設定.
 pool: <zpool name>
 state: ONLINE
  scan: none requested
config:

        NAME                  STATE     READ WRITE CKSUM
        <zpool name>          ONLINE       0     0     0
          gpt/disk0           ONLINE       0     0     0

errors: No known data errors
接著建立第一個snapshot指令如下:
#zfs snapshot <zpool name>@<snapshot name>
再來觀察剛剛建立的snapshot是否有被建立成功
#zfs list -t snapshot
NAME      USED  AVAIL  REFER  MOUNTPOINT
<zpool name>@<snapshot name>  snapshot M      -  zfs space G  -
以上就是非常簡單的zfs snapshot建立,然後進入進階指令用法.
1.刪除快照 
# zfs destroy <snapshot name>
2.壓縮快照
 # zfs send <zpool name>@<snapshot name> | gzip > <backupfile name>.gz(要先有快照檔才能壓縮)
3.只有一個snapshot檔案的指令(不建議使用萬一有需要在N個時間點前撈資料就發揮不了snapshot的功能)
#zfs hold keep <zpool name>@<snapshot name>
4.回復snapshot(不建議這樣使用rollback會回復所有snapshot的資料,萬一你只要恢復其中一個檔案時)
#zfs roolback <snapshot name>
5.首先設定可以看到 .zfs 的快照目錄
#zfs set snapdir=visible <zpool name>
再來就是到 /<zpool name>/.zfs 裡找你被刪掉的檔案囉 ~~
cd /.zfs/snapshot/<snapshot name>/

最後請思考一下下列問題當作功課:
1.如何建立多個snapshot?
2.如何建立多個帶時間(年月日時分)的snapshot?
3.建立snapshot後會影響到什麼?
4.怎麼刪除多個帶時間(年月日時分)的snapshot?

沒有留言:

張貼留言