歡迎您光臨本站 註冊首頁

linux RAID設置

←手機掃碼閱讀     火星人 @ 2014-03-08 , reply:0

上一篇日誌講述了RAID原理,下面我將linux下配置software RAID

軟體磁碟陣列的設置還是比較簡單的,因為在centos中使用mdadm磁碟陣列軟體套件,它只有一條命令mdadm

  1. [[email protected] ~]# mdadm --detail /dev/md0
  2. [[email protected] ~]# mdadm --create --auto=yes /dev/md[0-9] --raid-devices=N \
  3. > --level=[015] --spare-devices=N /dev/sdx /dev/hdx ...
  4. --create:為新建RAID的參數
  5. --auto=yes:決定新建後面的軟體磁碟陣列設備,既/dev/md0,/dev/md1等
  6. --raid-devices=N:使用幾個磁碟作為磁碟陣列設備
  7. --spare-devices=N:使用幾個磁碟作為備用設備
  8. --level=[015]:設置這組磁碟陣列的等級
  9. --detail:後面所接的那個磁碟陣列設備的詳細信息

先查看一下我的硬碟

  1. [[email protected] ~]# fdisk -l
  2. Disk /dev/sda: 53.6 GB, 53687091200 bytes

  3. 255 heads, 63 sectors/track, 6527 cylinders
  4. Units = cylinders of 16065 * 512 = 8225280 bytes
  5. Device Boot Start End Blocks Id System
  6. /dev/sda1 * 1 13 104391 83 Linux
  7. /dev/sda2 14 6527 52323705 8e Linux LVM
  8. Disk /dev/sdb: 21.4 GB, 21474836480 bytes
  9. 255 heads, 63 sectors/track, 2610 cylinders
  10. Units = cylinders of 16065 * 512 = 8225280 bytes
  11. Disk /dev/sdb doesn't contain a valid partition table

正式開始我的RAID之旅

第一步分區:

  1. [[email protected] ~]# fdisk /dev/sdb
  2. ….系統提示部分省略…
  3. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
  4. Command (m for help): n
  5. Command action
  6. e extended
  7. p primary partition (1-4)
  8. e
  9. Partition number (1-4): 1
  10. First cylinder (1-2610, default 1):
  11. Using default value 1
  12. Last cylinder or size or sizeM or sizeK (1-2610, default 2610): 20480M

  13. 下面操作在循環四次
  14. Command (m for help): n
  15. Command action
  16. l logical (5 or over)
  17. p primary partition (1-4)
  18. l
  19. First cylinder (1-2491, default 1):
  20. Using default value 1
  21. Last cylinder or size or sizeM or sizeK (1-2491, default 2491): 1000M
  22. #最後可以看到
  23. Command (m for help): p
  24. Disk /dev/sdb: 21.4 GB, 21474836480 bytes
  25. 255 heads, 63 sectors/track, 2610 cylinders
  26. Units = cylinders of 16065 * 512 = 8225280 bytes
  27. Device Boot Start End Blocks Id System
  28. /dev/sdb1 1 2491 20008926 5 Extended
  29. /dev/sdb5 1 123 987934 83 Linux
  30. /dev/sdb6 124 246 987966 83 Linux
  31. /dev/sdb7 247 369 987966 83 Linux
  32. /dev/sdb8 370 492 987966 83 Linux
  33. /dev/sdb9 493 615 987966 83 Linux
  34. Command (m for help): w
  35. The partition table has been altered!
  36. Calling ioctl() to re-read partition table.
  37. Syncing disks.
  38. [[email protected] ~]# partprobe

第二步建立RAID:

  1. [[email protected] dev]# mdadm --create --auto=yes /dev/md1 --level=5 \
  2. > --raid-devices=4 --spare-devices=1 /dev/sdb{5,6,7,8,9}
  3. mdadm: array /dev/md1 started.

