CentOS 下的RAID磁碟軟陣列

來源:互聯網
上載者:User

RAID 概述

RAID即廉價冗餘磁碟陣列(Redundant Array of Inexpensive Disk)的簡稱,通過該技術可以

將多個磁碟組成一個陣列整體,而應用時可以作為單個磁碟使用。RAID 磁碟陣列根據其使用的技

術不同,可用於提高資料讀寫效率、提高資料冗餘(備份),當陣列中的一個磁碟發生故障時,可

以通過校正資料從其他磁碟中進行恢複,大大增強了應用系統資料的讀寫效能及可靠性。

較常見的 RAID技術包括如下幾個層級:

„ RAID 0:最基本的一種陣列方式,通過簡單的將多個磁碟(最少2 塊)組成到一起,作為

一個大磁碟使用。存取資料時,通過將資料分段同時寫入到不同的磁碟中,大大提高了效

率。但是這種方式沒有資料冗餘,其中任何一個磁碟壞了以後,都可能導致資料丟失。

„ RAID 1:即磁碟鏡像技術,需要最少 2 塊磁碟(磁碟利用率:1/n)。這種方式將資料同時

寫入到陣列中的多塊磁碟中,不同磁碟中的資料互為鏡像。因此,其中任何一個磁碟壞了

以後,資料不會丟失。

„ RAID 5:通過引入資料校正技術來保證資料的安全,需要最少 3 塊磁碟(磁碟利用率: n-1)。

這種方式並不使用固定的某塊磁碟存放校正資料,而是分段儲存在各個磁碟中。因此,其

中任何一個磁碟壞了以後,也可以根據其他磁碟中的校正資料進行恢複。

由於 RAID5 陣列技術既通過資料冗餘增強了可靠性,又通過多塊磁碟同時寫入資料提高了效

率,一直以來受到廣泛的應用。

未使用硬體磁碟卡方式實現的 RAID 技術,通常稱為軟 RAID 技術。本文將在 RHEL5 系統中,

使用不同磁碟中的多個分區,配置實現 RAID 5磁碟陣列。


9.2 構建使用軟 RAID磁碟陣列

在 RHEL5 系統中,配置軟 RAID 陣列可以通過安裝 mdadm 軟體包實現。該軟體包一般為系

統預設安裝,若檢查沒有安裝的話,從 RHEL5 系統光碟片中尋找安裝即可。

[root@localhost ~]# mount /dev/cdrom /media/cdrom/

mount: block device /dev/cdrom is write-protected, mounting read-only

[root@localhost ~]# rpm -ivh /media/cdrom/Server/mdadm-2.5.4-3.el5.i386.rpm

Preparing... ########################################### [100%]

1:mdadm ########################################### [100%]

[root@localhost ~]# rpm -qi mdadm | grep "Summary"

Summary : mdadm 控制 Linux md 裝置 (軟體 RAID 陣列)


下面將以 RAID5磁碟陣列為例,講解軟磁碟陣列的配置使用方法。


準備用於 RAID陣列的分區

用於組成 RAID陣列的各個分區應該位於不同的磁碟裝置中,否則實用價值不大。各分區的容

量最好也相同,必要時可以將整個硬碟劃分為一個分區。

為 Linux伺服器添加 4塊 SCSI 硬碟,並使用 fdisk 工具各劃分出一塊 2GB 的分區,依次為:

/dev/sdb1、/dev/sdc1、/dev/sdd1、/dev/sde1。分區前請注意確保沒有別的程式正在使用對應的

磁碟。下一小節中將以這 4 個分區為例(RAID 5需要至少 3 塊磁碟或分區)講解 RAID5 磁碟陣列

的建立方法。

對於上述分區還應該將其類型 ID更改為“fd”,對應為“Linux raid autodetect”,表示支援用

於 RAID磁碟陣列。

[root@localhost ~]# fdisk /dev/sdb

……

Command (m for help): n

Command action

e extended

p primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-522, default 1):

Using default value 1

Last cylinder or +size or +sizeM or +sizeK (1-522, default 522): +2048M

Command (m for help): t

Selected partition 1

Hex code (type L to list codes): fd

Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): p

……

Device Boot Start End Blocks Id System

/dev/sdb1 1 250 2008093+ fd Linux raid autodetect


Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

[root@localhost ~]#


建立好三個分區以後,執行“partprobe”重新探測分區表(或重啟系統),驗證分區類型和容

量等資訊。

[root@localhost ~]# partprobe

[root@localhost ~]# fdisk -l /dev/sd[b-e] | grep "^/dev/sd"

/dev/sdb1 1 250 2008093+ fd Linux raid autodetect

/dev/sdc1 1 250 2008093+ fd Linux raid autodetect

/dev/sdd1 1 250 2008093+ fd Linux raid autodetect

/dev/sde1 1 250 2008093+ fd Linux raid autodetect


建立 RAID裝置

