天天看點

如何使用linux程式mdadm建立軟體RAID1軟陣列如何使用linux程式mdadm建立軟體RAID1軟陣列

磁盤備援陣列(raid)是将多個實體磁盤結合成一個邏輯磁盤的技術,該技術可以提高磁盤容錯性能,提高磁盤的讀寫速度。根據資料存儲的排列(如:條帶存儲,鏡像存儲,奇偶或者他們的組合),定義了幾個不同級别的raid(raid-0,raid-1,raid-5 等等)。磁盤陣列可以使用軟體或者硬體方式實作。現代linux作業系統中,基本的軟體raid功能是預設安裝的。

本文中,我們将介紹軟體方式建構raid-1陣列(鏡像陣列),raid-1将相同的資料寫到不同的裝置中。雖然可以使用同一個磁盤的兩個分區實作raid-1,但是如果磁盤壞了的話資料就都丢了,是以沒什麼意義。實際上,這也是為什麼大多數raid級别都使用多個實體磁盤提供備援。當單盤失效後不影響整個陣列的運作,并且可以線上更換磁盤,最重要的是資料不會丢失。盡管如此,陣列不能取代外部存儲的定期備份。

由于raid-1陣列的大小是陣列中最小磁盤的大小,一般來說應該使用兩個大小相同的磁盤來組建raid-1。

<a target="_blank"></a>

我們将使用mdadm(簡稱多盤管理)工具建立、組裝、管理和監控軟體raid-1。在諸如fedora、centos、rhel或者arch linux 的發行版中,mdadm是預設安裝的。在基于debian的發行版中,可以使用aptitude 或者 apt-get 安裝mdadm。

由于adadm是預裝的,是以我們隻需要開啟raid守護服務,并将其配置成開機啟動即可:

# systemctl start mdmonitor

# systemctl enable mdmonitor

對于centos/rhel 6系統,使用以下指令:

# service mdmonitor start

# chkconfig mdmonitor on

在debian或類debian系統中,mdadm可以使用 aptitude 或者 apt-get 安裝:

# aptitude install mdadm

ubuntu系統中,會要求配置postfix mta 以發送電子郵件通知。你可以跳過去。

debian系統中,安裝程式會顯示以下解釋資訊,用來幫助我們去判斷是否将根目錄安裝到raid陣列中。下面的所有操作都有賴于這一步,是以應該仔細閱讀他。

如何使用linux程式mdadm建立軟體RAID1軟陣列如何使用linux程式mdadm建立軟體RAID1軟陣列

我們不在根目錄使用raid-1,是以留白。

如何使用linux程式mdadm建立軟體RAID1軟陣列如何使用linux程式mdadm建立軟體RAID1軟陣列

提示是否開機啟動陣列的時候,選擇“是”。注意,這裡需要往/etc/fstab 檔案中添加一個條目使得系統啟動的時候正确挂載陣列。

如何使用linux程式mdadm建立軟體RAID1軟陣列如何使用linux程式mdadm建立軟體RAID1軟陣列

現在開始準備建立陣列需要的硬碟。這裡插入兩個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鍵輸出現在的分區表:

如何使用linux程式mdadm建立軟體RAID1軟陣列如何使用linux程式mdadm建立軟體RAID1軟陣列

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

磁盤上沒有分區,是以我們使用指令 ['n'] 建立一個主分區['p'], 配置設定分區号為['1'] 并且指定大小。你可以按回車使用預設值,或者輸入一個你想設定的值。如下圖:

如何使用linux程式mdadm建立軟體RAID1軟陣列如何使用linux程式mdadm建立軟體RAID1軟陣列

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

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

磁盤分區完成後,我們可以使用以下指令建立 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” 繼續建立陣列,回車:

如何使用linux程式mdadm建立軟體RAID1軟陣列如何使用linux程式mdadm建立軟體RAID1軟陣列

可以使用以下指令檢視進度:

# cat /proc/mdstat

如何使用linux程式mdadm建立軟體RAID1軟陣列如何使用linux程式mdadm建立軟體RAID1軟陣列

另外一個擷取陣列資訊的方法是:

# mdadm --query /dev/md0

# mdadm --detail /dev/md0 (或 mdadm -d /dev/md0)

如何使用linux程式mdadm建立軟體RAID1軟陣列如何使用linux程式mdadm建立軟體RAID1軟陣列

'mdadm -d'指令提供的資訊中,最重要就是陣列狀态類。激活狀态說明陣列正在進行讀寫操作。其他幾個狀态分别為:完成(讀寫完成)、降級(有一塊磁盤失效或丢失)或者恢複中(一張新盤已插入,系統正在寫入資料)。這幾個狀态涵蓋了大多數情況。

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

# mkfs.ext4 /dev/md0

如何使用linux程式mdadm建立軟體RAID1軟陣列如何使用linux程式mdadm建立軟體RAID1軟陣列

現在可以加載陣列并驗證其正常加載:

# mount /dev/md0 /mnt

# mount

如何使用linux程式mdadm建立軟體RAID1軟陣列如何使用linux程式mdadm建立軟體RAID1軟陣列

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 [email protected]

編輯完畢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" &lt;&lt; /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

如何使用linux程式mdadm建立軟體RAID1軟陣列如何使用linux程式mdadm建立軟體RAID1軟陣列

現在我們的陣列已經可以通路了,拷貝檔案/etc/passwd到/mnt中測試一下:

如何使用linux程式mdadm建立軟體RAID1軟陣列如何使用linux程式mdadm建立軟體RAID1軟陣列

debian系統中,需要在/etc/default/mdadm 設定 autostart 變量為 true 才能使mdadm守護程式在開機時自動加載陣列:

autostart=true

我們将使用以下指令解除安裝磁盤來模拟磁盤故障。注意,在實際應用中,磁盤如果已經是故障狀态了,不需要解除安裝。

首先,解除安裝陣列:

現在注意每次執行指令後 '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 上:

如何使用linux程式mdadm建立軟體RAID1軟陣列如何使用linux程式mdadm建立軟體RAID1軟陣列

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

# mdadm --stop /dev/md0

# shutdown -h now

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

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

希望本文對你有所幫助。

原文釋出時間:2015-02-15

本文來自雲栖合作夥伴“linux中國”

繼續閱讀