在查看下RAID

  1. [[email protected] dev]# mdadm --detail /dev/md1
  2. /dev/md1:
  3. Version : 00.90.03
  4. Creation Time : Wed Sep 28 00:51:30 2011
  5. Raid Level : raid5
  6. Array Size : 2963520 (2.83 GiB 3.03 GB)
  7. Used Dev Size : 987840 (964.85 MiB 1011.55 MB)
  8. Raid Devices : 4
  9. Total Devices : 5
  10. Preferred Minor : 1
  11. Persistence : Superblock is persistent
  12. Update Time : Wed Sep 28 00:51:42 2011
  13. State : clean
  14. Active Devices : 4
  15. Working Devices : 5
  16. Failed Devices : 0
  17. Spare Devices : 1
  18. Layout : left-symmetric

  19. Chunk Size : 64K
  20. UUID : a9d780b6:0c39ade4:9b2cf2af:9328f5fd
  21. Events : 0.2
  22. Number Major Minor RaidDevice State
  23. 0 8 21 0 active sync /dev/sdb5
  24. 1 8 22 1 active sync /dev/sdb6
  25. 2 8 23 2 active sync /dev/sdb7
  26. 3 8 24 3 active sync /dev/sdb8
  27. 4 8 25 - spare /dev/sdb9

上面用了五個分區,其中四個用給了RAID5做磁碟陣列設備,另外一個做了spare disk設備.另外還可以查閱如下的文件看看系統軟體磁碟陣列的情況:

  1. [[email protected] dev]# cat /proc/mdstat
  2. Personalities : [raid6] [raid5] [raid4]
  3. md1 : active raid5 sdb8[3] sdb9[4](S) sdb7[2] sdb6[1] sdb5[0]
  4. 2963520 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
  5. unused devices: <none>

md1開始,第一行指出md1raid5,且使用sdb5sdb6

sdb7sdb8四個設備,每個設備後面的括弧[]中的數字為此磁碟在RAID的順序sdb9後面中S表示spare之意.

第二行磁碟陣列擁有2963520block,使用RAID 5等級,寫入磁碟的小區塊大小為64KB,使用algorithm 2磁碟陣列演算法[m/n]代表數組需要

m個設備,且有n個設備正常運行.因此這個的4個設備都運行正常,最後的[UUUU]表示四個所需的設備啟用情況,U表示正常,_表示不正常

第三步格式化分區與掛載:

  1. [[email protected] dev]# mkfs -t ext3 /dev/md1
  2. [[email protected] dev]# mkdir /mnt/raid

  3. [[email protected] dev]# mount /dev/md1 /mnt/raid
  4. [[email protected] dev]# df
  5. Filesystem 1K-blocks Used Available Use% Mounted on
  6. /dev/mapper/VolGroup00-LogVol00
  7. 49039600 2574532 43933740 6% /
  8. /dev/sda1 101086 12072 83795 13% /boot
  9. tmpfs 411956 0 411956 0% /dev/shm
  10. /dev/md1 2916920 69952 2698792 3% /mnt/raid

到這裡RAID,已經做成功了,是不是很簡單呢.下面我們測試下

測試操作一:模擬RAID錯誤的救援模式

  1. [[email protected] dev]# mdadm --manage /dev/ma[0-9] [--add 設備] [--remove 設備] [--fail 設備]
  2. --add:會將後面的設備添加到這個md中
  3. --remove:會將後面的設備從這個md設備中刪除
  4. --fail:會將後面的設備設置成為出錯狀態

拷貝一些數據到md1

  1. [[email protected] ~]# cp -a /etc /var /mnt/raid
  2. [[email protected] ~]# df /mnt/raid/ ; du -sm /mnt/raid/
  3. Filesystem 1K-blocks Used Available Use% Mounted on
  4. /dev/md1 2916920 258820 2509924 10% /mnt/raid
  5. 196 /mnt/raid/

