上一篇日誌講述了RAID原理,下面我將linux下配置software RAID
軟體磁碟陣列的設置還是比較簡單的,因為在centos中使用mdadm磁碟陣列軟體套件,它只有一條命令mdadm
- [root@CentOS5 ~]# mdadm --detail /dev/md0
- [root@CentOS5 ~]# mdadm --create --auto=yes /dev/md[0-9] --raid-devices=N \
- > --level=[015] --spare-devices=N /dev/sdx /dev/hdx ...
- --create:為新建RAID的參數
- --auto=yes:決定新建後面的軟體磁碟陣列設備,既/dev/md0,/dev/md1等
- --raid-devices=N:使用幾個磁碟作為磁碟陣列設備
- --spare-devices=N:使用幾個磁碟作為備用設備
- --level=[015]:設置這組磁碟陣列的等級
- --detail:後面所接的那個磁碟陣列設備的詳細信息
先查看一下我的硬碟
- [root@CentOS5 ~]# fdisk -l
- Disk /dev/sda: 53.6 GB, 53687091200 bytes
- 255 heads, 63 sectors/track, 6527 cylinders
- Units = cylinders of 16065 * 512 = 8225280 bytes
- Device Boot Start End Blocks Id System
- /dev/sda1 * 1 13 104391 83 Linux
- /dev/sda2 14 6527 52323705 8e Linux LVM
- Disk /dev/sdb: 21.4 GB, 21474836480 bytes
- 255 heads, 63 sectors/track, 2610 cylinders
- Units = cylinders of 16065 * 512 = 8225280 bytes
- Disk /dev/sdb doesn't contain a valid partition table
正式開始我的RAID之旅
第一步分區:
- [root@CentOS5 ~]# fdisk /dev/sdb
- ….系統提示部分省略…
- Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
- Command (m for help): n
- Command action
- e extended
- p primary partition (1-4)
- e
- Partition number (1-4): 1
- First cylinder (1-2610, default 1):
- Using default value 1
- Last cylinder or size or sizeM or sizeK (1-2610, default 2610): 20480M
- 下面操作在循環四次
- Command (m for help): n
- Command action
- l logical (5 or over)
- p primary partition (1-4)
- l
- First cylinder (1-2491, default 1):
- Using default value 1
- Last cylinder or size or sizeM or sizeK (1-2491, default 2491): 1000M
- #最後可以看到
- Command (m for help): p
- Disk /dev/sdb: 21.4 GB, 21474836480 bytes
- 255 heads, 63 sectors/track, 2610 cylinders
- Units = cylinders of 16065 * 512 = 8225280 bytes
- Device Boot Start End Blocks Id System
- /dev/sdb1 1 2491 20008926 5 Extended
- /dev/sdb5 1 123 987934 83 Linux
- /dev/sdb6 124 246 987966 83 Linux
- /dev/sdb7 247 369 987966 83 Linux
- /dev/sdb8 370 492 987966 83 Linux
- /dev/sdb9 493 615 987966 83 Linux
- Command (m for help): w
- The partition table has been altered!
- Calling ioctl() to re-read partition table.
- Syncing disks.
- [root@CentOS5 ~]# partprobe
第二步建立RAID:
- [root@CentOS5 dev]# mdadm --create --auto=yes /dev/md1 --level=5 \
- > --raid-devices=4 --spare-devices=1 /dev/sdb{5,6,7,8,9}
- mdadm: array /dev/md1 started.
在查看下RAID
- [root@CentOS5 dev]# mdadm --detail /dev/md1
- /dev/md1:
- Version : 00.90.03
- Creation Time : Wed Sep 28 00:51:30 2011
- Raid Level : raid5
- Array Size : 2963520 (2.83 GiB 3.03 GB)
- Used Dev Size : 987840 (964.85 MiB 1011.55 MB)
- Raid Devices : 4
- Total Devices : 5
- Preferred Minor : 1
- Persistence : Superblock is persistent
- Update Time : Wed Sep 28 00:51:42 2011
- State : clean
- Active Devices : 4
- Working Devices : 5
- Failed Devices : 0
- Spare Devices : 1
- Layout : left-symmetric
- Chunk Size : 64K
- UUID : a9d780b6:0c39ade4:9b2cf2af:9328f5fd
- Events : 0.2
- Number Major Minor RaidDevice State
- 0 8 21 0 active sync /dev/sdb5
- 1 8 22 1 active sync /dev/sdb6
- 2 8 23 2 active sync /dev/sdb7
- 3 8 24 3 active sync /dev/sdb8
- 4 8 25 - spare /dev/sdb9
上面用了五個分區,其中四個用給了RAID5做磁碟陣列設備,另外一個做了spare disk設備.另外還可以查閱如下的文件看看系統軟體磁碟陣列的情況:
- [root@CentOS5 dev]# cat /proc/mdstat
- Personalities : [raid6] [raid5] [raid4]
- md1 : active raid5 sdb8[3] sdb9[4](S) sdb7[2] sdb6[1] sdb5[0]
- 2963520 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
- unused devices: <none>
md1開始,第一行指出md1是raid5,且使用sdb5、sdb6、
sdb7、sdb8四個設備,每個設備後面的括弧[]中的數字為此磁碟在RAID的順序sdb9後面中S表示spare之意.第二行磁碟陣列擁有2963520個block,使用RAID 5等級,寫入磁碟的小區塊大小為64KB,使用algorithm 2磁碟陣列演算法[m/n]代表數組需要
m個設備,且有n個設備正常運行.因此這個的4個設備都運行正常,最後的[UUUU]表示四個所需的設備啟用情況,U表示正常,_表示不正常第三步格式化分區與掛載:
- [root@CentOS5 dev]# mkfs -t ext3 /dev/md1
- [root@CentOS5 dev]# mkdir /mnt/raid
- [root@CentOS5 dev]# mount /dev/md1 /mnt/raid
- [root@CentOS5 dev]# df
- Filesystem 1K-blocks Used Available Use% Mounted on
- /dev/mapper/VolGroup00-LogVol00
- 49039600 2574532 43933740 6% /
- /dev/sda1 101086 12072 83795 13% /boot
- tmpfs 411956 0 411956 0% /dev/shm
- /dev/md1 2916920 69952 2698792 3% /mnt/raid
到這裡RAID,已經做成功了,是不是很簡單呢.下面我們測試下
測試操作一:模擬RAID錯誤的救援模式
- [root@CentOS5 dev]# mdadm --manage /dev/ma[0-9] [--add 設備] [--remove 設備] [--fail 設備]
- --add:會將後面的設備添加到這個md中
- --remove:會將後面的設備從這個md設備中刪除
- --fail:會將後面的設備設置成為出錯狀態
拷貝一些數據到md1中
- [root@CentOS5 ~]# cp -a /etc /var /mnt/raid
- [root@CentOS5 ~]# df /mnt/raid/ ; du -sm /mnt/raid/
- Filesystem 1K-blocks Used Available Use% Mounted on
- /dev/md1 2916920 258820 2509924 10% /mnt/raid
- 196 /mnt/raid/
接下來把/dev/sdb7設置成錯誤
- [root@CentOS5 ~]# mdadm --manage /dev/md1 --fail /dev/sdb7
- mdadm: set /dev/sdb7 faulty in /dev/md1
- [root@CentOS5 ~]# mdadm --detail /dev/md1
- …省略系統信息…
- Number Major Minor RaidDevice State
- 0 8 21 0 active sync /dev/sdb5
- 1 8 22 1 active sync /dev/sdb6
- 4 8 25 2 spare rebuilding /dev/sdb9
- 3 8 24 3 active sync /dev/sdb8
- 5 8 23 - faulty spare /dev/sdb7
在看看/proc/mdstat
- [root@CentOS5 ~]# cat /proc/mdstat
- Personalities : [raid6] [raid5] [raid4]
- md1 : active raid5 sdb8[3] sdb9[2] sdb7[4](F) sdb6[1] sdb5[0]
- 2963520 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
- unused devices: <none>
可以看到
sdb7後面躲了個F,既是fail的縮寫.最後面的[UUUU]還是四個U,表示RAID已經恢復了數據測試操作二:刪除錯誤的磁碟並添加新的磁碟
- [root@CentOS5 ~]# fdisk /dev/sdb
- (e.g., DOS FDISK, OS/2 FDISK)
- Command (m for help): n
- Command action
- l logical (5 or over)
- p primary partition (1-4)
- l
- First cylinder (616-2491, default 616):
- Using default value 616
- Last cylinder or size or sizeM or sizeK (616-2491, default 2491): 1000M
- Command (m for help): w
- [root@CentOS5 ~]# partprobe
- [root@CentOS5 ~]# mdadm --manage /dev/md1 --add /dev/sdb10 --remove /dev/sdb7
- mdadm: added /dev/sdb10
- mdadm: hot removed /dev/sdb7
- [root@CentOS5 ~]# mdadm --detail /dev/md1
- …省略…
- Number Major Minor RaidDevice State
- 0 8 21 0 active sync /dev/sdb5
- 1 8 22 1 active sync /dev/sdb6
- 2 8 25 2 active sync /dev/sdb9
- 3 8 24 3 active sync /dev/sdb8
- 4 8 26 - spare /dev/sdb10
第四步開機自動啟動
RAID並自動掛載:現在很多linux版本會自動查詢/dev/md[0-9],不過建議大家還是修改一下配置文件,該配置文件位於/etc/mdadm.conf,這個配置文件可以見簡單的設置,只要知道
/dev/md1的UUID就可以了,如下
- [root@CentOS5 ~]# mdadm --detail /dev/md1 | grep -i uuid
- UUID : a9d780b6:0c39ade4:9b2cf2af:9328f5fd
- [root@CentOS5 ~]# vi /etc/mdadm.conf
- ARRAY /dev/md1 UUID : a9d780b6:0c39ade4:9b2cf2af:9328f5fd
- [root@CentOS5 ~]# vi /etc/fstab
- /dev/md1 /mnt/raid ext3 defaults 1 2
- [root@CentOS5 ~]# umount /dev/md1
- [root@CentOS5 ~]# mount –a
- [root@CentOS5 ~]# df /mnt/raid/
- Filesystem 1K-blocks Used Available Use% Mounted on
- /dev/md1 2916920 258820 2509924 10% /mnt/raid
最後,刪除RAID
方法一:
- [root@CentOS5 ~]# mdadm --detail /dev/md1 | grep -i uuid
- UUID : a9d780b6:0c39ade4:9b2cf2af:9328f5fd 將其註釋掉
- [root@CentOS5 ~]# umount /mnt/md0
- [root@CentOS5 ~]# vi /etc/fstab
- /dev/md1 /mnt/raid ext3 defaults 1 2
- #將這句刪除
方法二:
- 直接在mdadm中stop掉
- [root@CentOS5 ~]# mdadm --stop /dev/md1
到此software RAID設置宣告結束
本文出自 「Aixe」 博客,請務必保留此出處http://aixecc.blog.51cto.com/3931677/818614
[火星人 ] linux RAID設置已經有636次圍觀