NAS架構變更(lxc and zfs)

前一陣子,把DIY NAS做了一個大變更,從原本的Debian+KVM+samba+mdadm RAID 5改到了Ubuntu+lxd+samba+ZFS mirror-striping(類似RAID 10)。其實中間還嘗試了proxmox,感覺也還不錯,但當時因為一些小原因放棄了,不過這些小原因可能找到了答案,等未來有機會再來試試吧。

先來說說為何會變更好了,主要原因是因為剛好原本的RAID 5中,有一顆3TB硬碟壞軌(原本裡面為M8PeG當系統碟+3*3T RAID5 TOSHIBA+1*4T WD Red),因先前看過一些資料,說RAID 5不建議使用於大於12 TB的環境中,再加上想試試看RAID 10(較不吃CPU資源),固趁著網購打折時候,入手了WD Red 4T的硬碟,雖然網路上很多災情,但我看大都是置放於synology內發生的,因此就跟她賭人品了,大不了到時常去光華晃晃就好。

硬體一切就緒後,接下來就是系統的選擇了。2015年10月,因緣際會在Mobile01上問了EluSiOn向大)一些虛擬機的問題,知道了proxmox這套系統,他是基於Debain開發的,有不錯的webUI可以控制虛擬機(VM、lxc),且跑的是目前最強的檔案系統-ZFS。這些條件深深的吸引著我,雖然我的虛擬系統不多,但是能全部用web控制感覺真的很棒,且從web上就可以ssh進去虛擬機,真的非常的方便阿。且不知道為何,我在原本的Debian上面,不管怎麼嘗試,都無法在bonding上面跑bridge,但在proxmox上面卻輕鬆完成。不過跑lxc時,我會需要mount host的資料夾,利用webUI上面的mount point操作,都會產生一個新的資料夾,而這資料夾的來源我並無法指定,導致我必須同樣東西分別分放,浪費了空間,不過後來請問了向大後,得到了答案(直接到 /etc/pve/lxc/[vmid].conf 下面修改),可惜系統已經被我移除,無法嘗試,只能待未來了。最後,我因為lxd選擇了ubuntu,其實選擇ubuntu也不是第一次了,最早開始架站,就是使用了ubuntu。

既然一切選定了,那就動工吧!基本的安裝完成之後,要使用ZFS很簡單,只要輸入

sudo apt-get install zfs

就可以了,因為我要建立的是類RAID 10,並掛載到/media/data下,因此輸入

sudo zpool create -f -m /media/data -o ashift=12 dpool mirror /dev/sda /dev/sdb mirror /dev/sdc /dev/sdd

一下子就完成了。
zpoolstatus也可以用

sudo zfs get all dpool

看詳細資訊,若是發現compression並未啟用,可以使用下面方法設定

sudo zfs set compression=lz4 dpool

儲存空間都建立好後,就是把資料丟進去,然後設定samba開始內部資源共享了。

接著,換server部份了,這裡的主要操控就是以lxc為主,下lxc指令,可以看到有這些動作可執行

lxc

而這些指令又可以在繼續細分下去,建議可以用-h來了解一下。

首先,我們必須知道有哪些image可以下載,因此可以先下

lxc remote list

若是有可用網站,就會出現在下面
lxc-remote-list

然後,可以用下面指令來看有哪些檔案可以下載,指令中的ubuntu可以更換成上圖NAME中的任一個,記住,後面要加一個『:』,若資料太多,則在後面加上『 | more』一頁一頁看

lxc image list ubuntu:

選定好要執行的容器後,則下

lxc lanuch ubuntu:ubuntu/16.10/amd64 test

第一個ubuntu是檔案下載的位置,可以更換成images之類的,冒號後面的就是系統名稱/版號/CPU種類,test就是對容器命名,若使用者沒有命名,系統會自己給一個。

等到上述指令跑完後,第一個容器就完成了,可以用下面方是查看容器

lxc list

若要連進去容器內執行命令,則使用

lxc exec test bash

其中test是容器名稱,bash就是使用bash操做該容器,當然,也可以直接在host最容器下達命令,如

lxc exec test -- apt update

這樣就可以讓test這容器執行列表更新。

而當我們希望容器可以直接讀取host的檔案時,可用下面指令

lxc config device add test <name> disk path=/lxc/mount/path source=/host/path

其中<name>是你給予的名稱,可以自由命名,前面的test就是容器名稱。

補充說明,lxc雖然很方便,但有時能會遇到一些不明原因,譬如我在安裝subsonic的時候,在debian jessie下怎樣都無法安裝好,會卡在unpack的地方,原因不明,安裝在centos上時,怎會卡在無法讀取音樂資料夾的問題。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料