接下來把/dev/sdb7設置成錯誤

  1. [[email protected] ~]# mdadm --manage /dev/md1 --fail /dev/sdb7
  2. mdadm: set /dev/sdb7 faulty in /dev/md1
  3. [[email protected] ~]# mdadm --detail /dev/md1
  4. …省略系統信息…
  5. Number Major Minor RaidDevice State
  6. 0 8 21 0 active sync /dev/sdb5
  7. 1 8 22 1 active sync /dev/sdb6
  8. 4 8 25 2 spare rebuilding /dev/sdb9
  9. 3 8 24 3 active sync /dev/sdb8
  10. 5 8 23 - faulty spare /dev/sdb7

在看看/proc/mdstat

  1. [[email protected] ~]# cat /proc/mdstat
  2. Personalities : [raid6] [raid5] [raid4]
  3. md1 : active raid5 sdb8[3] sdb9[2] sdb7[4](F) sdb6[1] sdb5[0]
  4. 2963520 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
  5. unused devices: <none>

可以看到

sdb7後面躲了個F,既是fail的縮寫.最後面的[UUUU]還是四個U,表示RAID已經恢復了數據

測試操作二:刪除錯誤的磁碟並添加新的磁碟

  1. [[email protected] ~]# fdisk /dev/sdb

  2. (e.g., DOS FDISK, OS/2 FDISK)
  3. Command (m for help): n
  4. Command action
  5. l logical (5 or over)
  6. p primary partition (1-4)
  7. l
  8. First cylinder (616-2491, default 616):
  9. Using default value 616
  10. Last cylinder or size or sizeM or sizeK (616-2491, default 2491): 1000M
  11. Command (m for help): w
  12. [[email protected] ~]# partprobe
  13. [[email protected] ~]# mdadm --manage /dev/md1 --add /dev/sdb10 --remove /dev/sdb7
  14. mdadm: added /dev/sdb10
  15. mdadm: hot removed /dev/sdb7
  16. [[email protected] ~]# mdadm --detail /dev/md1
  17. …省略…
  18. Number Major Minor RaidDevice State
  19. 0 8 21 0 active sync /dev/sdb5
  20. 1 8 22 1 active sync /dev/sdb6
  21. 2 8 25 2 active sync /dev/sdb9
  22. 3 8 24 3 active sync /dev/sdb8
  23. 4 8 26 - spare /dev/sdb10

第四步開機自動啟動

RAID並自動掛載:

現在很多linux版本會自動查詢/dev/md[0-9],不過建議大家還是修改一下配置文件,該配置文件位於/etc/mdadm.conf,這個配置文件可以見簡單的設置,只要知道

/dev/md1UUID就可以了,如下

  1. [[email protected] ~]# mdadm --detail /dev/md1 | grep -i uuid
  2. UUID : a9d780b6:0c39ade4:9b2cf2af:9328f5fd
  3. [[email protected] ~]# vi /etc/mdadm.conf
  4. ARRAY /dev/md1 UUID : a9d780b6:0c39ade4:9b2cf2af:9328f5fd
  5. [[email protected] ~]# vi /etc/fstab
  6. /dev/md1 /mnt/raid ext3 defaults 1 2
  7. [[email protected] ~]# umount /dev/md1
  8. [[email protected] ~]# mount –a
  9. [[email protected] ~]# df /mnt/raid/
  10. Filesystem 1K-blocks Used Available Use% Mounted on
  11. /dev/md1 2916920 258820 2509924 10% /mnt/raid

最後,刪除RAID

方法一:

  1. [[email protected] ~]# mdadm --detail /dev/md1 | grep -i uuid
  2. UUID : a9d780b6:0c39ade4:9b2cf2af:9328f5fd 將其註釋掉
  3. [[email protected] ~]# umount /mnt/md0
  4. [[email protected] ~]# vi /etc/fstab
  5. /dev/md1 /mnt/raid ext3 defaults 1 2

  6. #將這句刪除

方法二:

  1. 直接在mdadm中stop掉
  2. [[email protected] ~]# mdadm --stop /dev/md1

到此software RAID設置宣告結束

本文出自 「Aixe」 博客,請務必保留此出處http://aixecc.blog.51cto.com/3931677/818614


[火星人 ] linux RAID設置已經有434次圍觀

http://coctec.com/docs/linux/show-post-46340.html