Chinaunix首页 | 论坛 | 博客
  • 博客访问: 302568
  • 博文数量: 84
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 890
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-13 16:46
文章分类

全部博文(84)

文章存档

2017年(2)

2016年(4)

2015年(78)

我的朋友

分类: LINUX

2015-07-06 22:27:27

15.2.3软件磁盘阵列的设置
mdadm命令语法
mdadm --detail /dev/md0
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:使用几个磁盘作为备用spare设备
--level=[015]:设置这组磁盘阵列的等级。
--detail:后面接的那个磁盘阵列设备的详细信息。

上 面的语法中,最后会接许多的设备文件名(/dev/sdx /dev/hdx),这些设备文件名可以是整块磁盘,例如/dev/sdb也可以是分区,例如/dev/sdb1之类,不过,这些设备名的总数必须要等于 --raid-devices与--spare--devices的个数总和才行

基本语法 : mdadm [mode] <raid-device> [options] <component-devices>
mode  有7种:
  Assemble:将以前定义的某个阵列加入当前在用阵列。(如果umount /dev/mdx 则可能需要使用此命令恢复阵列)
  Build:Build a legacy array ,每个device 没有 superblocks
  Create:创建一个新的阵列,每个device 具有 superblocks
  Manage: 管理阵列,比如 add 或 remove
  Misc:允许单独对阵列中的某个 device 做操作,比如抹去superblocks 或 终止在用的阵列。
  Follow or Monitor:监控 raid 1,4,5,6 和 multipath 的状态
  Grow:改变raid 容量或 阵列中的 device 数目
可用的 [options]:
-A, --assemble:加入一个以前定义的阵列
-B, --build:Build a legacy array without superblocks.
-C, --create:创建一个新的阵列
-Q, --query:查看一个device,判断它为一个 md device 或是 一个 md 阵列的一部分
-D, --detail:打印一个或多个 md device 的详细信息
-E, --examine:打印 device 上的 md superblock 的内容
-F, --follow, --monitor:选择 Monitor 模式
-G, --grow:改变在用阵列的大小或形态
-h, --help:帮助信息,用在以上选项后,则显示该选项信息
--help-options
-V, --version
-v, --verbose:显示细节
-b, --brief:较少的细节。用于 --detail 和 --examine 选项
-f, --force
-c, --config= :指定配置文件,缺省为 /etc/mdadm.conf
-s, --scan:扫描配置文件或 /proc/mdstat以搜寻丢失的信息。配置文件/etc/mdadm.conf
mdadm.conf 格式:
DEVICE  所用到的设备分区列表(在mdadm扫描时,将扫描这些分区)
ARRAY   定义实际的磁盘阵列
简单实例:
DEVICE /dev/sda10 /dev/sda11 /dev/sdb10 /dev/sdb11
ARRAY /dev/md0 devices=/dev/sda11, /dev/sda10

[root@RHEL6 /]# mdadm  --create --auto=yes /dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/sd{c,d,e,f}
mdadm: You haven't given enough devices (real or missing) to create this array  #这报了一个错误,没有足够的设备,也就是,raid-devices+spare-devices>/devsd{c,d,e,f}
[root@RHEL6 /]# mdadm  --create --auto=yes /dev/md0 --level=5 --raid-devices=3 --spare-devices=1 /dev/sd{c,d,e,f}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
还有一种写法是
[root@RHEL6 /]# mdadm -C /dev/md0 -l 5 -n 3 /dev/sda{6,7,8} -x 1  /dev/sda9  #-l 5 做raid5,-n 3 需要3块磁盘, -x 1 需要一块热备


[root@RHEL6 /]# mdadm --detail /dev/md0
/dev/md0:                                                                                          #RAID设备文件名
        Version : 1.2
  Creation Time : Mon Jul  6 15:07:37 2015                        #RAID被创建的时间
     Raid Level : raid5                               #RAID等级为RAID 5
     Array Size : 2095104 (2046.34 MiB 2145.39 MB)        #此RAID的可用磁盘容量
  Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)        #每个设备的可用容量
   Raid Devices : 3                                                                        #作用RAID的设备数量
  Total Devices : 4                                                                        #全部的设备数量
    Persistence : Superblock is persistent

    Update Time : Mon Jul  6 15:07:47 2015
          State : clean                                                             
 Active Devices : 3                                                                        #启动活动的(active)设备数量
