星期三, 4月 25, 2012

zfs快照遠端差異複製

zfs是昇陽公司所開發的檔案系統,目前屬於Oracle所有。因為昇陽公司在設在時採用了先進的設計和開放的使用權,所以除了昇陽公司自己的Solaris系統(現在也屬於Oracle)外Apple的Mac OS和許多BSD也採用了zfs的檔案系統,Mac OS的時光回朔功能就是建立在zfs的快照功能之上。
zfs的設計的目的除了作為檔案系統外,還可以來拿作為開放的儲存平台。所以zfs 除了快照以外也提供了壓縮、避免重複資料(deduplication)、遠端複製等進階儲存設備才有的功能。
zfs的遠端複製使用send及receive來傳送及接收zfs的快照資料,如果要透過網路來傳送資料必須由使用者自行搭配其它網路工具來完成,zfs本身未內建網路傳送的功能。這樣的設計雖然操作上比較麻煩可是卻比較有彈性,例如,搭配的網路傳送工具大部分的人選擇了ssh而本文選擇為了效能考量選擇nc(netcut)。 


  1. 先做完整複製
    1. 快照來源端            zfs snapshot sourcepool/data@1
    2. 目的端準備接收    nc -l -p 2000|zfs receive targetpool/data
    3. 來源端傳送快照    zfs send sourcepool/data@1|nc 192.168.x.x 2000
  2. 後做差異複製 
    1. 再次快照來源端    zfs snapshot sourcepool/data@2
    2. 目的端準備接收    nc -l -p 2000|zfs receive targetpool/data
    3. 來源端傳送快照差異    zfs send -i sourcepool/data@1 sourcepool/data@2|nc 192.168.x.x 2000
    4. 完成後可視需要刪除來源端和目的端的第1份快照 ,第2分快照要保留以便下次差異複製時使用。

沒有留言: