Isilon 集群在設計的時候就要求系統具有在組件發生故障時也能繼續提供數據服務的能力。OneFS默認使用erasure code(糾刪碼)保護數據,節點或磁盤發生故障時也能獲取文件。作為糾刪碼的另一種選擇,可以采用鏡像保護數據。
創建五個或更多節點的集群時,糾刪碼可以實現80%的效率。在更大的集群上,糾刪碼能夠提供四級冗余。
OneFS提供文件級別數據保護,而不是塊級別。你可以在目錄、文件、文件池、子池和集群上設置不同的保護級別。
盡管文件默認繼承其父目錄的保護級別,但你可以在任何時候修改。OneFS為元數據和inode提供與其數據同樣級別的保護。一個被稱為FlexProtect的system job能夠發現并修復“降級的文件“(degraded file)。
除了糾刪碼和鏡像,OneFS還包含以下功能幫助保護數據的完整性、可用性和保密性:反病毒、克隆、NDMP備份和恢復、保護域。以下軟件模塊也能幫助保護數據,但需要單獨的許可證:SyncIQ、SnapshotIQ、SmartLock、
N+M數據保護
OneFS支持的N+M 糾刪碼級別有:N+1、N+2、N+3和N+4。對于這種N+M數據模型,N代表節點的數量,M代表在不發生數據丟失的前提下,集群所允許的【同時發生故障的節點數或磁盤數】。例如,N+2允許集群在不同的節點上丟失兩塊盤,或者丟失兩個節點。
為了分別保護磁盤和節點,OneFS支持N+M:B,M代表故障磁盤的數量,B代表故障節點的數量。例如N+3:1,表示集群可以丟失三塊磁盤或一個節點而不至于數據丟失。
默認大于18TB的集群,其保護級別是N+2:1,小于18TB的話是N+1。另外,仲裁規則規定了支持一個保護級別所要求的節點數量,例如N+3要求至少7個節點,從而可以在三個節點發生故障時依舊維持仲裁。
數據鏡像
鏡像通過將數據拷貝到多個位置來保護磁盤上的數據。OneFS支持2~8個鏡像。你可以使用鏡像而非糾刪碼,或者混合糾刪碼和鏡像。鏡像相比糾刪碼消耗更多空間且適合要求高性能的事務,比如iSCSI LUN。
如何混合糾刪碼和鏡像,在寫操作的過程中,OneFS將數據劃分成冗余的保護組。對于那些受糾刪碼保護的文件,保護組由數據塊和它們的糾刪碼組成。對于鏡像的文件,保護組包含一組數據塊的所有鏡像。OneFS可以在向磁盤寫文件的時候切換保護組的類型,通過這種動態切換,即便發生節點故障導致無法應用糾刪碼,OneFS也能繼續寫數據。節點恢復之后,OneFS自動將鏡像保護組轉換成糾刪碼。
文件系統日志
日志能夠將文件系統更改記錄在電池備用的NVRAM卡內,在文件系統發生故障后恢復系統,比如掉電。當節點重啟時,日志重播(replay)文件事務來還原文件系統。
虛擬熱備用
當一塊磁盤發生故障時,OneFS使用保留在子池中的空間而不是一塊熱備盤,這塊保留空間被稱為虛擬熱備用。
在保護級別與存儲空間之間做出平衡
你可以通過設置保護級別來平衡存儲空間和保護需求。較高級別的保護通常相比較低級別的保護消耗更多的磁盤空間,因為需要犧牲空間保護erasure code。erasure code的開銷依賴保護級別、文件大小和集群中的節點數量。因為OneFS將數據和erasure code跨節點做條帶,所以隨著節點的增加,開銷也會降低。