Working Devices : 4                                                                        #工作的设备数量
 Failed Devices : 0                                                                        #出现错误的设备数量
  Spare Devices : 1                                                                        #预备磁盘的数量

         Layout : left-symmetric
     Chunk Size : 512K

           Name : RHEL6.4x64:0  (local to host RHEL6.4x64)
           UUID : 04fb4194:c2f800ce:ca084fe9:6aa014aa #此设备(RAID)标识符
         Events : 18

    Number   Major   Minor   RaidDevice State   #最后4行就是这五个设备目前的情况,包括四个active sync一个spare,RaidDevice指的是此RAID内的磁盘顺序
       0       8       32        0      active sync   /dev/sdc
       1       8       48        1      active sync   /dev/sdd
       4       8       64        2      active sync   /dev/sde

       3       8       80        -      spare   /dev/sdf
[root@RHEL6 /]#
[root@RHEL6 /]# cat /proc/mdstat   #除了mdadm --detail命令之外,也可以查阅如下文件看系统软件磁盘阵列的情况;
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sde[4] sdf[3](S) sdd[1] sdc[0] #md0为raid5,且使用了sdc、sdd、sde、sdf四块磁盘设备,每个设备后面的[]内的数字为此磁盘在RAID中的number,(S)表 示sdf[3]为spare之意。
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU] #每个block单位为1KB,所以容量约为2GB,使用RAID5等级,写入磁盘的小区块(chunk)大小为512KB,使用aigorithm2磁 盘阵列算法。[m/n]也就是[3/3],代表此数组需要m个设备,且n个设备正常运行。[UUU]代表3个所需的启动设备正常运行,若为_则代表不正 常。
      
unused devices: <none>
[root@RHEL6 /]#

格式化与挂载使用RAID
[root@RHEL6 /]# mkfs -t ext4 /dev/md0  #格式化md0设备
[root@RHEL6 /]# mkdir /media/raid
[root@RHEL6 /]# mount /dev/md0 /media/raid/  #挂载
[root@RHEL6 /]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              16G  1.7G   14G  11% /
tmpfs                 937M     0  937M   0% /dev/shm
/dev/sda1             194M   26M  159M  14% /boot
/dev/sdb5             2.3G  362M  1.8G  17% /home
/dev/sr0              3.5G  3.5G     0 100% /mnt
/dev/md0              2.0G   35M  1.9G   2% /media/raid
[root@RHEL6 /]#

15.2.4仿真RAID错误的救援模式
仿真RAID错误命令语法
mdadm --manage /dev/md[0-9] [--add 设备] [--remove 设备] [--fail 设备]
参数
--add:会将后面的设备加入到这个md中;
--remove:会将后面的设备从这个md中删除。
--fail:会将后面的设备设置成为出错的状态。

设置磁盘为错误(fault)
让一个磁盘变成错误,然后让spare disk自动开始重建系统
[root@RHEL6 /]# cp -a /etc /var/log/ /media/raid/   #复制一点东西给RAID,假设RAID已经使用
[root@RHEL6 /]# df /media/raid/; du -sm /media/raid/*
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/md0               2062160     70212   1887196   4% /media/raid
25      /media/raid/etc   #确实有数据在里面
5       /media/raid/log
1       /media/raid/lost+found
[root@RHEL6 /]#


[root@RHEL6 /]# mdadm --manage /dev/md0 --fail /dev/sde #假设/dev/sde这个设备出错
mdadm: set /dev/sde faulty in /dev/md0
[root@RHEL6 /]# mdadm --detail /dev/md0 #查看RAID情况
/dev/md0:
        Version : 1.2
  Creation Time : Mon Jul  6 15:07:37 2015
     Raid Level : raid5
     Array Size : 2095104 (2046.34 MiB 2145.39 MB)
  Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
   Raid Devices : 3
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Mon Jul  6 17:01:45 2015
          State : clean
 Active Devices : 3
