use raid

Linux下建立raid1

1、先用fdisk在硬盘上划分出空间。
    fdisk /dev/sdc  (后面的根据自己实际情况修改,因为我这里是虚拟机,
    所以就用2个500M的来做成一个raid)
    然后将其的功能改为 Linux raid autodetect 
    (也就是在fdisk下面 用t选择功能然后输入 -->fd)

2、建立raid
    mdadm -C /dev/md1 -l 1 -n 2 /dev/sda /dev/sdb
    下面是在分区上建raid
    mdadm -C /dev/md1 -l 1 -n 2 /dev/sda -n 2 /dev/sda1 /dev/sda2
    mdadm -C raid阵列所在 -l raid等级 -n 设备数 设备分别是什么
    建立完毕之后,可以通过cat /proc/mdstat 查看是否成功

3、格式化
    mkfs.ext3 /dev/md1

4、挂载
    mount /dev/md1 /raid1

5、建立mdadm.conf文件
    echo 'DEVICE /dev/sd[ab]' > /etc/mdadm.conf
    mdadm -Ds >> /etc/mdadm.conf

6. view raid
    mdadm -D /dev/md1
    cat /proc/mdstat
    mdadm -E /dev/sda
    mdadm -E /dev/sdb

7. 配置mdadm开机自启动 
    设备配置文件只能使系统在开机时正常启用RAID设备,但自动挂载RAID设备还是要再修改/etc/fstab
    #vi /etc/fstab
    ===============================================
    /dev/md0 /mnt/raid ext3 defaults 0 0
    ===============================================

8. 停止与开启RAID设备:
    停止:
    #umount /mnt/raid
    #mdadm -S /dev/md0
    mdadm: stopped /dev/md0
    开启:
    使用配置文件时:
    #mdadm -As /dev/md0
    mdadm: /dev/md0 has been started with 3 drives and 1 spare.
    没有使用配置文件时:
    #mdadm -A /dev/md0 /dev/sd[bcde]
    mdadm: /dev/md0 has been started with 3 drives and 1 spare.

9. 故障演示
    1).将一个磁盘标记为faulty,模拟硬盘坏损
    #mdadm /dev/md0 -f /dev/sdb
    2).查看RAID5重建过程
    #mdadm -D /dev/md0    
    #cat /proc/mdstat 
    3).查看完成坏损设备后的RAID状态
    #mdadm -D /dev/md0
    #cat /proc/mdstat 
    4).移除坏损设备
    #mdadm /dev/md0 -r /dev/sdb
    mdadm: hot removed /dev/sdb
    5).添加新的设备
    #mdadm /dev/md0 -a /dev/sdb
    mdadm: added /dev/sdb
    6).查看最终状态
    #mdadm -D /dev/md0
    #cat /proc/mdstat 

10. 删除整个RAID:
    mdadm /dev/md0 --fail /dev/sda --remove /dev/sda
    mdadm /dev/md0 --fail /dev/sdb --remove /dev/sdb
    mdadm --stop /dev/md0
    mdadm --misc --zero-superblock /dev/sda
    mdadm --misc --zero-superblock /dev/sdb
    即: 先删除RAID中的所有设备,然后停止该RAID即可

mdadm语法

基本语法 : mdadm [mode] [options]
[mode] 有7种:
    Assemble:将以前定义的某个阵列加入当前在用阵列。
    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/mdadm.conf
-s, --scan:扫描配置文件或 /proc/mdstat以搜寻丢失的信息。配置文件/etc/mdadm/mdadm.conf
create 或 build 使用的选项:
-c, --chunk=:Specify chunk size of kibibytes. 缺省为 64.
--rounding=: Specify rounding factor for linear array (==chunk size)
-l, --level=:设定 raid level.
--create可用:linear, raid0, 0, stripe, raid1,1, mirror, raid4, 4, raid5, 5, raid6, 6, multipath, mp.
--build可用:linear, raid0, 0, stripe.
-p, --parity=:设定 raid5 的奇偶校验规则:eft-asymmetric, left-symmetric, right-asymmetric, right-symmetric, la, ra, ls, rs.缺省为left-symmetric
--layout=:类似于--parity
-n, --raid-devices=:指定阵列中可用 device 数目,这个数目只能由 --grow 修改
-x, --spare-devices=:指定初始阵列的富余device 数目
-z, --size=:组建RAID1/4/5/6后从每个device获取的空间总数
--assume-clean:目前仅用于 --build 选项
-R, --run:阵列中的某一部分出现在其他阵列或文件系统中时,mdadm会确认该阵列。此选项将不作确认。
-f, --force:通常mdadm不允许只用一个device 创建阵列,而且创建raid5时会使用一个device作为missing drive。此选项正相反。
-a, --auto{=no,yes,md,mdp,part,p}{NN}:

