2020年11月18日 星期三

家用樹莓 NAS

 設定RAID

安裝Linux軟體定義RAID管理套件 mdadm

# apt install mdadm

準備好USB Drives,並檢查這些drive的位置,通常會是/dev/sd*,或是用blkid來檢查磁碟機編號

在開始建立RAID之前,可以先透過fdisk等工具確認分割磁區大小相似 (mdadm允許在建立RAID用得磁碟有1%容量的差距,並使用容量最小的為依據建立RAID) ,假設已經準備好的磁碟編號分別為 /dev/sda1, /dev/sdb1, /dev/sdc1,預計建立後的位置為 /dev/md0,並建立為RAID5:

# mdadm --create /dev/md0 --verbose --level=5 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1

建立完成後,可以檢查RAID磁碟的狀態

# mdadm --detail /dev/md0

或觀察RAID的狀態

# cat /proc/mdstat


格式化

在建立好RAID磁碟後,首先要先把磁區format為ext4格式

# mkfs.ext4 --quick /dev/md0


掛載磁碟

接著把它掛載起來

# mount -t ext4 /dev/md0 /mnt

但實際使用上,不會希望每次開機都手動掛載一次,因此會把在掛載磁碟的資訊寫入到/etc/fstab裡;/etc/fstab在指定掛載的磁碟有多總寫法,透過路徑(/dev/md0)、也又透過磁碟區的UUID,前者的寫法就很單純,寫法如下

/dev/md0   /mnt   ext4   defaults 0 0

但是容易因為開機時,沒有辦法控制Linux把磁碟機放到/dev裡面的哪個位置 (尤其以USB device最常遇到這個問題),所以比較好的做法是透過UUID的作法。磁碟的UUID可以由先前的blkid指令得到,因此/etc/fstab的設定如下

UUID=.....   /mnt  ext4   defaults 0 0

/etc/fstab的參數設定也不少,建議可以查一下後再做設定,會比較符合使用的需求


NFS分享磁碟

NFS是Linux常見的網路磁碟分享的方法,在Raspberry Pi OS是比較接近Debian/Ubuntu系列,NFS套件是 nfs-kernel-server,與Redhat/CentOS使用的rpcbind + nfs_utils不大一樣

# apt install nfs-kernel-server

不過都是在 /etc/exports 設定要分享的磁碟

/mnt 192.168.0.0/24(rw,sync,no_root_squash,no_all_squash)

exports裡面也有一堆參數可以設定,也一樣建議看過相關設定值後再將需要的放上。

如果是家裡有使用Windows的人,可以考慮額外安裝SAMBA,讓Windows可以直接掛載SAMBA分享的磁碟,或是Windows掛載NFS,都是選項。不過,更建議直接把RAID的空間建立一個家用雲端硬碟的方式 (如NextCloud) 來使用,這樣連行動裝置都可以透過網頁或APP操作。


注意面:

由於樹莓派的電源供應本身最大輸出只在5V 2.5~3A,我本身選擇使用3顆2.5"硬碟組成,每顆要0.5~0.55A,絕對沒辦法穩定讓整個電源供應順暢,我這邊的解決辦法是額外用一個5V的電源供應給USB HUB,並把所有的硬碟插在這個HUB上,再把USB HUB的頭接去樹莓派上。為了做到這個架構,我特地找了一個4 port可以額外用micro USB供電的USB HUB來完成這個架構。


維護面:

用樹莓派組RAID,硬碟遺失真的不是不可能發生的事,不小心撞到,電源供應不穩定等等都會造成這個狀況 (這也就是我最後找了一個能額外接電源的USB hub的原因),這可以透過先前介紹的mdadm --detail /dev/md0來檢查目前的狀態,如果有遺失,可以透過增加硬碟的方式來把硬碟增加回來

mdadm --add /dev/md0 /dev/sdc1

而後可以透過cat /proc/mdstat來觀察磁碟重建的進度。

如果遇到的狀況是將整個RAID搬去另一台電腦,這也不會是甚麼嚴重的問題,由於mdadm會在硬碟增加md參數,所以另一台電腦如果有mdadm的狀態下,會自動掛載到/dev/md*,以我重燒Raspberry Pi OS的狀態下,會自動掛為/dev/md127。

如果要更改RAID5配置為RAID6,首先要先達到4顆硬碟配置,才能滿足RAID6的基本需求,透過mdadm --add將磁碟加入陣列當中,這時候新增加的這顆磁碟會被列為被援用 (spare),而後變更當下的RAID狀態

#mdadm --grow /dev/md0 --level=6 --raid-devices=4

沒有留言:

張貼留言