Synology NAS cloud backup (Amazon S3 with Glacier storage class)

image

 

目前的備份策略:

現行Synolgy DS710+是以RAID1提供第一層的保障,再以另外二顆硬碟,各於單雙月做離線備份.
由於現行重要的資料持續累積,若有意外,將造成很大的遺憾,因此規劃進一步做異地備份,但對於需要用到異地備份資料的機會,評估是相當低的1.

雲端備份服務的了解與選擇:

異地備份對一般個人用戶來說,尋求雲端備份的解決方案應該是相當合適的.
市面上的雲端備份服務很多,但需在便利性,費用,可靠度上取得平衡.

便利性:由於資料都放在NAS上,因此優先考量使用NAS支援的雲端備份服務.

費用:由於有上TB的資料要備份,基本上免費的雲端備份都沒有這樣大的容量可供使用,又由於將會是長期的持續增量使用,且只有很少的機會由雲端備份還原,因此費用的支出需要合理.

可靠度:原則上丟到雲端備份後,我當它是會永遠存在,不會發生任何意外的,因此雲端備份服務廠商需要提供相當的可靠度.

綜合以上幾點評估後,選擇Amazon AWS做為我異地備份的服務.
Amazon AWS提供的服務有很多,但與雲端備份較相關的,就是Amazon S3及Amazon Glacier這二個服務,而Synology對Amazon S3及Amazon Glacier都有各別的支援工具2.

在更進一步做相關了解後,基於費用成本上的考量,會知道Amazon Glacier是較合適我的.基本上Amazon Glacier我把它當作雲端磁帶備份服務3,Glacier有幾個特性:
1.首先以storage來看Glacier的費用是最低的,1TB一個月約NT 3604.
2.再來Amazon對上傳到Amazon的頻寛是不收費的,對於我只存不取的行為是有利的5.
3.然後資料放進去後,是無法即時存取的,若要取回資料,需要發request6可能需要等3~5小時才能取回,因此它適合存放長期不使用,且只有少數機會才需取回的資料,這部份雖然是限制,但也與我的需求不衝突.

實際試用:

實際以Synology Glacier backup及Amazon Glacier搭配試用,以及向Synology Support做相關了解後,發現有相當的風險存在:
1.Amazon Glacier官方提供的Glacier Console基本上是無用的,基本的上下傳及看到存在Glacier的檔案列表,都得透過Amazon釋出API自行開發或直接找第三方工具才行.
2.接著嘗試以第三方工具 FastGlacier取代Glacier Console做管理,首先發現透過Synology Glacier backup上傳的資料,在FastGlacier中看不到vault中的內容,後來發現在vault name點右鍵選"Request last inventory for all vaults"後就可以看到上傳的資料列表7.
3.再來,列表看到後會發現用Synology Glacier backup上傳的資料檔名,都是亂碼,如此即使使用FastGlacier下載回來,可能也無法使用.
4.基於第3點,Synology Glacier backup目前上傳的東西,只能用Synology Glacier backup取回,別無它途.
5.若NAS掛了,Synology Glacier backup可以由Glacier取回之前的任務,再執行任務取回資料8.
6.Synology Glacier backup目前整包上去,只能整包還原,無法只還原其中部份資料.

實際以Synology S3 backup及Amazon S3 with Glacier storage class搭配試用:
1.官方提供的S3 Console較為可用,起碼對檔案的rename,move,copy等功能有提供,但S3 Console對單檔5GB以上的支援度又有限制,還是得找其它支援度較完整的第三方軟體,像是bucket explorer , CloudBerry Explorer等.
2.上傳後的檔案列表不管在S3 Console,或其它第三方軟體都能看到.
3.透過S3的lifecycle9可以將S3的檔案轉放到Glacier,轉進Glacier後的資料列表S3還是看得到.
4.轉進Glacier後的資料,依然有Glacier的特性:無法即時存取,需發Request取回10.
5.不一定要由Synology S3 backup取回資料11.
6.由於可由其它第三方軟體取回資料,如此也可以只取回部份資料.

綜合以上的情況,不論是管理面,使用的彈性,讓我打消Synology Glacier backup及Amazon Glacier的使用搭配改選Synology S3 backup及Amazon S3搭配使用.

再進一步向Synology詢問,該如何使用Synology S3 backup來搭配Amazon S3 轉換到 Glacier做異地備份,得到回覆如下:

