萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 軟體 RAID 實作指南:RAID 0/1 設定與 mdtools/raidtools 使用詳解

想實現 Linux 軟體磁碟陣列(RAID),首要參考 Linas Vepsta 的 RAID 主頁:https://linas.org/linux/raid.html。本文發表於 1998 年 10 月,旨在釐清實作 RAID 0(分散讀寫/striping)與 RAID 1(鏡像/mirroring)時遇到的問題。作者嘗試結合 RAID 0 效能與 RAID 1 備份優勢。

核心 2.0.30 下的 RAID 0 (striping)

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.31~2.0.34 RAID 0

未嘗試,直接從 2.0.30 升級 2.0.35。

核心 2.0.35 RAID 0

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 變化不大。

核心 2.0.35 RAID 1

使用 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 不確定)。

核心 2.0.35 下 RAID 0 簡化步驟

使用兩個 SCSI 裝置 /dev/sda1、/dev/sdb1:

  1. 分區使塊大小相同
  2. 分區類型設為 0xfd(核心啟動自動識別 RAID)
  3. 修改 /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
  4. mkraid -f /dev/md0(注意閱讀錯誤訊息)
  5. cat /proc/mdstat 確認 md 裝置正確
  6. mke2fs -c /dev/md0 格式化
  7. 建立掛載點(如 /raidtest)測試:mount /dev/md0 /raidtest
copyright © 萬盛學電腦網 all rights reserved