Linux 2.4+ 核心整合 MD (Multiple Devices) 驅動,用戶空間工具統一為 mdadm (取代舊版 raidtools)。Red Hat 6.1+、Debian、Ubuntu 等主流發行版預裝 mdadm,支援 RAID 0, 1, 4, 5, 6, 10 及線性模式。
配置檔 /etc/raidtab (raidtools 專用格式):
raiddev /dev/md0
raid-level 0
nr-raid-disks 2
persistent-superblock 1
chunk-size 4
device /dev/hdb1
raid-disk 0
device /dev/hdd1
raid-disk 1
建立與啟動:
# mkraid /dev/md0 ; 建立 RAID 設備
# raidstart /dev/md0 ; 啟動 RAID
# mkfs.ext2 /dev/md0 ; 格式化檔案系統
# mount /dev/md0 /opt ; 掛載使用
開機自動啟動:將 raidstart -a 及 mount /dev/md0 /opt 加入 /etc/rc.d/rc.sysinit 或 /etc/rc.local。
假設兩顆硬碟 /dev/sdb, /dev/sdc,各建立一個主分區 /dev/sdb1, /dev/sdc1,類型設為 fd (Linux raid autodetect):
# fdisk /dev/sdb
Command (m for help): n → p → 1 → Enter → Enter → t → fd → w
# fdisk /dev/sdc (同步操作)
DEVICE /dev/sdb1 /dev/sdc1
ARRAY /dev/md0 level=raid0 num-devices=2 UUID=xxxxxxxx:xxxxxxxx:xxxxxxxx:xxxxxxxx
MAILADDR root@localhost
UUID 獲取:建立陣列後執行 mdadm --detail --scan 產生。
RAID 0 (條帶化,效能最高,無冗餘):
# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1 --chunk=64
RAID 1 (鏡像,完全冗餘,容量減半):
# mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
RAID 5 (分散式奇偶校驗,平衡效能與冗餘,需 ≥3 顆磁碟):
# mdadm --create /dev/md2 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1 --chunk=64
# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid5]
md0 : active raid0 sdb1[0] sdc1[1] 20971520 blocks 64k chunks
md1 : active raid1 sdb1[0] sdc1[1] 10485760 blocks [2/2] [UU]
unused devices: <none>
[UU] 表示兩裝置均正常;[_U] 或 [U_] 表示有裝置故障/移除。
# mkfs.ext4 /dev/md0 ; 推薦 ext4 (支援大檔案、延遲分配、日誌校驗和)
# mkdir -p /data/raid0
# mount /dev/md0 /data/raid0
/etc/fstab 開機自動掛載 (使用 UUID 防止裝置名漂移):
# blkid /dev/md0
/dev/md0: UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" TYPE="ext4"
# echo "UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 /data/raid0 ext4 defaults,noatime 0 2" >> /etc/fstab
現代 initramfs 整合 mdadm,無需手動腳本。確保:
/etc/mdadm.conf 存在且正確rd.auto=1 (預設啟用)驗證:lsinitrd | grep mdadm 確認 initramfs 含 mdadm。
# mdadm --manage /dev/md1 --fail /dev/sdb1 ; 標記故障
# mdadm --manage /dev/md1 --remove /dev/sdb1 ; 移除故障裝置
# 物理更換硬碟後,分區類型設 fd
# mdadm --manage /dev/md1 --add /dev/sdb1 ; 加入新裝置,自動開始重建
# watch -n 1 cat /proc/mdstat ; 監控重建進度
# mdadm --grow /dev/md5 --raid-devices=4 --add /dev/sde1 ; RAID 5 擴容至 4 顆磁碟
/proc/mdstat 即時狀態mdadm --detail /dev/mdX 詳細資訊 (重建進度、裝置健康、UUID)smartctl -a /dev/sdX 結合 smartd 守護進程MAILADDR 接收陣列事件郵件通知| 參數 | 建議值 | 影響 |
|---|---|---|
| Chunk Size (條帶大小) | 64KB (預設) / 128KB / 256KB | 大檔案循序讀寫 → 較大 chunk;小檔案隨機 I/O → 較小 chunk |
| Read-ahead | blockdev --setra 16384 /dev/md0 (16MB) | 提升循序讀取吞吐 |
| Bitmap (寫入意圖日誌) | mdadm --grow /dev/md1 --bitmap=internal | 加速重建同步,微小寫入效能損耗 ~1-3% |
| 檔案系統 | ext4 / XFS / Btrfs | XFS 適合大檔案/高併發;Btrfs 內建 RAID (實驗階段) |
echo check > /sys/block/md0/md/sync_action (每月執行)