Image(7)

Image(8)

Image(9)

 

在參考以上Synology提供的資訊,做實際測試後,對我來說,結論是可行的.未來Synology S3 Backup將只會用來上傳資料,下載部份則使用S3 Console或其它第三方工具12.

Synology S3 backup及Amazon S3 with Glacier storage class搭配的使用,直接由NAS上傳到Amazon,滿足了對便利性的需求,再由S3進一步轉到Glacier讓費用更為便宜,最後剩下可靠度的部份.

可靠度:
最後的可靠度部份,我想可以分成二個部份:

1.資料上傳到Amazon的過程,及下載過程的可靠度如何?
2.交給Amazon 後資料保存的可靠度.

第2點的部份,Amazon Glacier宣稱平均每個archive的 annual durability 有 99.999999999%,它背後的系統會自動做很多的備份,及備份的驗證,要是真的Amazon發生什麼災難,我手上也還有二個離線備份硬碟.同時間RAID1,二顆離線備份硬碟及Amazon都損毀的機會有多少??所以我想這部份是可以放心的.

我比較關心的是第一點,上傳及下載的可靠度如何?畢竟一個上傳不完整的檔案,有 99.999999999%的annual durability是沒有意義的.
Amazon是以MD5 hash來驗證上傳的資料與本地是否一致,因此可以比對NAS及Amazon二邊的MD5 hash是否一致13.
問題在於大檔案的部份,Amazon對於大檔案的處理,提供了multipart upload的API,將大檔案切成多個小檔案後上傳,此種行為上傳的檔案,最後呈現的MD5 hash不是完整檔案的MD5 hash,而是MD5 hash那些小檔案的MD5 hash14,所以對我們終端使用者來說,無法做進一步的檔案完整性確認.

關於大檔案不是最初MD5 hash的問題,在做了相關的了解,發現Amazon的設計就是如此,無法從Amazon得到完整檔案的MD5 hash,因此轉向Synology support詢問Synology S3 backup的可靠性如何?我該如何做double check?結果得到的回覆如下:
Image(10)
Image(11)

由於對我來說,這將會是長期,持續增量的使用,即然Synology沒有提供有效的回覆,只好自己想辦法解決了,所幸在網路上看到,即然無法從Amazon取得完整檔案的MD5 hash,那就反過來在本地以Amazon的算法,算出其MD5 hash,這樣就能以此來跟Amazon上的做比對,有人以此方式寫了一支bash shell script提供使用15.
嘗試執行該scrip結果發現,因為缺少script所必需的指令,該script在Synology NAS上是無法成功執行的16,因此透過ipkg補足套件後17,再做點小調整即可正常使用.
雖然如此使用上並不是很方便,但至少可以做到進一步的double check,確保上傳到S3上的檔案是完整的.

結論:
至此,整個機制試用下來,選擇以Amazon AWS做為異地備份,對我來說是可行的方式:
異地備份:Synology S3 Backup + Amazon S3 + LifeCycle to Glacier
檔案取回:S3 Console或其它第三方軟體18

使用原則如下:
1.我目前想利用Amazon Glacier來備份,我DSM上的tar檔.
2.我只會持續新增tar檔到Amazon Glacier(不會改內容,也不會刪除).
3.基本上我也不會取回這些tar檔(除非我手上的其它備份全沒了).
4.要能用非Synology的工具取回存放於Amazon上的資料19.

其它:
1.以so-net 6M/2M配合Synology S3 Backup實際測試,5GB的資料,依64MB切小檔上傳,約花費6小時,10GB的資料,依64MB切小檔上傳,約花費13小時.
2.經實測NAS上相同的資料,搬離開再搬回上傳的資料夾後,執行Synology S3 Backup會再上傳一次,原置於Amazon S3 RRS上的資料會被覆蓋.
3.曾以S3 Console由Glacier還原並下載21G的tar檔做資料驗證,是正確沒問題的20.
4.關於由Glacier回存的費用,要特別注意,其收費並非只是單純的GB資料大小乘上每GB的費用己而,請參考說明,否則被收取的費用可能會超出預期.
5.另外,由Glacier回存的資料,會同時存在於Reduced Redundancy Storage(RRS)及Glacier Storage,因此RRS及Glacier空間的使用,都會被收費,
請參考說明.

 

