2013/11/14

Published 11月 14, 2013 by

Software RAID 建置-mdadm


Software RAID 建置-mdadm

什麼是mdadm?
mdadm multiple devices admin的簡稱,它是Linux下的一款標準的軟件 RAID 管理工具,作者是 Neil Brown

用途:多個Lun組成一個raid,使用不同的Storage
方法: Storage透過iscsi的方式,切割LunServer
主機:xenserver VM
StorageNetApp




建立RAID4大步驟
1.fdiskraid分割區,磁區代號為fd
fdisk /dev/sdb

2.使用mdadm建立/dev/md0裝置
#mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=3 --spare-devices=1 /dev/sd{b,d,f,h}1
3.使用mke2fs/dev/md0格式化
mkfs -t ext3 /dev/md0

4.使用mount/dev/md0,掛載至目錄
mount /dev/md0 /mnt/raid0

RAID狀態查詢
1.cat /proc/mdstat
2.mdadm --misc --detail /dev/md0

指定/dev/md0內某一裝置故障
mdadm --fail /dev/md0 /dev/sdb2

將故障/dev/sdb2/dev/md0內移除
mdadm --remove /dev/md0 /dev/sdb2

/dev/sdc2加入/dev/md0
mdadm --add /dev/md0 /dev/sdc2

/dev/md0停止
mdadm --stop /dev/md0

/dev/md0啟動
mdadm --auto-detect

------------------實際測試

#iscsi的設定方式,詳見:本文的" RedHat iscsi initiator Setting"

# fdisk -l | grep Disk,看一下現在的硬碟狀況,且可以看到是未formatDisk

PS.因我的Storage有兩個ip,所以他會看到重覆的disk,所以
sdb,sdc是一組,sdd,sde是一組,一此類推

分割完之後,會變成這樣(只列出最後兩個查看)
#fdisk -l


建立Raid 5 Disk
[root@C5TCLS1 ~]# mdadm --create --auto=yes /dev/md1 --level=5 --raid-devices=3 --spare-devices=1 /dev/sd{b,d,f,h}1
mdadm: array /dev/md1 started.

參數說明:
--create:建立
--level:raid5
--raid-device:有幾個raid device
--spare-devices:Spare Disk有幾個

Ps.建立Raid 5的這個部份,若資料縮小,和原來raid不一樣,裡面的資料可能會不見

增加spare disk
#mdadm --create --auto=yes /dev/md1 --level=5 --raid-devices=4 --spare-devices=1 /dev/sd{b,d,f,h,j }1

查看/dev/md1詳細狀態:
[root@C5TCLS1 ~]# mdadm --detail /dev/md1
/dev/md1:
        Version : 0.90
  Creation Time : Wed Nov 13 16:20:25 2013
     Raid Level : raid5
     Array Size : 2096512 (2047.72 MiB 2146.83 MB)
  Used Dev Size : 1048256 (1023.86 MiB 1073.41 MB)
   Raid Devices : 3
  Total Devices : 4
Preferred Minor : 1
    Persistence : Superblock is persistent

    Update Time : Wed Nov 13 16:20:25 2013
          State : clean, degraded, recovering
 Active Devices : 2
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 2

         Layout : left-symmetric
     Chunk Size : 64K

 Rebuild Status : 68% complete

           UUID : 86ef5f54:f124e083:8ea7ceab:18ff0cf8
         Events : 0.1

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       49        1      active sync   /dev/sdd1
       4       8       81        2      spare rebuilding   /dev/sdf1

       3       8      113        -      spare   /dev/sdh1


