大概6年前寫了一些自己DIY NAS的文檔,發表在newsmth.net上面。

過了好多年再修改一下之前的文檔,發布在這裡,供大家參考。


自己弄家用存儲方面的東西算下來也有幾年了。於是現在寫點東西總結一下,也方便對這方面有興趣的網友參考。希望大家看了之後能夠少走彎路,造個適合自己的NAS。

基本有如下的內容:

  1. 什麼類型的存儲適合我?
  2. 硬體選型
  3. OS安裝
  4. 基本配置
  5. 性能調整
  6. 總結與展望

1. 什麼類型的存儲適合我?

單機硬碟存儲本來比較簡單,但是隨著家裡設備的增多,各個設備間的文件共享需求就非常迫切,因此需要有一個能共享的存儲設備。NAS這個概念就出來了。

NAS其實不是什麼特定的東西,它只是一個通用名詞,Net Attached Storage:通過網路進行訪問的共享存儲設備。你自己裝個Windows共享一個目錄,在網路上其他機器看來,你就是一台NAS。基本現在是台機器就能做共享,也就是能當NAS使用。

現在有很多提供成品的NAS,只要花錢買了,簡單設置一下,就可以使用,那為何還需要自己打造NAS? 要解釋這個問題並不是那麼容易,NAS要考慮到存儲容量,長時間運行,數據安全,功耗,性價比等等問題,另外日後的升級,維護也要考慮在內。要先將這些問題弄明白,才能免得以後出問題無法對應。

那有沒有花錢就能簡單搞定的方案?很遺憾,對於剛才說的那些成品NAS,那些設備初期入門可能很簡單,但是一旦出現問題,你可能從此和你心愛的數據拜拜了。比如蒼老師的全集可能就沒了,這是多麼悲催的事情!不過還好,蒼老師全集大家都有共享,大不了自己再花時間下載,只要有鏈接,X雷的離線還是很給力,應該很快可以恢復這方面的數據。但是對於自己生產的數據,比如照片,文檔,那就比較杯具了。

針對剛才提到的容量/及數據安全問題,多說幾句。容量問題貌似比較好搞定,一旦容量不足了,解決方法大概如下幾種:

  1. 添加購買新硬碟。
  2. 大容量硬碟替換小容量硬碟(機器的硬碟位有限)
  3. 刪除數據

大家一般都會選擇第一或第二個辦法,至於第三個嘛,難道要我將自己辛辛苦苦混論壇努力迴文才下載到的蒼老師全集全部都shift+del? 那是辦不到的!

因此,碰到容量問題時,就是買硬碟,添加或者替換。那實際上怎麼操作呢?大家可以想像一下這個問題。

大家可能覺得問這個問題有點可笑,這不和將大象如何裝入冰箱問題一樣么?買硬碟,插到機器上,格式化,轉移數據,拆掉老硬碟,GAME OVER。

可是... 你上面做的操作並不是原子操作,而是一系列操作,一旦出問題,往往很難回退到初始狀態重新來一遍。比如,拷貝過程斷電,或者以為中止,你需要重新來一遍。但是你不知道哪些拷貝完了。比如,拷貝完成後新硬碟跑幾天後出問題,而老硬碟又刪掉數據了,或者已經賣掉了...拷貝後發現數據讀不出來有問題等等。是不是很煩?我估計現實大家也能碰到類似的情況。

至於數據安全問題問題,分為兩層。一個是硬體層,一個是應用層。我們只考慮硬體中的硬碟問題,其他硬體問題不考慮。硬碟壞了,怎麼辦?比較簡單就是兩個或多個硬碟放冗餘數據,也就是現在比較流行的RAID概念。一個硬碟壞了,可以通過替換硬碟恢複數據。貌似很不錯的樣子。

傳統RAID的方案各種各樣,比如下面幾種:

  1. 軟體RAID, 也就是通過OS層面實現的,比如Windows自己就有這個功能。在系統上看起來像是一個Raid設備,但是通過驅動實現Raid功能。
  2. 硬Raid, 純硬體實現Raid,帶電池的Raid, 就像raid,也有各種,Raid0, 1, 5, 6, 10等等。

想要弄明白這些東西的差別也很頭疼。

這些Raid系統經過多年迭代,進化了好多年,現在很多伺服器都在使用這種方案,因此性能及安全性都應該沒啥問題。問題在於企業伺服器是運行在機房中,有著穩定的供電,企業級的Raid硬體,固定的維護人員等等來保證這些數據安全。而我們個人用戶往往不具備這些條件,所以簡單的Raid方案可能就是日後數據丟失的根源。Google一下就會發現很多人出現數據丟失問題。以至於現在很多人怕了,還是堅持單盤保存數據,自己管理數據。

至於為何Raid容易導致數據損壞,簡單來說,對於Raid5, 有一個Raid5 write hole。可以看wikipedia的解釋。

en.wikipedia.org/wiki/R

看看zfs的開發者解釋為何選raidz, 裡面有說raid的問題。RAID-Z

總結一句,就是非企業級Raid,不用比用還長命百歲。

至於應用層備份,就是我們普通的一個數據放兩個地方,防止硬體全壞了,或者人為誤操作刪除。至於我以後介紹的ZFS怎麼帶給你全新的數據管理,可以接著往下看。簡單一句就是隨時的Snapshot保證人為誤操作。不過對於整體硬體損壞,比如火災水災,這個還需要考慮異地備份,這些不細說。

9102年了,我們需要有個自動化的東西幫我們解決這些麻煩問題。而不是事事靠自己人工來打點。


推薦閱讀:
相关文章