linux RAID设置

   上一篇日志讲述了RAID原理,下面我将linux下配置software RAID

   软件磁盘阵列的设置还是比较简单的,因为在centos中使用mdadm磁盘阵列软件套件,它只有一条命令mdadm

  
  
  
  
  1. [root@CentOS5 ~]# mdadm --detail /dev/md0 
  2. [root@CentOS5 ~]# 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. [root@CentOS5 ~]# 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.  
  9. Disk /dev/sdb: 21.4 GB, 21474836480 bytes 
  10. 255 heads, 63 sectors/track, 2610 cylinders 
  11. Units = cylinders of 16065 * 512 = 8225280 bytes 
  12. Disk /dev/sdb doesn't contain a valid partition table 

  正式开始我的RAID之旅

  第一步分区:

  
  
  
  
  1. [root@CentOS5 ~]# 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. Partition number (1-4): 1 
  9. First cylinder (1-2610, default 1):  
  10. Using default value 1 
  11. Last cylinder or +size or +sizeM or +sizeK (1-2610, default 2610): +20480M 
  12. 下面操作在循环四次 
  13. Command (m for help): n 
  14. Command action 
  15.    l   logical (5 or over) 
  16.    p   primary partition (1-4) 
  17. First cylinder (1-2491, default 1):  
  18. Using default value 1 
  19. Last cylinder or +size or +sizeM or +sizeK (1-2491, default 2491): +1000M 
  20. #最后可以看到 
  21. Command (m for help): p 
  22. Disk /dev/sdb: 21.4 GB, 21474836480 bytes 
  23. 255 heads, 63 sectors/track, 2610 cylinders 
  24. Units = cylinders of 16065 * 512 = 8225280 bytes 
  25.  
  26.    Device Boot      Start         End      Blocks   Id  System 
  27. /dev/sdb1               1        2491    20008926    5  Extended 
  28. /dev/sdb5               1         123      987934+  83  Linux 
  29. /dev/sdb6             124         246      987966   83  Linux 
  30. /dev/sdb7             247         369      987966   83  Linux 
  31. /dev/sdb8             370         492      987966   83  Linux 
  32. /dev/sdb9             493         615      987966   83  Linux 
  33.  
  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. [root@CentOS5 ~]# partprobe 

  第二步建立RAID:

  
  
  
  
  1. [root@CentOS5 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. [root@CentOS5 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.  
  13.     Update Time : Wed Sep 28 00:51:42 2011 
  14.           State : clean 
  15.  Active Devices : 4 
  16. Working Devices : 5 
  17.  Failed Devices : 0 
  18.   Spare Devices : 1 
  19.  
  20.          Layout : left-symmetric 
  21.      Chunk Size : 64K 
  22.  
  23.            UUID : a9d780b6:0c39ade4:9b2cf2af:9328f5fd 
  24.          Events : 0.2 
  25.  
  26.     Number   Major   Minor   RaidDevice State 
  27.        0       8       21        0      active sync   /dev/sdb5 
  28.        1       8       22        1      active sync   /dev/sdb6 
  29.        2       8       23        2      active sync   /dev/sdb7 
  30.        3       8       24        3      active sync   /dev/sdb8 
  31.  
  32.        4       8       25        -      spare   /dev/sdb9 

  上面用了五个分区,其中四个用给了RAID5做磁盘阵列设备,另外一个做了spare disk设备。另外还可以查阅如下的文件看看系统软件磁盘阵列的情况:

  
  
  
  
  1. [root@CentOS5 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.        
  6. unused devices: <none> 

  md1开始,第一行指出md1raid5,且使用sdb5sdb6sdb7sdb8四个设备,每个设备后面的括号[]中的数字为此磁盘在RAID的顺序sdb9后面中S表示spare之意。

  第二行磁盘阵列拥有2963520block,使用RAID 5等级,写入磁盘的小区块大小为64KB,使用algorithm 2磁盘阵列算法[m/n]代表数组需要m个设备,且有n个设备正常运行。因此这个的4个设备都运行正常,最后的[UUUU]表示四个所需的设备启用情况,U表示正常,_表示不正常

  第三步格式化分区与挂载:

  
  
  
  
  1. [root@CentOS5 dev]# mkfs -t ext3 /dev/md1 
  2. [root@CentOS5 dev]# mkdir /mnt/raid 
  3. [root@CentOS5 dev]# mount /dev/md1 /mnt/raid 
  4. [root@CentOS5 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. [root@CentOS5 dev]# mdadm --manage /dev/ma[0-9] [--add 设备] [--remove 设备] [--fail 设备] 
  2. --add:会将后面的设备添加到这个md中 
  3. --remove:会将后面的设备从这个md设备中删除 
  4. --fail:会将后面的设备设置成为出错状态 

  首先拷贝一些数据到md1

  
  
  
  
  1. [root@CentOS5 ~]# cp -a /etc /var /mnt/raid 
  2. [root@CentOS5 ~]# 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. [root@CentOS5 ~]# mdadm --manage /dev/md1 --fail /dev/sdb7  
  2. mdadm: set /dev/sdb7 faulty in /dev/md1 
  3. [root@CentOS5 ~]# 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.  
  11.        5       8       23        -      faulty spare   /dev/sdb7 

  在看看/proc/mdstat

  
  
  
  
  1. [root@CentOS5 ~]# 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.        
  6. unused devices: <none> 

  可以看到sdb7后面躲了个F,既是fail的缩写。最后面的[UUUU]还是四个U,表示RAID已经恢复了数据

  测试操作二:删除错误的磁盘并添加新的磁盘

  
  
  
  
  1. [root@CentOS5 ~]# fdisk /dev/sdb 
  2.    (e.g., DOS FDISK, OS/2 FDISK) 
  3.  
  4. Command (m for help): n 
  5. Command action 
  6.    l   logical (5 or over) 
  7.    p   primary partition (1-4) 
  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.  
  12. Command (m for help): w 
  13. [root@CentOS5 ~]# partprobe 
  14. [root@CentOS5 ~]# mdadm --manage /dev/md1 --add /dev/sdb10 --remove /dev/sdb7  
  15. mdadm: added /dev/sdb10 
  16. mdadm: hot removed /dev/sdb7 
  17. [root@CentOS5 ~]# mdadm --detail /dev/md1 
  18. …省略… 
  19.     Number   Major   Minor   RaidDevice State 
  20.        0       8       21        0      active sync   /dev/sdb5 
  21.        1       8       22        1      active sync   /dev/sdb6 
  22.        2       8       25        2      active sync   /dev/sdb9 
  23.        3       8       24        3      active sync   /dev/sdb8 
  24.  
  25.        4       8       26        -      spare   /dev/sdb10 

  第四步开机自动启动RAID并自动挂载:

  现在很多linux版本会自动查询/dev/md[0-9],不过建议大家还是修改一下配置文件,该配置文件位于/etc/mdadm.conf,这个配置文件可以见简单的设置,只要知道/dev/md1UUID就可以了,如下

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

  最后,删除RAID

  方法一:

  
  
  
  
  1. [root@CentOS5 ~]# mdadm --detail /dev/md1 | grep -i uuid 
  2.            UUID : a9d780b6:0c39ade4:9b2cf2af:9328f5fd 将其注释掉 
  3. [root@CentOS5 ~]# umount /mnt/md0 
  4. [root@CentOS5 ~]# vi /etc/fstab 
  5. /dev/md1                /mnt/raid               ext3    defaults        1 2
  6. #将这句删除 

  方法二:

  
  
  
  
  1. 直接在mdadm中stop掉 
  2. [root@CentOS5 ~]# mdadm --stop /dev/md1  

  到此software RAID设置宣告结束

你可能感兴趣的:(linux,职场,raid,software,休闲,RAID设置)