查看raid狀態:
[root@C5TCLS1 ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md1 : active raid5 sdf1[2] sdh1[3](S) sdd1[1] sdb1[0]
      2096512 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

md0 : inactive sda1[0]
      3143296 blocks super non-persistent

Format:
[root@C5TCLS1 ~]# mkfs -t ext3 /dev/md1

開機啟動自動掛載(這個部份我失敗,不知是否vm的關系還是有那個地方錯誤)
[root@C5TCLS1 ~]# mdadm -Ds > /etc/mdadm.conf
[root@C5TCLS1 ~]# cat /etc/mdadm.conf
ARRAY /dev/md1 level=raid5 num-devices=3 metadata=0.90 spares=2 UUID=1bbc7d14:285c4987:960348c2:3ff1f552

fstab上增加掛載的地方,使用mount –a來測試是否正常
[root@C5TCLS1 ~]# vi /etc/fstab
/dev/md0    /mnt/raid    ext3    defaults     0 0

模擬錯誤硬碟(/dev/sdd1硬碟壞掉)
[root@C5TCLS1 mnt]# mdadm --manage /dev/md1 --fail /dev/sdd1
mdadm: set /dev/sdd1 faulty in /dev/md1

rebuild硬碟狀態
[root@C5TCLS1 mnt]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md1 : active raid5 sdf1[2] sdh1[3] sdd1[4](F) sdb1[0]
      2096512 blocks level 5, 64k chunk, algorithm 2 [3/2] [U_U]
      [==>..................]  recovery = 10.6% (112284/1048256) finish=0.5min speed=28071K/sec

unused devices: <none>

沒有spare硬碟,sdd1壞掉異常
[root@C5TCLS1 mnt]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md1 : active raid5 sdf1[2] sdh1[1] sdd1[3](F) sdb1[0]
      2096512 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>

移除異常的硬碟:
[root@C5TCLS1 mnt]# mdadm --manage /dev/md1 --remove /dev/sdd1
mdadm: hot removed /dev/sdd1

增加正常的硬碟(NetApp新增一個Lunvm 認識)
Storage add new lun
#service iscsi restart
#reboot
這邊測試的結果,新增一個Lun要重啟iscsi,重啟之後,mount point點會失效,因為所有的/dev/sd{}會亂掉,必需要主機重新啟動,/dev/sd{}才復原正常,新增的disk才會出現在上面。(不知是否是因為vm的關系才發生這種狀況)

lun變更大小,也要重開機(透過netapp調整大小)


先透過fdisk -l | grep Disk來看一下狀況,可以看出有新增的/dev/sdi & /dev/sdj
[root@C5TCLS1 ~]# fdisk -l | grep Disk
Disk /dev/md1 doesn't contain a valid partition table
Disk /dev/sdi doesn't contain a valid partition table
Disk /dev/sdj doesn't contain a valid partition table
Disk /dev/xvda: 21.4 GB, 21474836480 bytes
Disk /dev/md1: 2146 MB, 2146828288 bytes
Disk /dev/sda: 1073 MB, 1073741824 bytes
Disk /dev/sdb: 1073 MB, 1073741824 bytes
Disk /dev/sdc: 1073 MB, 1073741824 bytes
Disk /dev/sdd: 1073 MB, 1073741824 bytes
Disk /dev/sde: 1073 MB, 1073741824 bytes
Disk /dev/sdf: 1073 MB, 1073741824 bytes
Disk /dev/sdg: 1073 MB, 1073741824 bytes
Disk /dev/sdh: 1073 MB, 1073741824 bytes
Disk /dev/sdi: 1073 MB, 1073741824 bytes
Disk /dev/sdj: 1073 MB, 1073741824 bytes

在來就是format這一顆disk
#fdisk /dev/sdj

新增這一顆硬碟
[root@C5TCLS1 ~]# mdadm --manage /dev/md1 --add /dev/sdj

它跑到spare Disk去了(因上面有重新restart iscsi,把剛剛測試fail的硬碟也加進來了)
[root@C5TCLS1 ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md1 : active raid5 sdj[4](S) sdf1[2] sdh1[3](S) sdd1[1] sdb1[0]
      2096512 blocks level 5, 64k chunk, algorithm 2 [3/3] [UUU]

unused devices: <none>
[root@C5TCLS1 ~]#

新增一顆硬碟,空間放大(spare disk搬移過來使用)
--raid-devices後面接可用硬碟
#mdadm --grow /dev/md1 --raid-devices=4

讓系統可以認得此大小:
[root@C5TCLS1 ~]# resize2fs /dev/md1
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/md1 is mounted on /mnt; on-line resizing required
Performing an on-line resize of /dev/md1 to 1048256 (4k) blocks.
The filesystem on /dev/md1 is now 1048256 blocks long.



相關資料
http://linux.vbird.org/linux_basic/0420quota.php#raid
指令說明:
http://blog.csdn.net/u012317833/article/details/14051147
http://tpkcpk.blogspot.tw/2009/09/mdadm-raid.html

開機啟動詳細說明:
http://justforyou046.blogspot.tw/2012/04/linux-mdadm_07.html