Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

Linux 軟體 RAID 實戰 (二):新版系統 mdadm 工具配置 RAID 0/1/5 完整流程

編輯:關於伺服器

現代 Linux 軟體 RAID 工具鏈:mdadm

Linux 2.4+ 核心整合 MD (Multiple Devices) 驅動,用戶空間工具統一為 mdadm (取代舊版 raidtools)。Red Hat 6.1+、Debian、Ubuntu 等主流發行版預裝 mdadm,支援 RAID 0, 1, 4, 5, 6, 10 及線性模式。

三大部署場景對應配置流程

場景一:舊版系統 (無 mdadm,需手動編譯 raidtools) — 已過時,略過

場景二:較新系統 (含 raidtools,無 mdadm) — 過渡期做法

配置檔 /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。

場景三:現代系統 (內建 mdadm) — 標準推薦流程

1. 規劃磁碟分區

假設兩顆硬碟 /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  (同步操作)

2. 建立 mdadm 配置檔 /etc/mdadm.conf

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 產生。

3. 一鍵建立 RAID 陣列

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

4. 監控建立進度與狀態

# 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_] 表示有裝置故障/移除。

5. 建立檔案系統與持久化掛載

# 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

6. 開機自動組裝陣列

現代 initramfs 整合 mdadm,無需手動腳本。確保:

  • /etc/mdadm.conf 存在且正確
  • initramfs 包含 mdadm 模組 (預設包含)
  • 核心參數 rd.auto=1 (預設啟用)

驗證:lsinitrd | grep mdadm 確認 initramfs 含 mdadm。

RAID 維護與故障處理實戰

1. 模擬磁碟故障與重建 (RAID 1/5/6/10)

# 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                ; 監控重建進度

2. 擴容陣列 (RAID 0/1/5/6 支援線上擴容)

# mdadm --grow /dev/md5 --raid-devices=4 --add /dev/sde1  ; RAID 5 擴容至 4 顆磁碟

3. 關鍵監控指標

  • /proc/mdstat 即時狀態
  • mdadm --detail /dev/mdX 詳細資訊 (重建進度、裝置健康、UUID)
  • SMART 監控:smartctl -a /dev/sdX 結合 smartd 守護進程
  • 設定 MAILADDR 接收陣列事件郵件通知

效能調優建議

參數建議值影響
Chunk Size (條帶大小)64KB (預設) / 128KB / 256KB大檔案循序讀寫 → 較大 chunk;小檔案隨機 I/O → 較小 chunk
Read-aheadblockdev --setra 16384 /dev/md0 (16MB)提升循序讀取吞吐
Bitmap (寫入意圖日誌)mdadm --grow /dev/md1 --bitmap=internal加速重建同步,微小寫入效能損耗 ~1-3%
檔案系統ext4 / XFS / BtrfsXFS 適合大檔案/高併發;Btrfs 內建 RAID (實驗階段)

生產環境部署核心清單

  1. ✅ 磁碟控制器支援熱插拔 (SATA/SAS/RAID 卡 JBOD 模式)
  2. ✅ 關鍵資料 RAID 1/5/6/10,**嚴禁單點故障 RAID 0 存放核心資料**
  3. ✅ 異地備份策略 (RAID ≠ 備份,無法防誤刪、軟體錯誤、火災)
  4. ✅ 定期一致性檢查:echo check > /sys/block/md0/md/sync_action (每月執行)
  5. ✅ 監控告警:Prometheus + node_exporter + mdadm 監控規則
Copyright © Windows教程網 All Rights Reserved