使用 mdadm 工具可以組合多個 RAID 分區作為一個磁碟陣列,陣列裝置檔案名稱習慣上使用

“/dev/md0”、“/dev/md1”等。

[root@localhost ~]# mdadm -Cv /dev/md0 -a yes -n4 -l5 /dev/sd[b-e]1

mdadm: layout defaults to left-symmetric

mdadm: chunk size defaults to 64K

mdadm: /dev/sdb1 appears to be part of a raid array:

level=raid5 devices=4 ctime=Sat Jul 25 08:44:50 2009

mdadm: /dev/sdc1 appears to be part of a raid array:

level=raid5 devices=4 ctime=Sat Jul 25 08:44:50 2009

mdadm: /dev/sdd1 appears to be part of a raid array:

level=raid5 devices=4 ctime=Sat Jul 25 08:44:50 2009

mdadm: /dev/sde1 appears to be part of a raid array:

level=raid5 devices=4 ctime=Sat Jul 25 08:44:50 2009

mdadm: size set to 2008000K

Continue creating array? y

mdadm: array /dev/md0 started.

[root@localhost ~]#

在上述命令操作中,“/dev/md0”為建立的 RAID陣列裝置檔案名稱,“/dev/sd[bcd]1”表示此陣

列將使用/dev/sdb1、/dev/sdc1、/dev/sdd1 這三個分區。其他各部分選項、參數的含義如下:

„ -C,等同於 --create:建立一個新的陣列裝置

„ -v,等同於 --verbose:執行過程中輸出細節資訊

„ -a,等同於 --auto=:指定參數為 yes 時,表示若對應的裝置檔案不存在則自動建立

„ -n,等同於 --raid-devices=:用於組成陣列的分區裝置個數,“-n3”表示為 3 個

„ -l,等同於 --level=:使用的 RAID層級,“-l5”表示為 RAID 5

關於 mdadm 命令更多選項的使用,請參考“man mdadm”協助資訊。

建立好 md0陣列裝置後,將自動被啟用,執行“cat /proc/mdstat”可以觀察陣列裝置的

運行狀態。

[root@localhost ~]# ls -l /dev/md0

brw------- 1 root root 9, 0 07-25 09:03 /dev/md0

[root@localhost ~]# cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]

md0 : active raid5 sde1[3] sdd1[2] sdc1[1] sdb1[0]

6024000 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

其中,“[4/4]”部分中的第一個“4”表示成員裝置個數,後邊的“4”表示當前的活動裝置個

數,“UUUU”對應為成員裝置的狀態。例如,若出現“[4/3][UUU_]”的資訊時,則表示第 4 個成

員裝置(/dev/sde1)出現故障了。


在 RAID裝置中建立檔案系統

建立好磁碟陣列裝置檔案“/dev/md0”以後,就可以在該裝置中建立檔案系統了。在 RHEL5

系統中,可以使用 mkfs 命令格式化該裝置,將其作為 ext3檔案系統來使用。

[root@localhost ~]# mkfs -t ext3 /dev/md0

mke2fs 1.39 (29-May-2006)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

753664 inodes, 1506000 blocks

75300 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=1543503872

46 block groups

32768 blocks per group, 32768 fragments per group

16384 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 33 mounts or

180 days, whichever comes first. Use tune2fs -c or -i to override.

掛載並使用檔案系統

建立掛載點目錄“/mdata”,並將上一小節中建立好的檔案系統掛載到該目錄,即可正常使用。

[root@localhost ~]# mkdir /mdata

[root@localhost ~]# mount /dev/md0 /mdata

[root@localhost ~]# df -T | grep "md0" //驗證掛載的“/mdata”檔案系統

/dev/md0 ext3 5929360 142976 5485184 3% /mdata

除去一個成員裝置作為校正盤以後,磁碟陣列的有效儲存空間為 3個成員裝置的容量之和(大

約為 2GB×3=6GB)。

如果希望在每次開機後自動掛載該陣列裝置,可以在“/etc/fstab”檔案中添加相應設定。

[root@localhost ~]# vi /etc/fstab

/dev/md0 /mdata ext3 defaults 0 0



陣列的管理及裝置恢複


基本管理操作

1.掃描或查看磁碟陣列資訊

使用 mdadm 命令時,“-D”選項相當於“--detail”,表示顯示掃描結果的詳細內容;“-s”

選項相當於“--scan”,用於掃描陣列裝置。

未指定陣列裝置檔案時,可以顯示出當前系統中的陣列配置資訊、RAID裝置列表。

[root@localhost ~]# mdadm -vDs

ARRAY /dev/md0 level=raid5 num-devices=4

UUID=35bcffa1:cdc5ba41:0c5b5702:e32a3259

devices=/dev/sdb1,/dev/sdc1,/dev/sdd1,/dev/sde1

當指定陣列裝置作為參數時,可以輸出指定陣列裝置的詳細參數,包括活動裝置個數、失

