2020年11月18日 星期三

[NAS]檔案儲存的安全

我很早之前是使用 mac 的 softraid,將兩個USB外接硬碟組成磁碟陣列,比起當時的其他的 raid 方案更彈性。

當硬碟失效時,可以換個硬碟,拉進磁碟陣列中等重建過後,即可恢復上線。
當 mac 失效時,可以換個 mac,兩個硬碟插入開始,磁碟陣列就可上線。
對硬碟沒有什麼要求,對 mac 的新舊也沒有要求。壞什麼就換什麼。就算只剩一個硬碟是好的,也可以恢復,也可以直接讀單顆硬碟裡的資料。後來因為太好用,所以後來一個 mac 上就接到 6 個硬碟,有三組磁碟陣列。用 samba 服務提供其他電腦存取。

但是時間久了,硬碟常斷電下線,手動回復重建時又可能遇到斷電下線,後來才知道有可能 USB 電源供應會因為年紀而衰退。但當時並不知道,所以重覆個幾次,就有資料毀損的情況產生。當把 mac 退役後,才感受到,一個 mac 掛三組磁碟陣列,一但失去它,就全部檔案無法使用的影響太大。但又沒找到更好方法,接下來幾年就只有使用單碟冷備份的方式存放檔案。

後來知道有 glusterfs,可以多主機共組磁碟陣列,彈性也是很高,於是採用樹莓派加個外接硬碟組成一個節點,兩個節點組成一組磁碟陣列。如此,四個部件壞掉哪一個都不會影響正常檔案存取。就算只剩一顆硬碟,用任何 linux 也可以讀到原來的檔案,將來沒有 glusterfs 也不用怕資料無法回復。而且變更節點組成的時候,可以線上變更,在修理、維護的時候仍然可以提供服務。一開始仍是用 samba 分享,但是仍然會有多檔、大檔會複製失敗的情況,後來自己寫個非常簡單的上傳程式,也就用快三年。也經歷過幾次硬碟壞掉或樹莓派壞掉的情況,修起來因為沒有圖形介面比較需要動腦,但是真的是很放心。在本機端來看,一組磁碟陣列就是一個硬碟掛到一般目錄之下,所以可以直接透過檔案系統做更複雜的管理(新增、刪除、移動)。

最近,又得知有個 min.io 的分散式網路儲存庫,號稱是很無腦,也很有彈性,只是它的彈性是節點以上的彈性。節點本身被規定一但組成就不能被變更,每個節點可以不一樣但建議要一樣。但是群內加節點擴增容量或減節點維設都不會影響整個服務,且保證有一半的部件失效都可正常讀取,容量會是總磁碟的一半。因為其目標是針對網路儲存,所以有內建網頁服務與網路API,在網路應用上就不用我自己寫個程式做檔案上下傳,但它就沒有辦法用檔案系統直接管理檔案了而是直接使用它提供的指令或網頁服務。

glusterfs 與 min.io 並不是互斥的選項,它們兩個也可以一起使用。glusterfs 是強在它的虛擬磁碟組成的動態彈性,而 min.io 是網路節點群的動態彈性。由這兩個的彈性可以組成自己想要的網路儲存系統。