相關連結:
Amazon Simple Storage Service (Amazon S3) - 高帶寬,無限大和安全的雲端儲存
note:Amazon S3 操作
Category: Aws (Hank Lin)
AWS (Amazon Web Service)
Amazon Glacier
Amazon Simple Storage Service (Amazon S3)
Amazon Simple Storage Service (S3) Documentation
Amazon Simple Storage Service FAQs
SIMPLE MONTHLY CALCULATOR (Cost Calculator)
Amazon S3 Pricing
Object Archival (Transition Objects to the Glacier Storage Class)
Manage Object Lifecycle Using the AWS Management Console
Restore an Object Using Amazon S3 Console (From Glacier Storage Class )
Managing Lifecycle Configuration
Object Lifecycle Management
Regions and Endpoints
Account Activity(當前費用): clicking “Account Activity” under “Your Web Services Account”.
How will I be charged when retrieving large amounts of data from Amazon Glacier?
What am I charged for archiving objects in Amazon Glacier?

  1. RAID1及單雙月離線備份的硬碟都沒了,才會由異地備份復原 []
  2. Amazon S3於"備份和還原"中支援,而Amazon Glacier有獨立的Glacier backup套件支援 []
  3. Amazon也提到Glacier適合用來取代磁帶 []
  4. 以放在Tokyo來看,每GB為USD 0.012每月,1TB為USD 12.288每月,換算約NT360每月 []
  5. 這部份Amazon S3亦同 []
  6. 看官方的說明,由Glacier回存的資料會放在RSS,但實際測試,檔案在restore後,在S3 Console中仍呈現Glacier,但檔案己可透過S3 Console下載 []
  7. 一樣,這個動作可能得等約4小時,會有看不到資料列表及需要發Request都是Amazon Glacier本身設計上的限制 []
  8. 但無法再編輯取回的任務 []
  9. Lifecycle的Prefix設定:

    假設有如下6個檔案放在BucketA的folder2中
    1.BucketA/Folder1/folder2/File1.tar
    2.BucketA/Folder1/folder2/File2.tar
    3.BucketA/Folder1/folder2/File3.tar
    4.BucketA/Folder1/folder2/file4.tar
    5.BucketA/Folder1/folder2/file5.tar
    6.BucketA/Folder1/folder2/file6.tar
    若Prefix設為"Folder1/folder2/File"則檔案1~3會被套用.
    若Prefix設為"Folder1/folder2/file"則檔案4~6會被套用.
    若Prefix設為"Folder1/folder2/file5.tar"則檔案5會被套用.
    若Prefix設為"Folder1/folder2/"則檔案1~6會被套用.
    透過Lifecycle將檔案轉換到Glacier中,不會馬上生效,若檔案大的話,建議等個3三再做確認.

    []

  10. 進入S3 Console在要取回的檔案上按右鍵選"Initiate Restore",再輸入還原的資料要存在幾天,即可進行檔案取回的要求.待檔案回存後,其Properties/Detail會看到"Restored"字樣,便可以進行下載

    Image(6)

    []

  11. 其實當透過S3的lifecycle可以將S3的檔案轉放到Glacier後,也無法再使用Synology S3 backup取回 []
  12. 下載前要先發Request將資料由Glacier取回 []
  13. 在S3 console上可以看到MD5 hash. 位於檔案Properties的ETag:
    MD5:
    image []
  14. MD5 multipart
    image
    後面的338代表該檔案上傳時,分割成338個小檔案上傳.

    []

  15. http://stackoverflow.com/questions/6591047/etag-definition-changed-in-amazon-s3
    https://github.com/Teachnova/s3md5
    []

  16. 少了md5sum及xxd []
  17. md5sum位於textutils套件,xxd位於vim []
  18. 轉入Glacier後的資料,無法使用Synology S3 Backup取回 []
  19. 要能用其它Amazon第三方工具,ex: fasterGlacier,bucket explorer []
  20. md5 正確,tar檔解得開 []
本篇發表於 Synology 並標籤為 。將永久鏈結加入書籤。

Synology NAS cloud backup (Amazon S3 with Glacier storage class) 有 1 則回應

  1. Michael 說道:

    相當實用的參考資料,感謝。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

你可以使用這些 HTML 標籤與屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

(若看不到驗證碼,請重新整理網頁。)