Working Devices : 3
 Failed Devices : 1     #有一个磁盘错误
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : RHEL6.4x64:0  (local to host RHEL6.4x64)
           UUID : 04fb4194:c2f800ce:ca084fe9:6aa014aa
         Events : 37

    Number   Major   Minor   RaidDevice State
       0       8       32        0      active sync   /dev/sdc
       1       8       48        1      active sync   /dev/sdd
       3       8       80        2      active sync   /dev/sdf   #原有的spare磁盘,现在进入工作状态

       4       8       64        -      faulty spare   /dev/sde  #出错的磁盘,进入错误spare状态
[root@RHEL6 /]#

[root@RHEL6 /]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sde[4](F)(这个磁盘错误了) sdf[3] sdd[1] sdc[0]
      2095104 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
      
unused devices: <none>
[root@RHEL6 /]#

将出错的磁盘删除并加入新磁盘


[root@RHEL6 raid]# mdadm --detail /dev/md127  #系统重启后(我要新加硬盘)md0变为md127了,而且原fail的磁盘没有了
/dev/md127:
        Version : 1.2
  Creation Time : Mon Jul  6 15:07:37 2015
     Raid Level : raid5
     Array Size : 2095104 (2046.34 MiB 2145.39 MB)
  Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Mon Jul  6 17:19:31 2015
          State : clean
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : RHEL6.4x64:0  (local to host RHEL6.4x64)
           UUID : 04fb4194:c2f800ce:ca084fe9:6aa014aa
         Events : 37

    Number   Major   Minor   RaidDevice State
       0       8       32        0      active sync   /dev/sdc
       1       8       48        1      active sync   /dev/sdd
       3       8       80        2      active sync   /dev/sdf
[root@RHEL6 raid]#
[root@RHEL6 raid]# mdadm --manage /dev/md127 --remove /dev/sdf   #不能直接remove,也就是一个在用的磁盘,是不能直接remove的,必须有一个踢出的动作
mdadm: hot remove failed for /dev/sdf: Device or resource busy

系统只剩3块盘的情况下我,想在仿真RAID的一块磁盘问题
[root@RHEL6 raid]# mdadm --manage /dev/md127 --fail /dev/sdf
mdadm: set /dev/sdf faulty in /dev/md127
[root@RHEL6 raid]#
[root@RHEL6 raid]# mdadm --detail /dev/md127
/dev/md127:
        Version : 1.2
  Creation Time : Mon Jul  6 15:07:37 2015
     Raid Level : raid5
     Array Size : 2095104 (2046.34 MiB 2145.39 MB)
  Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
   Raid Devices : 3
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Mon Jul  6 17:25:31 2015
          State : clean, degraded (这里多了一个degraded降级,还要看一下man mdadm关于state的部分)
 Active Devices : 2
Working Devices : 2
 Failed Devices : 1
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : RHEL6.4x64:0  (local to host RHEL6.4x64)
           UUID : 04fb4194:c2f800ce:ca084fe9:6aa014aa
         Events : 38

    Number   Major   Minor   RaidDevice State
       0       8       32        0      active sync   /dev/sdc
       1       8       48        1      active sync   /dev/sdd
       2       0        0        2      removed                #状态为removed

       3       8       80        -      faulty spare   /dev/sdf #出错的硬盘状态改为faulty spare
[root@RHEL6 raid]#

[root@RHEL6 raid]# ll -d /media/raid/*    #这个磁盘还是能够使用的,,RAID 5两块磁盘也能正常工作吗?
drwxr-xr-x. 76 root root  4096 Jul  6 16:42 /media/raid/etc
drwxr-xr-x.  6 root root  4096 Jul  6 14:43 /media/raid/log
drwx------.  2 root root 16384 Jul  6 16:41 /media/raid/lost+found
[root@RHEL6 raid]#