效裝置個數、更新時間、列表成員裝置位置等。

[root@localhost ~]# mdadm -vDs /dev/md0

/dev/md0:

Version : 00.90.03

Creation Time : Sat Jul 25 11:23:07 2009

Raid Level : raid5

Array Size : 6024000 (5.74 GiB 6.17 GB)

Device Size : 2008000 (1961.27 MiB 2056.19 MB)

Raid Devices : 4

Total Devices : 4

Preferred Minor : 0

Persistence : Superblock is persistent

Update Time : Sat Jul 25 11:26:01 2009

State : clean

Active Devices : 4

Working Devices : 4

Failed Devices : 0

Spare Devices : 0

Layout : left-symmetric

Chunk Size : 64K

UUID : 35bcffa1:cdc5ba41:0c5b5702:e32a3259

Events : 0.6

Number Major Minor RaidDevice State

0 8 17 0 active sync /dev/sdb1

1 8 33 1 active sync /dev/sdc1

2 8 49 2 active sync /dev/sdd1

3 8 18 3 active sync /dev/sde1


2.建立設定檔 mdadm.conf

mdamd 的設定檔為“/etc/mdadm.conf”,該檔案只是用來方便使用者管理和使用,缺少

此檔案並不會影響磁碟陣列的功能。在設定檔中可以儲存多個磁碟陣列的配置資訊。配置文

件中的基本資料可以通過前面講過的“mdadm -vDs”命令獲得。

[root@localhost ~]# vi /etc/mdadm.conf

DEVICE /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

ARRAY /dev/md0 level=raid5 num-devices=4

UUID=35bcffa1:cdc5ba41:0c5b5702:e32a3259

devices=/dev/sdb1,/dev/sdc1,/dev/sdd1,/dev/sde1

CREATE owner=root group=root mode=0640

在上述檔案中, “ARRAY”、“UUID” “devices”部分是位於同一行中的內容,最後一

行中的“CREATE”用於設定自動建立陣列裝置檔案的屬主、屬組及預設許可權。關於mdadm.conf

設定檔中更多配置項的使用,可以參考“man mdadm.conf”協助資訊。

3.啟動/停止RAID陣列

在確保沒有相關程式讀寫磁碟陣列裝置的情況下,可以停止陣列裝置。只需使用 mdadm

命令結合“-S”選項(等同於“--stop”選項)即可。執行該操作將會禁用對應的陣列裝置,

釋放相關資源。

[root@localhost ~]# mdadm -S /dev/md0

mdadm: stopped /dev/md0

結合“-A”選項(等同於“--assemble”選項)可以重新組合對應的磁碟陣列裝置。

[root@localhost ~]# mdadm -A /dev/md0

mdadm: /dev/md0 has been started with 4 drives.

[root@localhost ~]# mount /dev/md0 /mdata/


裝置恢複操作

1.類比陣列裝置故障

對於運行中的磁碟陣列,可以結合 mdadm 命令的“-f”選項(等同於“”選項)用於模

擬成員裝置故障,例如可將陣列中的“/dev/sdb1”標記為故障裝置。

[root@localhost ~]# mdadm /dev/md0 -f /dev/sde1

mdadm: set /dev/sde1 faulty in /dev/md0

當陣列中的某個成員裝置出現故障時,陣列會將其標記為失活狀態。此時通過“cat

/proc/mdstat”可以觀察到丟失出現故障的裝置(/dev/sde1)。

[root@localhost ~]# cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]

md0 : active raid5 sde1[3](F) sdd1[2] sdc1[1] sdb1[0]

6024000 blocks level 5, 64k chunk, algorithm 2 [4/3] [UUU_]


2.更換故障裝置,並恢複資料

對於出現故障的裝置,可以結合“-r”選項將其移除,然後換上正常的裝置,結合“-a”

選項重新添加到陣列中即可。

[root@localhost ~]# mdadm /dev/md0 -r /dev/sde1

mdadm: hot removed /dev/sde1 //移除故障裝置

[root@localhost ~]# mdadm /dev/md0 -a /dev/sde1

mdadm: re-added /dev/sde1 //重新加入正常裝置

RAID5 磁碟陣列能夠在較短時間內進行重構和資料恢複,當需要恢複的資料較多時,可

以在此期間觀察到陣列狀態的恢複進度。

[root@localhost ~]# cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]

md0 : active raid5 sde1[3] sdd1[2] sdc1[1] sdb1[0]

6024000 blocks level 5, 64k chunk, algorithm 2 [4/3] [UUU_]

[===>.................] recovery = 16.3% (328192/2008000) finish=2.6min

speed=10586K/sec

unused devices: <none>

待資料恢複完成以後,再次查看陣列狀態即顯示為正常了。

[root@localhost ~]# cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]

md0 : active raid5 sde1[3] sdd1[2] sdc1[1] sdb1[0]

6024000 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]

unused devices: <none>


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.