Linux中國

如何使用linux程序mdadm創建軟體RAID1軟陣列

我們不在根目錄使用RAID-1,所以留空。

提示是否開機啟動陣列的時候,選擇「是」。注意,這裡需要往/etc/fstab 文件中添加一個條目使得系統啟動的時候正確掛載陣列。

硬碟分區

現在開始準備建立陣列需要的硬碟。這裡插入兩個8GB的usb磁碟,使用dmesg命令設備顯示設備 /dev/sdb 和 /dev/sdc

# dmesg | less 

[ 60.014863] sd 3:0:0:0: [sdb] 15826944 512-byte logical blocks: (8.10 GB/7.54 GiB) [ 75.066466] sd 4:0:0:0: [sdc] 15826944 512-byte logical blocks: (8.10 GB/7.54 GiB)

我們使用fdisk為每個磁碟建立一個大小為8G的主分區。以下步驟是如何在/dev/sdb上建立分區,假設次磁碟從未被分區(如果有其他分區的話,可以刪掉):

# fdisk /dev/sdb 

按p鍵輸出現在的分區表:

(如果有分區的話,可以使用 d 選項刪除,w 選項應用更改)。

磁碟上沒有分區,所以我們使用命令 ['n'] 創建一個主分區['p'], 分配分區號為['1'] 並且指定大小。你可以按回車使用默認值,或者輸入一個你想設置的值。如下圖:

用同樣的方法為/dev/sdc 分區。

如果我們有兩個不同容量的硬碟,比如 750GB 和 1TB的話,我們需要在每個磁碟上分出一個750GB的主分區,大盤剩下的空間可以用作他用,不加入磁碟陣列。

創建 RAID-1 陣列

磁碟分區完成後,我們可以使用以下命令創建 RAID-1 陣列:

# mdadm -Cv /dev/md0 -l1 -n2 /dev/sdb1 /dev/sdc1 

說明:

  • -Cv: 創建一個陣列並列印出詳細信息。
  • /dev/md0: 陣列名稱。
  • -l1 (l as in "level"): 指定陣列類型為 RAID-1 。
  • -n2: 指定我們將兩個分區加入到陣列中去,分別為/dev/sdb1 和 /dev/sdc1

以上命令和下面的等價:

 # mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1 

如果你想在在磁碟失效時添加另外一個磁碟到陣列中,可以指定 '--spare-devices=1 /dev/sdd1' 到以上命令。

輸入 「y」 繼續創建陣列,回車:

可以使用以下命令查看進度:

 # cat /proc/mdstat 

另外一個獲取陣列信息的方法是:

# mdadm --query /dev/md0
# mdadm --detail /dev/md0 (或 mdadm -D /dev/md0) 

'mdadm -D'命令提供的信息中,最重要就是陣列狀態類。激活狀態說明陣列正在進行讀寫操作。其他幾個狀態分別為:完成(讀寫完成)、降級(有一塊磁碟失效或丟失)或者恢復中(一張新盤已插入,系統正在寫入數據)。這幾個狀態涵蓋了大多數情況。

格式化或載入磁碟陣列

下一步就是格式化陣列了,本例中使用ext4格式:

 # mkfs.ext4 /dev/md0 

現在可以載入陣列並驗證其正常載入:

# mount /dev/md0 /mnt
# mount 

監控磁碟陣列

mdadm工具內置有磁碟陣列監控功能。當mdadm作為守護程序運行的時候(就像我們上文那樣),會周期性的檢測陣列運行狀態,將檢測到的信息通過電子郵件或者系統日誌報告上來。當然,也可以配置其在發生致命性錯誤的時候調用緊急命令。

mdadm默認會記錄所有已知分區和陣列的事件,並將他們記錄到 /var/log/syslog中。或者你可以在配置文件中(debian系統:/etc/mdadm/mdadm.conf ,紅帽子系統:/etc/mdadm.conf )用以下格式指定監控設備或者陣列。如果mdadm.conf文件不存在,你可以創建一個。

DEVICE /dev/sd[bcde]1 /dev/sd[ab]1

ARRAY /dev/md0 devices=/dev/sdb1,/dev/sdc1
ARRAY /dev/md1 devices=/dev/sdd1,/dev/sde1
.....

# optional email address to notify events
MAILADDR your@email.com

編輯完畢mdadm配置文件後,重啟mdadm服務:

Debian系統,Ubuntu或者Linux Mint:

# service mdadm restart

Fedora, CentOS 或 RHEL 7:

# systemctl restart mdmonitor

CentOS或者RHEL 6:

# service mdmonitor restart 

自動載入陣列

現在我們在/etc/fstab中加入條目使得系統啟動的時候將陣列掛載到/mnt目錄下:

# echo "/dev/md0 /mnt ext4 defaults 0 2" << /etc/fstab 

為了驗證掛載腳本工作正常,我們首先卸載陣列,重啟mdadm,然後重新載入。可以看到/dev/md0已經安裝我們添加到/etc/fstab中的條目載入了:

# umount /mnt
# service mdadm restart (on Debian, Ubuntu or Linux Mint)
or systemctl restart mdmonitor (on Fedora, CentOS/RHEL7)
or service mdmonitor restart (on CentOS/RHEL6)
# mount -a 

現在我們的陣列已經可以訪問了,拷貝文件/etc/passwd到/mnt中測試一下:

Debian系統中,需要在/etc/default/mdadm 設置 AUTOSTART 變數為 true 才能使mdadm守護程序在開機時自動載入陣列:

AUTOSTART=true

模擬磁碟丟失故障

我們將使用以下命令卸載磁碟來模擬磁碟故障。注意,在實際應用中,磁碟如果已經是故障狀態了,不需要卸載。

首先,卸載陣列:

# umount /mnt 

現在注意每次執行命令後 'mdadm -D /dev/md0' 的輸出。

# mdadm /dev/md0 --fail /dev/sdb1 # 標記 /dev/sdb1 為失效
# mdadm --remove /dev/md0 /dev/sdb1 # 從陣列中移走 /dev/sdb1 

然後,如果你有個備用盤的話,重新添加一下:

 # mdadm /dev/md0 --add /dev/sdb1 

數據會被自動添加到備用盤 /dev/sdb1 上:

注意以上所述步驟只適合支持磁碟熱拔插的系統,在不支持熱拔插的系統中,還是得停止陣列並關機後更換備用盤:

# mdadm --stop /dev/md0
# shutdown -h now 

最後將新驅動器重新添加到陣列中:

# mdadm /dev/md0 --add /dev/sdb1
# mdadm --assemble /dev/md0 /dev/sdb1 /dev/sdc1 

希望本文對你有所幫助。

via: http://xmodulo.com/2014/09/create-software-raid1-array-mdadm-linux.html

作者:Gabriel Cánepa 譯者:shipsw 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國