other:

1). check file system type
    before check, should mount the device first
    [root@localhost ]# df -T /mnt/raid1/
    Filesystem    Type   1K-blocks      Used Available Use% Mounted on
    /dev/md0      ext3   961433496    204572 912390856   1% /mnt/raid1
    [root@localhost ]# mount
    ubi0 on / type ubifs (rw)
    proc on /proc type proc (rw)
    sysfs on /sys type sysfs (rw)
    devpts on /dev/pts type devpts (rw,gid=5,mode=620)
    none on /var/tmp type tmpfs (rw)
    /dev/md0 on /mnt/raid1 type ext3 (rw)
    [root@localhost ]# df -T
    Filesystem    Type   1K-blocks      Used Available Use% Mounted on
    ubi0         ubifs      201464    191516      9948  96% /
    none         tmpfs       62136         0     62136   0% /var/tmp
    /dev/md0      ext3   961433496    204572 912390856   1% /mnt/raid1

    reference:
    (1). Linux how to determine the file system type
        www.cyberciti.biz/faq/linux-how-to-determine-find-out-file-system-type/ 
2).如果想了解你的kernel目前支持哪些文件系统,可以查看/proc/filesystems的内容 
    reference:
    (1).linux /etc/fstab 文件说明 www.wokeke.com/?p=350 

Reference:

我的一些raid操作:

1. stop raid
    mdadm -S /dev/md0
    mdadm -S /dev/md1
    mdadm -S /dev/md126
    mdadm -S /dev/md127
2. create raid 1
    mdadm -Cv -l1 -n2 /dev/sda /dev/sdb --assume-clean --home-host=raidtest
3. check states
    cat /proc/mdstat

系统中原来插有两块盘,分别显示为/dev/sda /dev/sdb
如果把第一块盘/dev/sda拔掉,重启后,第二块盘自动识别为/dev/sda
如果原来/dev/sda和/dev/sdb建了raid1,拔掉/dev/sda并重启系统后,做如下操作:
[root@localhost ]# cat /proc/mdstat 
Personalities : [linear] [raid0] [raid1] 
md0 : active raid1 sda[1]
      976761424 blocks super 1.2 [2/1] [_U]  # 正常应该是[UU]

unused devices: <none>
[root@localhost ]# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Fri Mar 29 06:48:49 2013
     Raid Level : raid1
     Array Size : 976761424 (931.51 GiB 1000.20 GB)
  Used Dev Size : 976761424 (931.51 GiB 1000.20 GB)
   Raid Devices : 2
  Total Devices : 1
    Persistence : Superblock is persistent

    Update Time : Fri Mar 29 07:17:39 2013
          State : clean, degraded
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0

           Name : mytestraid:0
           UUID : c76eab52:2e80d8e1:67772808:024ea0b6
         Events : 6

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed     # 这里看到有一块盘被移除了
       1       8        0        1      active sync   /dev/sda
[root@localhost ]# 


正常情况
[root@localhost ]# cat /proc/mdstat 
Personalities : [linear] [raid0] [raid1] 
md0 : active raid1 sdb[1] sda[0]
      976761424 blocks super 1.2 [2/2] [UU]

unused devices: <none>

拔掉一块raid盘,删掉剩下的raid盘数据,重启后插入有raid数据的盘
[root@localhost ]# cat /proc/mdstat 
Personalities : [linear] [raid0] [raid1] 
md127 : inactive sdb[0](S)
      976761560 blocks super 1.2