用 Banana Pi 自製 NAS:建立 RAID 與讓 Linux 核心讀取兩顆以上的硬碟
很久很久以前,流浪貓曾買過 Banana Pi 和 SATA Multiplier Port Card 來自製 NAS 區域網路儲存裝置與 BT、騾子 (eMule) 專用下載機。不過後來因為工作繁忙,只能放在旁邊生灰塵。
最近受朋友委託,希望我幫他弄個便宜可靠的家庭儲存裝置。後來想想,與其買台功能處處受限、價格不匪的套裝 NAS,不如把手邊的電子零件湊一湊賣給有需要的人。因此這篇算是彙整過去筆記的筆記,以及補充以前沒寫的部份。
讓 Banana Pi 的 Linux 核心讀取兩顆以上的硬碟
新版的香蕉派可能沒這個問題,但舊版 Banana Pi 所採用的預裝作業系統核心無法讀取兩顆以上的硬碟,即便用上了 SATA Multiplier Port Card 也一樣。
對於這個問題,我們可以參考這位高手所提出的解決方式。以 root 使用者的身份執行以下命令:習習翠維尼
檢視 Linux 核心是否支援 sunxi pmp
zgrep PMP /proc/config.gz
如果看到以下回應就沒問題
CONFIG_SATA_PMP=y
編輯 boot.cmd
nano /boot/boot.cmd
搜尋 setenv bootargs 這個段落,並在引號內、該行末端加入以下指令:
ahci_sunxi.enable_pmp=1
於 /boot 資料夾內執行以下命令:
mkimage -C none -A arm -T script -d boot.cmd boot.scr
之後它會依據 boot.cmd 的內容產生新的 boot.scr,並依此更新系統。重新啟動後,將硬碟全插上,輸入以下指令來驗證是否有效:
blkid
如果沒問題,畫面中就會顯示其他硬碟的名稱了。當然,你也可以用 fdisk -l 來列出所有硬碟裝置。
用 mdadm 建立 RAID 磁碟陣列
它是 Linux 系統下的 RAID 管理軟體,屬於 software RAID 的範疇。而建立 RAID 之前,必須確定硬碟有一個以上的磁碟分割,也就是說不能用 /dev/sda 整顆下去組。
更新軟體列表與系統 (非必須)
apt-get update
apt-get upgrade
安裝 mdadm
apt install mdadm
驗證硬碟的裝置名稱
fdisk -l
硬碟一號機
/dev/sda
硬碟二號機
/dev/sdc
用 fdisk -l 進行磁碟分割
在 Linux 上進行磁碟分割的方式很簡單,就是請大家的好朋友 fdisk 來助陣。
fdisk /dev/sda
p: 列出目前分割表狀態
d: 刪除分割表
n: 建立分割表
w: 寫入
partprobe: 重新載入裝置
/dev/sda:
/dev/sda1 磁碟分割
/dev/sdc:
/dev/sdc1 磁碟分割
請 mdadm 建立 RAID 磁碟陣列
由於我們的目的不是備份或存檔,而是純粹體驗 RAID 融合多顆硬碟之速度與空間所帶來的快感。因此這邊流浪貓選擇使用 RAID0,也就是容量最大、速度最快,但完全沒有任何容錯與備份保障,只要一顆硬碟壞掉,所有資料就報銷的陣列類型。
mdadm --create /dev/md0 --level=raid0 --raid-devices=2 /dev/sda1 /dev/sdc1
--create:磁碟陣列分割區名稱
--level:RAID 類型
--raid-devices:裝置數量,後方輸入裝置名稱 /dev/sda1 /dev/sdc1
驗證 RAID 磁碟狀態
mdadm --detail /dev/md0
cat /proc/mdstat
注意:進行各種硬碟操作之前,請先用 df -h 和 fdisk -l 指令驗證目標硬碟的名稱,避免造成不可挽回的後果。
將 RAID 磁碟分割和格式化
硬碟在實際啟用之前,都必須建立分割表與格式化。
RAID 磁碟分割:
fdisk /dev/md0
/dev/md0:
/dev/md0p1
RAID 格式化:
mkfs.ext4 /dev/md0p1
掛載 RAID 磁碟 d(´∀`)b
mount /dev/md0p1 /mnt/r1
列出系統中所有儲存裝置
fdisk -l
列出目前掛載狀態
df -l
其他指令
硬碟 RAID 測速
hdparm -t /dev/md0p1
檔案傳輸,顯示傳輸進度
rsync --progress file.dat /mnt/r1
延伸閱讀
在 OpenMediaVault 上安裝 Deluge 的步驟
OpenMediaVault - 用 Samba 分享 NAS 中的資料與權限設定
於 Debian 的 TTY 界面上閱讀、輸入中文和顯示圖片