自建家庭私有云NAS——磁盤管理系統
磁盤管理系統
之前GEN8上是直接使用CentOS的方式進行運行的,LVM做邏輯卷管理,各種軟件基本用docker來運行,基本上可以做到連續(xù)運行一年沒問題。
不過,在這里我打算使用 OpenMediaValut 來作為操作系統。首先,這個基于FreeNAS的系統其實來也是Linux系統,方便我以后繼續(xù)折騰一些東西。硬盤數據以后也可以再其他Linux上讀取。第二,對安裝盤的要求很小,所以我計劃把4個SATA全部都用來裝硬盤,操作系統安裝在一個U盤上。全部安裝完畢后,把這個U盤拷貝下,以后就算是把這個U盤寫壞了,也就是在買一個U盤的事情了。在OpenMediaVault 上有專用 FlashMemory插件 來減少對根目錄的讀寫來保護U盤。
數據存儲如果資金充裕,還是建議使用NAS專用的硬盤,比如西數的紫盤,或者希捷的狼盤。這些硬盤能夠保證在長時間運轉(7x24h)運行中保持良好的穩(wěn)定性。我在自己的系統中采用了希捷的酷鷹——監(jiān)控盤,主要的原因是價格便宜,也能夠長期運行,轉速只有5900RPM——可以有效的減少磁盤讀寫噪聲。
針對硬盤文件系統,我也放棄了RAID和LVM的方式,而是采用了 MergerFS + SnapRAID 方案。自我感覺這是目前市面上最合適家庭NAS系統的磁盤和文件管理系統。
MergerFS
首先出場的mergerFS是union file system中的一種(這里有 一個比較不錯的關于Aufs的介紹 ),類似LVM所追求的結果,通過megerFS可以將多個硬盤上的數據以一個目錄的方式來使用。但不同的是,這種文件系統是一個用戶空間的文件系統,它并不會對硬盤進行條帶化的處理,每個硬盤上都保存著原來文件系統中的目錄和文件。如果拿出一個硬盤接到其他的機器上,無需邏輯卷的配置數據,就可以讀取這個硬盤上的數據。類似的文件系統還有AuFS和 Mhddfs ,不過很多測試表示目前MergerFS的效率更好,也提供了更多的配置選項。
如果A硬盤上設置了“movie”目錄,B盤上有“download”目錄。將兩個盤通過MergerFS合并到一個目錄下,你會看到“movie”和“download”兩個文件夾。在默認的策略(epmfs-目錄存在的前提下用空間大的盤)下,在movie目錄存放的數據會先存在A盤,下載的文件先存放在B盤。這樣,有些不太經常使用的盤就可以減少運行,甚至可以進行休眠。這樣的策略很適合BT下載后,把文件拷貝到電源目錄下,保護存放電影的盤。關于不同的策略,可以參考MergerFS的GitHub上面的說明,可以根據自己的需要進行設計。
MegerFS 的缺點主要也是由于沒有條帶化磁盤,而是通過將實際文件存放在不同的磁盤來實現,造成無法徹底利用磁盤空間。比如說一個藍光盤有30GB大,雖然A,B盤都有20GB的空間,卻沒法存放這個文件了。因為MergerFS中文件是完整存放的,無法分割為兩個15GB的文件。不過相對于試下幾個T為單位的磁盤,這種情況也是很少能遇到的。我的建議就是在磁盤利用率達到80%左右的時候,開始考慮加入新的磁盤。
我在MergerFS中將***個硬盤為基礎建立了一個安裝點為 /pool 的邏輯卷。所有的共享文件都在此目錄中進行。后加的硬盤也會出現在這個目錄中。當程序訪問這個目錄進行讀寫后,MergerFS會自動的實時處理,將數據放置在正確的磁盤文件目錄中。測試結果看來***CPU占用率在15%左右就可以實現近100MB/s的讀寫了。
SnapRAID
和ZFS 不同的是,MergerFS 沒有冗余功能來保障數據安全。這時候我們可以采用SnapRAID來實現一個軟件的RAID支持。此功能類似RAID5,需要額外的一個硬盤來存放校驗數據。此盤的容量必須大于等于其他數據盤。其他數據盤里面也要保存一些稱之為“content”的數據信息。也就是說SnapRAID需要占用一些額外空間來做數據冗余。
為什么SnapRAID比其他硬件RAID,ZFS更讓我覺得推薦呢?首先,SnapRAID 不需要所有盤的大小是完全一致的,也不關心每個硬盤的格式。
SnapRAID 功能如其名,是采用快照的方式來做數據冗余的。具體說就是定時執(zhí)行一次同步操作后,會生成冗余數據。相比硬件RAID方式,這種設計及避免了所有硬盤在沒有數據操作情況下也要運轉以滿足實時數據同步帶來不必要的耗費。如果修復失敗,也不會讓整個硬盤上的數據丟失,只會有個別文件無法恢復。
SnapRAID 的缺點也是明顯的,它不太適合大量小文件,頻繁更改的系統。更適合像是存放照片和電影的家庭NAS,有很多尺寸比較大,很少變更的存儲系統。
設置SnapRAID 需要將數據盤——也就是映射在MergerFS下的磁盤全部都加入到數據盤列表中,而另外一塊專用的校驗數據盤不要加入到MergerFS中,在這里只保存校驗數據和冗余信息。
相比于MergerFS近乎實時的工作方式,SnapRAID 則是需要定時維護的。而且要避免在生成校驗信息的時候進行數據操作??梢赃x擇在OMV 網頁管理界面里面,人工選擇同步,然后校驗和冗余數據就會同步好。另外,也可以創(chuàng)建一個定時任務,每天深夜沒有數據寫入的時候來執(zhí)行來實現生成同步信息。