[root@RHEL6 ~]# cp -a /home /media/raid/
[root@RHEL6 ~]# ll -d /media/raid/*
drwxr-xr-x. 76 root root  4096 Jul  6 16:42 /media/raid/etc
drwxr-xr-x. 25 root root  4096 Jul  5 21:28 /media/raid/home
drwxr-xr-x.  6 root root  4096 Jul  6 14:43 /media/raid/log
drwx------.  2 root root 16384 Jul  6 16:41 /media/raid/lost+found
[root@RHEL6 ~]#

[root@RHEL6 ~]# mdadm --manage /dev/md127 --add /dev/sdg  #添加一块好盘
mdadm: added /dev/sdg
[root@RHEL6 ~]# mdadm --manage /dev/md127 --remove /dev/sdf  #移除一个坏盘
mdadm: hot removed /dev/sdf from /dev/md127

[root@RHEL6 ~]# mdadm --manage /dev/md127 --remove /dev/sdf  #在添加一块好盘
mdadm: hot removed /dev/sdf from /dev/md127
[root@RHEL6 ~]# mdadm --manage /dev/md127 --add /dev/sdh   #提示都正常了
mdadm: added /dev/sdh
[root@RHEL6 ~]# mdadm --detail /dev/md127                  
/dev/md127:
        Version : 1.2
  Creation Time : Mon Jul  6 15:07:37 2015
     Raid Level : raid5
     Array Size : 2095104 (2046.34 MiB 2145.39 MB)
  Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB)
   Raid Devices : 3
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Mon Jul  6 17:32:21 2015
          State : clean
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 512K

           Name : RHEL6.4x64:0  (local to host RHEL6.4x64)
           UUID : 04fb4194:c2f800ce:ca084fe9:6aa014aa
         Events : 83

    Number   Major   Minor   RaidDevice State
       0       8       32        0      active sync   /dev/sdc
       1       8       48        1      active sync   /dev/sdd
       4       8       96        2      active sync   /dev/sdg

       3       8      112        -      spare   /dev/sdh
[root@RHEL6 ~]#

15.2.5开机自动启动RAID并自动挂载
mdadm --detail /dev/md0 | group -i uuid
列出的UUID : XXXXX,是这个设备箱系统注册的UUID表示符
开始设置mdadm.conf
vi /etc/mdadm.conf
ARRAY /dev/md0 UUID=XXXX

设置开机自动挂载并测试
vi /etc/fstab
/dev/md0        /media/raid     ext4    defaults 0 0

umount /dev/md0; mount -a  #需要确定可以顺利挂载,并且没有发生任何错误!
df /media/raid


15.2.6关闭RAID
umount /dev/md0
删除/etc/fstab中关于md0的那一行
mdadm --stop /dev/md0  #关闭md0
cat /proc/mdstat  #可以使用cat mdstat检查
删除/etc/mdadm.conf中关于ARRAY的配置


Softraid命令汇总
mdadm  --create --auto=yes /dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/sd{c,d,e,f}
mdadm -C /dev/md0 -l 5 -n 3 /dev/sda{6,7,8} -x 1  /dev/sda9  #-l 5 做raid5,-n 3 需要3块磁盘, -x 1 需要一块热备
mdadm参数
--create:新建RAID的参数
--auto=yes:决定新建后面接的软件磁盘阵列设备,即/dev/md0,dev/md1等。
--raid-devices=N:使用几个磁盘作为磁盘阵列的设备
--spare-devices=N:使用几个磁盘作为备用spare设备
--level=[015]:设置这组磁盘阵列的等级。
--detail:后面接的那个磁盘阵列设备的详细信息。

mdadm --manage /dev/md127 --add /dev/sdg          #添加一块好盘
mdadm --manage /dev/md0 --fail /dev/sde             #仿真/dev/sde这个设备出错
mdadm --manage /dev/md127 --remove /dev/sdf      #移除一个坏盘
mdadm --manage /dev/md127 --add /dev/sdh           #提示都正常了  
mdadm --detail /dev/md0                                             #查看RAID情况
cat /proc/mdstat
mdadm --stop /dev/md127                                                #关闭md127



阅读(4956) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~