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

Linux 軟 RAID 5 部署實戰:從磁盤分區到陣列掛載的標準化流程

編輯:關於 Linux

RAID 5 以「單盤容錯、空間利用率 (N-1)/N、讀性能優異」成為中小型存儲首選。本文基于 mdadm 在 Linux 下實現軟 RAID 5,涵蓋磁盤分區、陣列創建、文件系統格式化、持久化掛載與故障模擬恢復的完整閉環操作。

一、RAID 級別快速對比

級別最少盤數容錯空間利用率讀性能寫性能典型場景
RAID 02無100%最佳最佳臨時緩存、非關鍵數據
RAID 12N-1 塊盤50%好一般系統盤、關鍵小數據
RAID 531 塊盤(N-1)/N優中 (校驗開銷)數據庫、文件服務器、虛擬化存儲
RAID 642 塊盤(N-2)/N優中低高可靠歸檔、大容量陣列
RAID 104最多 N/250%最佳優高性能關鍵業務 (OLTP)

二、實驗環境與磁盤準備

  • OS:CentOS 7 / RHEL 7 / Ubuntu 20.04+
  • 工具:mdadm (軟 RAID 管理)、fdisk/parted (分區)
  • 演示:單塊物理磁盤 /dev/sdb (20GB) 劃分 5 個主分區模擬 5 塊盤,**生產環境必須使用物理獨立磁盤**。

1. 分區規劃

fdisk /dev/sdb
# 依次創建 5 個主分區 (或擴展分區下邏輯分區),類型設置為 Linux RAID (fd)
# n -> p -> 1 -> Enter -> +4G   (分區 1)
# n -> p -> 2 -> Enter -> +4G   (分區 2)
# n -> p -> 3 -> Enter -> +4G   (分區 3)
# n -> p -> 4 -> Enter -> +4G   (分區 4)
# n -> p -> 5 -> Enter -> Enter (分區 5,剩餘空間)
# t -> 1 -> fd  (修改類型為 Linux RAID)
# ... 重複對所有分區設置類型 fd
# w  寫入分區表

2. 內核重讀分區表

partprobe /dev/sdb
# 或
partx -a /dev/sdb
lsblk /dev/sdb
# 確認 sdb1-sdb5 均顯示類型 "linux_raid_member" (尚未創建陣列前為 "linux")

3. 安裝 mdadm

# RHEL/CentOS
yum install mdadm
# Debian/Ubuntu
apt-get install mdadm
# 驗證
mdadm --version

三、創建 RAID 5 陣列

mdadm --create /dev/md0 \
      --level=5 \
      --raid-devices=5 \
      /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4 /dev/sdb5 \
      --metadata=1.2 \
      --chunk=512 \
      --name=raid5_data

# 參數解析:
# --level=5          RAID 5
# --raid-devices=5   成員盤數
# --metadata=1.2     超級塊版本 1.2 (支援 >2TB、啟動器友好)
# --chunk=512        塊大小 512KB (大文件順序讀寫優化,小文件可用 64K/128K)
# --name=raid5_data  陣列名稱 (顯示在 /dev/md/raid5_data)

監控同步進度

watch -n 1 cat /proc/mdstat
# 輸出示例:
# Personalities : [raid6] [raid5] [raid4]
# md0 : active raid5 sdb5[4] sdb4[3] sdb3[2] sdb2[1] sdb1[0]
#       15624192 blocks super 1.2 level 5, 512k chunk, algorithm 2 [5/5] [UUUUU]
#       [====>................]  resync = 23.4% (732160/3124832) finish=1.2min speed=32100K/sec
# 等待 resync 完成顯示 [UUUUU] 且無 resync 行

四、文件系統與持久化掛載

1. 格式化為 ext4 (或 xfs)

mkfs.ext4 -L RAID5_DATA /dev/md0
# 或 xfs
mkfs.xfs -L RAID5_DATA /dev/md0

2. 獲取 UUID

blkid /dev/md0
# /dev/md0: UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" TYPE="ext4" LABEL="RAID5_DATA"

3. 配置 /etc/fstab (掛載選項優化)

UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890  /data/raid5  ext4  defaults,noatime,nodiratime,_netdev  0  2
# _netdev: 標記為網絡設備,延遲掛載至網絡就緒 (systemd 會自動排序)
# noatime/nodiratime: 禁用訪問時間更新,減少寫入放大

4. 創建掛載點並掛載

mkdir -p /data/raid5
mount -a
df -h /data/raid5

五、配置 mdadm 監控與開機自動組裝

1. 生成配置文件

mdadm --detail --scan >> /etc/mdadm.conf
# 或 Ubuntu/Debian
mdadm --detail --scan >> /etc/mdadm/mdadm.conf
# 內容示例:
# ARRAY /dev/md/raid5_data metadata=1.2 name=host:raid5_data UUID=uuid...

2. 更新 initramfs (確保啟動階段識別陣列)

# RHEL/CentOS
dracut -f
# Debian/Ubuntu
update-initramfs -u

3. 啟用監控郵件告警 (可選)

# /etc/mdadm.conf 添加
MAILADDR root@localhost
PROGRAM /usr/sbin/mdadm-monitor
# systemctl enable --now mdmonitor

六、故障模擬與恢復演練 (核心運維技能)

場景:模擬 sdb3 磁盤故障

# 1. 標記故障
mdadm --manage /dev/md0 --fail /dev/sdb3
# 2. 移除故障盤
mdadm --manage /dev/md0 --remove /dev/sdb3
# 3. 查看狀態 (應顯示 degraded [UU_U])
cat /proc/mdstat

# 4. 物理更換磁盤後,假設新盤為 /dev/sdc1 (已分區類型 fd)
mdadm --manage /dev/md0 --add /dev/sdc1
# 5. 觀察重建進度
watch cat /proc/mdstat
# 重建完成後恢復 [UUUUU]

七、性能調優清單

優化點建議值/操作效果
Chunk Size512K (大順序 IO) / 64K (小隨機 IO)匹配應用 IO 模式
Read Aheadblockdev --setra 65536 /dev/md0 (64MB)順序讀預取優化
Stripe Cacheecho 8192 > /sys/block/md0/md/stripe_cache_size寫入性能提升 2-3 倍 (消耗內存)
Bitmapmdadm --grow /dev/md0 --bitmap=internal斷電後快速重建,僅同步脏條帶
文件系統XFS (大文件/高併發) / ext4 (通用)元數據性能差異

RAID5磁盤分區示例

八、總結

  1. 物理磁盤分區類型設置為 fd (Linux RAID)。
  2. mdadm --create --level=5 --raid-devices=N 創建陣列,等待 resync 完成。
  3. 格式化文件系統,以 UUID 配置 /etc/fstab 持久化掛載。
  4. mdadm --detail --scan >> /etc/mdadm.conf + dracut/update-initramfs 保證開機自動組裝。
  5. 定期 cat /proc/mdstat 巡檢,掌握 --fail/--remove/--add 故障替換流程。

標準化部署與演練,讓軟 RAID 5 成為您存儲架構中可靠、可觀測、可運維的基石。

Copyright © Windows教程網 All Rights Reserved