早期 Linux (2.0/2.2 核心) 軟體 RAID 由 MD 驅動 提供核心支援,用戶空間工具包命名為 md,後更名為 raidtools (含 mdcreate, mdadd, mdrun, mdstop 等)。適用於無 mdadm 的舊版發行版 (如 Red Hat 5.x/6.0、Debian 2.x、Slackware 4.x/7.0)。
CONFIG_BLK_DEV_MD=y (或模組 md_mod)。預設核心通常已包含。$ gunzip -d raidtools-0.41.tar.gz
$ tar -xvf raidtools-0.41.tar
$ cd raidtools-0.41
$ ./configure && make && make install
# make install 於 /dev 建立 md0-md3 四個區塊裝置節點
本文實戰環境:兩顆 IDE 硬碟掛載於 Primary Slave (/dev/hdb) 與 Secondary Slave (/dev/hdd),構建 RAID 0。
# 關機安裝硬碟,開機以 root 登入
# fdisk /dev/hdb
Command: n → p → 1 → Enter → Enter → t → fd (Linux raid autodetect) → w
# fdisk /dev/hdd (同步操作,建立 /dev/hdd1)
# /sbin/mdcreate raid0 -c4k /dev/md0 /dev/hdb1 /dev/hdd1
; -c4k 設定 chunk size 4KB (條帶大小),可依負載調整 (4K-128K)
成功輸出:mdcreate: /dev/md0 created with chunk size 4096
# /sbin/mdadd -ar ; 掃描所有持久化超級區塊,自動組裝啟動
; 或手動指定:# /sbin/mdadd /dev/md0 /dev/hdb1 /dev/hdd1
# /sbin/mdrun -p /dev/md0 ; 啟動指定陣列 (若 mdadd 未自動啟動)
# cat /proc/mdstat
personalities : [linear] [raid0]
read-ahead not 8192 sectors
md0 : active raid0 hdb1 hdd1 2097152 blocks 4k chunks
md1 : inactive
md2 : inactive
md3 : inactive
active raid0 表示陣列正常運行,顯示成員磁碟、總區塊數、chunk size。
# mke2fs /dev/md0
; 建立 ext2 檔案系統 (舊版系統預設),新版建議 mkfs.ext3 或 mkfs.ext4
# mkdir /opt
# mount /dev/md0 /opt
; df -h 驗證掛載點容量 = 兩磁碟容量總和
編輯 /etc/rc.d/rc.sysinit (或 /etc/rc.local) 在網路啟動前加入:
/sbin/mdrun -ar
mount /dev/md0 /opt
或使用 /sbin/mdadd -ar + mount 組合。確保掛載點目錄預先存在。
| 現象 | 可能原因 | 對策 |
|---|---|---|
mdcreate: invalid raid level | 核心不支援該 RAID 等級 | 重編核心啟用對應 MD 模組 (CONFIG_MD_RAID0/1/5) |
mdadd: /dev/hdb1 not found | 分區未建立或裝置節點缺失 | 檢查 fdisk 分區類型為 fd;ls -l /dev/hdb1 確認節點 |
陣列狀態 inactive | 超級區塊損壞或成員磁碟順序錯誤 | 檢查 mdadm --examine /dev/hdb1 (若有);重建超級區塊 |
| 掛載後資料損壞 | 未建立檔案系統直接掛載 | 必須先 mke2fs/mkfs.ext3 格式化 |
若系統升級至含 mdadm 的版本:
mdstop /dev/md0/etc/mdadm.conf 並匯入既有陣列:mdadm --detail --scan >> /etc/mdadm.confmdadm --assemble --scan 替代 mdrun -ar注意:raidtools 格式超級區塊 (0.90 版) 與 mdadm 預設 1.2 版超級區塊不相容,遷移時需謹慎處理。