安裝 FreeNas 8 Part THREE

ZFS Replication

ZFS 除了提供 SnapShot 功能外,另一個重頭戲就是遠端複製,該複製基準是依照 SnapShot 的順序執行,所以省去很多比對兩端檔案的時間,同時傳檔時是以 Block 為基準,沒有更動過的部分是不需要重傳,可以大幅度降低頻寬的使用;同時執行 SnapShot 是可以調整時間,可依照情況網路離峰時間來做同步。

在安裝時網路上只有找到官方文件,很少有其他參考資料,依照官方步驟執行一定會出錯,而此錯誤沒有 Log 可以參考,所以花了很多時間 Try & Error,我的執行步驟參考官網文件後如下:


  1. 由於兩端傳檔時須透過 SSH 加密通道,所以要讓這來源端(Source)有目的端的(Destination)的憑證資料,中間沒有GUI 介面直接操作,必須先開啟 SSH 服務並允許 root 登入,所以先到 Service -> SSH 打開服務並在 Login as Root with password 選項打勾
  2. 使用 Putty 之類的 SSH Client 分別登入到這兩台主機,再多嘴一下,root 的密碼就是 freeans, 記得用 passwd 指令來變更一下比較安全。
  3. 因為要記錄兩個很長的 1024 byte Key, 先打開 NotePad 準備記錄,在 Source 輸入 cat /data/ssh/replication.pub,把內容擷取下來貼到 Notepad 上;這個 Key 是 Source 的 Public Key,要給 Destination 電腦確認對方的身分。
    Freenas 8 SSH Key
    Freenas 8 SSH Key
  4. 在 Source 上輸入 ssh-keyscan [Destination電腦IP] 可以得到一組確認目的電腦的金鑰,看到的畫面跟上面類似,在把另一組金鑰貼到NotePad上,您應該可以看到類似下面的畫面。
    SSH KEY
    SSH KEY
  5. 切換到Destination 執行以下的指令
    • mount –uw /
    • mkdir –p /root/.ssh
    • chmod 700 /root/.ssh
    • cd /root/.ssh
    • vi authorized_keys
    • 這些指令是在 root home directory 建立一個 .ssh 的路徑,然後把Source的 Public Key 丟進去
  6. 切到 Source 執行以下指令
    • mount –uw /
    • mkdir –p /root/.ssh
    • chmod 700 /root/.ssh
    • cd /root/.ssh
    • 同樣的建立 .ssh 目錄,但先開啟跟目錄的寫入權限是要記錄 Destination 的紀錄,操作過程如下個步驟
  7. 到 Source 執行
    • ssh –i /data/ssh/replication [Destination IP]
    • 利用 SSH 協定連結到 destination 主機去,同時會在 /root/.ssh 建立一個 known_hosts 的檔案,利用 exit 指令切回 Source 後,再度執行上述指令這次就不會詢問你Password 而直接進入。
  8. 在 Source建立要同步的 volume/dataset(在我的範例建立 vol1/Edu,這個同步不像是微軟的 DFS 可以兩邊雙向同步,這個機制只能做單向的同步喔,設定好之後可以切到 SSH Client 利用 zfs list 指令查看一下。
    Freenas 8 list all dataset
    Freenas 8 list all dataset
    • 由於該服務沒有 Log 可以追查,最好的方式就是先用手動執行同步測試,如果有任何問題的話可以在下指令的時候就看得到;如果您很有把握的話可以直接跳到步驟14
  9. 先回到 Source 的GUI 介面,用手動的方式建立一個 Snapshot,切到 Source SSH Client 輸入 zfs list –t snapshot 就看得到手動產生的名稱,名稱會長得像 vol1/Edu@Manual-yyyymmdd。
  10. 接下來就是重頭戲,下指令把這個 SnapShot 傳到 Destination 機器去, 指令很長:
    • zfs send vol1/Edu@Manual-yyyymmdd | ssh –i /data/ssh/replication [destination IP] zfs receive  vol1/Backup
    • 注意: 目的端的 volume/dataset 我故意不建立,正常同步後系統會自動建立這個 Dataset 當作判斷的依據之一。
  11. 正常的話系統會立即同步,切換到 Destination 端的 SSH Client 輸入 netstat 1 指令看系統有沒有大量收到封包,當然同步前需要複製幾個檔案進去 (請參造前期文章製作 windows 分享)
  12. 同步完成之後就可以利用指令 zfs list 在 destination 端看有沒有新的 data set 跑出來。如果沒有就要檢查前幾個步驟是否有作對。
  13. 清除測試資料,利用 Source GUI 刪掉手動建立的 snapshot,到 Destination SSH Client 輸入 zfs destroy –r /vol1/Backup 刪掉 dataset
  14. 到此應該兩端主機已經設定 SSH 完畢,回到 Source GUI 畫面 Storage -> ZFS replication -> Add new replication,輸入本機要同步出去的 Mount Point,選擇目的方的路徑及 IP,最後貼上還放在 Notepad 下方的金鑰就大功告成。
Freenas 8 setting for zfs replication
Freenas 8 setting for zfs replication

依照 Source SnapShot 的頻率而定,每次做完都會傳送一份到 Destination 去並且會自動解開放到 dataset 內去,達到遠端同步。

後記:

  1. 網路上針對這一塊說明的非常少,雖然有人嘗試成功但並沒有詳細的步驟,可能是因為環境不同造成文件很難寫吧,光嘗試就花了數天空閒的時間。
  2. 如果您在嘗試時也卡在每個地方請參考一下這個帖子,有些 idea 是從這邊找來的。
  3. FreeNas ZFS 效能沒有想像的好,建議不要用在 Production 環境,拿來備份應該還可以接受。
  4. 由於ZFS Replication 是採取 snapshot 備份,所以無論在 Source 或 Destination 都可以隨時回覆到指定時間,只要你的 snapshot 保留時間夠長。
  5. 接下來就是把這個機制應用到每天的備份作業上去。
  6. 測試期間要測試同步功能,對該主機分享做了一些存取動作,此時 snapshot 持續進行中,觀察 RAM 的使用量就得到蠻驚人的發現,原來 2G 的 RAM 被吃光光了,但用 top 指令去看有 1.5G 被歸類為 InActive,不知道是不是系統拿去用後就忘了還回來. ^_^,使用上要特別留意喔。
Freenas use all its 2G memory
Freenas uses all its 2G memory

在〈安裝 FreeNas 8 Part THREE〉中有 6 則留言

  1. Mark您好!!
    有這個榮幸拜讀您的分享,非常感謝~
    小弟目前在評估利用feenas的zfs做為vmware的nfs storage(與openfiler比較較,但看到您提到freenas的zfs效能並不好,所以想請教一下這部份,不知您的經驗是如何的?

    1. 小董,

      同樣的環境複製 250MB 的影片檔案至 FreeNas8, 其速度約只能達到 5-6MByte, 但是對 NetApp 機器丟卻能達到 10MByte 上下, 實際複製時也覺得比 FreeNas 7.xx 要慢上一點.

      網路上也有一篇文章在討論 FreeNas 及 OpenSolaris 比較 ZFS 的效能, 而 FreeNas 就是會比較差一點.. (http://www.zfsbuild.com/2010/09/10/freenas-vs-opensolaris-zfs-benchmarks/) 可以參考看看.

      Rgds,
      Mark

  2. 不曉得您的記憶體多少,但是freenas8啟用ZFS全功能下,需要至少8G記憶體@@

    1. OldSytleRock,

      我目前的機器只有 4G, 雖有強制啟用 ZFS cache, 但校能還是只能說 so so, 不過因屬於第二線的備用裝置, 平常只暫存一些檔案, 還應付得過來. ^_^

      ps. ZFS 真的太吃資源了, 手邊沒有 6G RAM 以上的機器可測…

  3. 目前公司有3台FreeBSD使用zfs系統,心得是正如zfs文件所說,zfs不適合大量I/O和小當過多的主機使用,當初這個中另一個MIS引入公司時,網路上一面倒的稱ZFS為上帝賜予的禮物,都是由對FreeBSD瘋狂的人所寫,只是我本人當時反對所有主機使用zfs(因為事實Soft Array在15年前就已有了,而且在小型的企業市場曾經讓Adaptec等廠商感到威脅,但因很快的Adaptec等廠商立即應變讓威脅不到3個月就消失了,一直到現在Soft Array都一直起不來),也還好因為如此才跼限在3台主機先行導入,結果是不到3個月就問題重重,那3台主機的功能只好一再的減縮,變成一台單純作gateway功能。一台作mail。一台作極少使用者的WEB Server,那可是6萬元1台的主機啊,淪為這樣的下場還不是最慘,近來由於mail比較多(公司約250人),大部份mail是對內卻出現了很多的"INCORRECT BLOCK COUNT"。"UNREF FILE ",現在這3台主機要每天開機,要每天檢查檔案系統並予以修復,以上提供參考

    1. PS:當時另位MIS,甚至連微軟的Windows作業系統也要使用ZFS,但其壯志也因zfs問題重重而只能成為"壯志未酬"而黯然消失,原來其用意是要告知天下唯有FreeBSD才能作為主機,但現在卻是得到了反效果,原我主管也是非FreeBSD和微軟作業系統,一概不考慮,現在卻流到不知該如何(我主管並未有技術根柢),所以建議要力推FreeBSD者要慎重,不要得到反效果,到時會很難收拾

發表迴響

%d 位部落客按了讚: