RAID 磁碟陣列管理
Red Hat 的 raid 支援了幾種類型:
.raid 0 (Striping):將兩個或多個磁碟串成單一個磁碟分割,其大小是所有磁碟的和,raid 0 的效能會比單一磁碟機好,可是當組成磁碟陣列的其中一個磁碟故障時,整個 raid 0 就報廢了。
.raid 1 (Mirroring):將兩個磁碟並聯起來,組合成 raid 1,其大小是和磁碟中較小的那一個一樣,兩個磁碟的內容是一樣的,這是一種冗餘 (redundancy) 和保護資料的作法,但磁碟寫入的速度會比單一磁碟機稍慢,如果其中一個磁碟機故障,另一個還保存完整的資料。
.raid 5:將三個或多個磁碟組成 raid 5,其中一個是用來作資料同位元檢查,它可增加磁碟的讀寫表現,又可以保有資料保全的能力,它可容忍一個磁碟故障但資料還能保存。
.raid 6:和 raid 5 相似,可是又多了一份資料同位元檢查,所以增加了容錯能力,它可以容忍兩個磁碟同時故障但是依然保有資料的完整性。
通常 raid 裝置的代號是 /dev/md0、/dev/md1、/dev/md2 ……,我們可以使用 mdadm 的指令來建立和管理 raid 磁碟:
# parted /dev/sdb print (先將磁碟分割切好,切好後來看一看各磁碟分割)
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system 旗標
1 32.3kB 107MB 107MB 主分割區
2 107MB 214MB 107MB 主分割區
3 214MB 321MB 107MB 主分割區
4 321MB 10.7GB 10.4GB 擴充分割區
5 321MB 421MB 100MB 邏輯分割區
6 421MB 521MB 100MB 邏輯分割區
7 521MB 621MB 100MB 邏輯分割區
8 621MB 721MB 100MB 邏輯分割區
9 721MB 821MB 100MB 邏輯分割區
10 821MB 1000MB 179MB 邏輯分割區
資訊: 如果必要,不要忘記更新 /etc/fstab。
將要設定成 raid 的磁碟指定旗標 (tag) 成 raid:
#parted /dev/sdb set 5 raid on (數字 5 是磁碟分割區的編號,同樣的動作,不同磁碟編號,將要製作成 raid 的磁碟都設成 raid)
資訊: 如果必要,不要忘記更新 /etc/fstab。
全部設好之後再看看:
# parted /dev/sdb print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system 旗標
1 32.3kB 107MB 107MB 主分割區
2 107MB 214MB 107MB 主分割區
3 214MB 321MB 107MB 主分割區
4 321MB 10.7GB 10.4GB 擴充分割區
5 321MB 421MB 100MB 邏輯分割區 raid
6 421MB 521MB 100MB 邏輯分割區 raid
7 521MB 621MB 100MB 邏輯分割區 raid
8 621MB 721MB 100MB 邏輯分割區 raid
9 721MB 821MB 100MB 邏輯分割區 raid
10 821MB 1000MB 179MB 邏輯分割區 raid
資訊: 如果必要,不要忘記更新 /etc/fstab。
==============================
建立 raid 磁碟
開始建立 raid 磁碟陣列:
# mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/sdb5 /dev/sdb6
mdadm: array /dev/md0 started.
參數說明:
-C:建立磁碟陣列,後面帶磁碟陣列的裝置代號,如 /dev/md0
-a yes:/dev/md0 不見得存在,此參數要求如果 /dev/md0 不存在則建立一個 /dev/md0
-l:和 –level=n 一樣,是指建立的磁碟陣列的等級,-l 1 是指建立 raid 1
-n 2:和 –raid-device=n 一樣,是指要加入陣列的磁碟數量,最後面帶要加入陣列的磁碟代號
將磁碟陣列製作成 ext3 的檔案系統:
# mke2fs -j /dev/md0
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
24384 inodes, 97536 blocks
4876 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67371008
12 block groups
8192 blocks per group, 8192 fragments per group
2032 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
檢查 /dev/md0 磁碟陣列的內容:
# mdadm –detail /dev/md0
/dev/md0:
Version : 00.90.03
Creation Time : Sat Apr 4 23:27:19 2009
Raid Level : raid1 (磁碟陣列的等級)
Array Size : 97536 (95.27 MiB 99.88 MB)
Device Size : 97536 (95.27 MiB 99.88 MB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Sat Apr 4 23:27:53 2009
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
UUID : 470840fd:2bd76018:941662be:28d5ae31
Events : 0.2
Number Major Minor RaidDevice State (磁碟陣列的成員內容)
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
掛載起來:
# mkdir /mnt/md0 (建立一個掛載點)
# mount /dev/md0 /mnt/md0 (掛載起來)
# df -h (查看一下)
檔案系統 容量 已用 可用 已用% 掛載點
/dev/mapper/VolGroup00-LogVol00
18G 5.8G 11G 35% /
/dev/sda1 99M 22M 72M 24% /boot
tmpfs 506M 0 506M 0% /dev/shm
/dev/md0 93M 5.6M 82M 7% /mnt/md0 (已經掛載起來)
設定在 /etc/fstab:
# echo “/dev/md0 /mnt/md0 ext3 defaults 1 2” >> /etc/fstab (在 /etc/fstab 中補上這一行)
# umount -a (先卸載所有的檔案系統)
umount: /var/lib/nfs/rpc_pipefs: device is busy
umount: /: device is busy
# mount -a (將之全部掛載起來)
# df -h (檢查一下)
檔案系統 容量 已用 可用 已用% 掛載點
/dev/mapper/VolGroup00-LogVol00
18G 5.8G 11G 35% /
/dev/sda1 99M 22M 72M 24% /boot
tmpfs 506M 0 506M 0% /dev/shm
/dev/md0 93M 5.6M 82M 7% /mnt/md0 (已經掛載起來)
==============================
RAID 磁碟故障維護
當 /dev/md0 有成員磁碟故障時,先用 -f 參數將該磁碟分割標記成損壞磁碟,再用 -r 參數將之移除,最後用 -a 增加新的磁碟進來:
# cat /proc/mdstat (先看看原始內容)
Personalities : [raid1]
md0 : active raid1 sdb6[1] sdb5[0]
97536 blocks [2/2] [UU]
unused devices: <none>
# mdadm /dev/md0 -f /dev/sdb6 (標記 /dev/sdb6 為損壞磁碟)
mdadm: set /dev/sdb6 faulty in /dev/md0
# mdadm –detail /dev/md0 (檢查一下 /dev/md0 的內容)
/dev/md0:
Version : 00.90.03
Creation Time : Sat Apr 4 23:27:19 2009
Raid Level : raid1
Array Size : 97536 (95.27 MiB 99.88 MB)
Device Size : 97536 (95.27 MiB 99.88 MB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Sun Apr 5 00:20:10 2009
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 1
Spare Devices : 0
UUID : 470840fd:2bd76018:941662be:28d5ae31
Events : 0.4
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 0 0 1 removed
2 8 22 – faulty spare /dev/sdb6
# cat /proc/mdstat (檢查一下 /dev/md0 的內容)
Personalities : [raid1]
md0 : active raid1 sdb6[2](F) sdb5[0]
97536 blocks [2/1] [U_]
unused devices: <none>
# mdadm /dev/md0 -r /dev/sdb6 (將 /dev/sdb6 從 /dev/md0 移除)
mdadm: hot removed /dev/sdb6
# mdadm –detail /dev/md0 (檢查一下 /dev/md0 的內容)
/dev/md0:
Version : 00.90.03
Creation Time : Sat Apr 4 23:27:19 2009
Raid Level : raid1
Array Size : 97536 (95.27 MiB 99.88 MB)
Device Size : 97536 (95.27 MiB 99.88 MB)
Raid Devices : 2
Total Devices : 1
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Sun Apr 5 00:20:52 2009
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
UUID : 470840fd:2bd76018:941662be:28d5ae31
Events : 0.6
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 0 0 1 removed
# cat /proc/mdstat (檢查一下 /dev/md0 的內容)
Personalities : [raid1]
md0 : active raid1 sdb5[0]
97536 blocks [2/1] [U_]
unused devices: <none>
# mdadm /dev/md0 -a /dev/sdb7 (將 /dev/sdb7 新增到 /dev/md0 裡)
mdadm: added /dev/sdb7
# mdadm –detail /dev/md0 (檢查一下 /dev/md0 的內容)
/dev/md0:
Version : 00.90.03
Creation Time : Sat Apr 4 23:27:19 2009
Raid Level : raid1
Array Size : 97536 (95.27 MiB 99.88 MB)
Device Size : 97536 (95.27 MiB 99.88 MB)
Raid Devices : 2
Total Devices : 2
Preferred Minor : 0
Persistence : Superblock is persistent
Update Time : Sun Apr 5 00:21:18 2009
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
UUID : 470840fd:2bd76018:941662be:28d5ae31
Events : 0.8
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 23 1 active sync /dev/sdb7
# cat /proc/mdstat (檢查一下 /dev/md0 的內容)
Personalities : [raid1]
md0 : active raid1 sdb7[1] sdb5[0]
97536 blocks [2/2] [UU]
unused devices: <none>
測試一下:
# touch /mnt/md0/test
# ls /mnt/md0/
lost+found test
# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb7[1] sdb5[0]
97536 blocks [2/2] [UU]
unused devices: <none>
==============================
移除 RAID 磁碟陣列
要移除 raid 磁碟陣列步驟如下:
# umount /mnt/md0 (先將之卸載)
# mdadm -S /dev/md0 (停止 /dev/md0)
mdadm: stopped /dev/md0
# cat /proc/mdstat (檢查一下 /dev/md0 的內容)
Personalities : [raid1]
unused devices: <none>
# mdadm –detail /dev/md0 (檢查一下 /dev/md0 的內容)
mdadm: md device /dev/md0 does not appear to be active.