想實現 Linux 軟體磁碟陣列(RAID),首要參考 Linas Vepsta 的 RAID 主頁:https://linas.org/linux/raid.html。本文發表於 1998 年 10 月,旨在釐清實作 RAID 0(分散讀寫/striping)與 RAID 1(鏡像/mirroring)時遇到的問題。作者嘗試結合 RAID 0 效能與 RAID 1 備份優勢。
2.x 核心已實作 linear 與 RAID 0。必須重編核心啟用多裝置支援(multiple devices),強烈建議編譯進核心而非模組(模組方式極痛苦)。檢查 dmesg | more 確認 md 驅動與 raid0 registered 訊息,或 cat /proc/mdstat 查看 /dev/md0~md3 處於非啟用狀態。
核心工具 mdtools-0.35 通常不隨發行版提供,含建立/執行/停止 RAID 工具。可從 Slackware 取得:
https://sunsite.unc.edu/pub/Linux/distributions/slackware/slakware/ap1/md.tgz
下載至 /usr/local/src,解壓至根目錄:
cd / tar -zxvf /usr/local/src/md.tgz
產生檔案:sbin/mdadd、sbin/mdcreate、usr/etc/mdtab 等。詳讀 README(忽略警告),適配 2.0.30 核心與 linear/RAID 0。Linux Journal 1998 年 6/7 月刊有實作 RAID 0 文章,Linux Gazette 第 17 期也有幫助。
須在 fsck -a 前啟動 RAID 陣列(Slackware 在 /etc/rc.d/rc.s),在 /etc/rc.d/rc.0 與 rc.6 停止。cat /proc/mdstat 驗證運作。測試:cp -rap 複製整個目錄結構至 RAID,修改 /etc/fstab 掛載新裝置。Swap 分區無需分塊,啟用優先級自動並行。閱讀 Software-RAID-mini-HOWTO 可知詳情。
務必使用 UPS! 斷電將導致 RAID 與資料遺失。UPS 讓系統在斷電時維持運行短時間,透過序列埠通知守護程序,預設 5 分鐘後關機。多數發行版內建基本 UPS 守護程序(man powerd)。APC Smart UPS 配合apcupsd效果極佳:https://www.dyer.vanderbilt.edu/server/apcupsd/
未嘗試,直接從 2.0.30 升級 2.0.35。
mdtools 在 2.0.30 編譯順利,但在 2.0.35 報 MD_Version 未定義錯誤。查 /usr/src/include/md.h 發現版本號:2.0.30 為 0.35,2.0.35 為 0.36。mdadd -V 顯示工具支援版本。正確版本位置:
ftp://ftp.kernel.org/pub/linux/daemons/raid/raidtools-0.41.tar.gz
下載解壓,./configure,閱讀 INSTALL,可能需 make && make install。mdadd -V 確認更新(顯示 compiled for raidtools-0.41)。閱讀 QuickStart.RAID 獲取最新資訊,RAID 0 變化不大。
使用 RAID 1、4、5 必須打補丁:
ftp://ftp.kernel.org/pub/linux/daemons/raid/alpha/raid0145-19981005-c-2.0.35.tz
複製至 /usr/src 解壓,補丁搜尋 /usr/src/linux-2.0.35,若源碼在 /usr/src/linux 需重命名並建立符號連結。進入 /usr/src 執行 patch -p0(注意小寫 c 可能變大寫 C)。重編核心:make menuconfig→make clean→make dep→make zImage→make modules→make modules_install。新核心置於適當位置,建議保留無 RAID 與有 RAID 兩版核心,透過 lilo.conf 選擇啟動。查 dmesg | more 確認 md 載入、raid0 & 1 registered。cat /proc/mdstat 應見 16 個 md 裝置(而非 4 個)。
必須升級 raidtools:舊工具 mdadd//etc/mdtab/mdcreate,新工具 raidstart//etc/raidtab/mkraid。文檔確實過時。新版位置:
ftp://ftp.kernel.org/pub/linux/daemons/raid/alpha/raidtools-19981005-B-0.90.tar.gz
解壓進入目錄 ./configure(後續 make/install 不確定)。
使用兩個 SCSI 裝置 /dev/sda1、/dev/sdb1:
0xfd(核心啟動自動識別 RAID)/etc/raidtab(隨工具提供範例缺漏重要資訊):
# Striping example # /dev/md0 using /dev/sda1 and /dev/sdb1 raiddev /dev/md0 raid-level 0 nr-raid-disks 2 persistent-superblocks 1 nr-spare-disks 0 chunk-size 32 device /dev/sda1 raid-disk 0 device /dev/sdb1 raid-disk 1
mkraid -f /dev/md0(注意閱讀錯誤訊息)cat /proc/mdstat 確認 md 裝置正確mke2fs -c /dev/md0 格式化/raidtest)測試:mount /dev/md0 /raidtest