ソフトウェアRAIDのディクスが1本壊れたので交換してみる。

# 作業メモ
久しぶりのDISK交換なので、作業メモを残しておきます。
自宅鯖で、一部RAID1構成を使ってる環境です。
今回はデータ用に使ってるDISKの内１本が逝きました。

## 構成
- CentOS6
- パーティションでRAID1

## １.RAID状態の確認
```
# cat /proc/mdstat
Personalities : [raid1] 
md1 : active raid1 sdc1[1] sdd1[2](F)
      1073610560 blocks super 1.2 [2/1] [_U]
      
unused devices: <none>
```
一本落ちてる。orz

### 落ちた日時の確認
```
# grep 'md/raid1' /var/log/messages*
/var/log/messages:Jan 19 22:38:27 HostName kernel: md/raid1:md1: Disk failure on sdd1, disabling device.
/var/log/messages:Jan 19 22:38:27 HostName kernel: md/raid1:md1: Operation continuing on 1 devices.
```
### 詳細の確認

```
# mdadm --detail /dev/md1
/dev/md1:
        Version : 1.2
  Creation Time : Mon Dec  2 13:54:11 2013
     Raid Level : raid1
     Array Size : 1073610560 (1023.87 GiB 1099.38 GB)
  Used Dev Size : 1073610560 (1023.87 GiB 1099.38 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Fri Jan 20 06:32:15 2017
          State : clean, degraded 
 Active Devices : 1
Working Devices : 1
 Failed Devices : 1
  Spare Devices : 0

           Name : HostName:1  (local to host HostName)
           UUID : cdb47a47:66aec9bd:c1ca2b5b:14d1aa95
         Events : 547

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       33        1      active sync   /dev/sdc1

       2       8       49        -      faulty   /dev/sdd1
```

## ２．RAIDからDISKを切り離す
```
# mdadm /dev/md1 --remove /dev/sdd1
mdadm: hot removed /dev/sdd1 from /dev/md1
```
### DISKの切り離した後の確認
```
# mdadm --detail /dev/md1
/dev/md1:
        Version : 1.2
  Creation Time : Mon Dec  2 13:54:11 2013
     Raid Level : raid1
     Array Size : 1073610560 (1023.87 GiB 1099.38 GB)
  Used Dev Size : 1073610560 (1023.87 GiB 1099.38 GB)
   Raid Devices : 2
  Total Devices : 1
    Persistence : Superblock is persistent

    Update Time : Fri Jan 20 14:34:47 2017
          State : clean, degraded 
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0

           Name : HostName:1  (local to host HostName)
           UUID : cdb47a47:66aec9bd:c1ca2b5b:14d1aa95
         Events : 548

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       33        1      active sync   /dev/sdc1
```

## ３．DISKを交換する
ちょうど、同じ型番のDISKが余ってたので、それと入れ替える。

_注意_
再起動時に、DISKチェックとか走る場合があるので、起動DISK以外を自動マウントしないように調整しておく。
```/etc/fstab を編集して該当のパーティションをコメントアウトしておく。```
　->Rootパスワードも忘れて、起動できなくてハマりましたｗ


## ４．交換したDISKにパーティションを作る

### 同じ構成になる元DISKの情報を確認
「/dev/sdc1」と「/dev/sdd1」でRAID構成

```
# parted /dev/sdc -s unit s -s p
モデル: ATA WDC WD20EFRX-68E (scsi)
ディスク /dev/sdc: 3907029168s
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: gpt

番号  開始         終了         サイズ       ファイルシステム  名前              フラグ
 1    2048s        2147485695s  2147483648s                    Linux RAID        raid
 2    2147485696s  3907029134s  1759543439s  ext4              Linux filesystem
```
### 交換したDISKにパーティションを作成
2GのDISKを半分RAID・半分そのままなので、合わせて作成する。

```
# parted /dev/sdd
(parted) p
モデル: ATA WDC WD20EFRX-68E (scsi)
ディスク /dev/sdd: 3907029168s
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: gpt

番号  開始  終了  サイズ  ファイルシステム  名前  フラグ

(parted) mkpart
パーティションの名前?  []? 'Linux RAID'                                   
ファイルシステムの種類?  [ext2]?                                          
開始? 2048s
終了? 2147485695s
(parted) set 1 raid on
(parted) mkpart
パーティションの名前?  []? 'Linux filesystem'                             
ファイルシステムの種類?  [ext2]? ext4                                     
開始? 2147485696s                                                         
終了? 3907029134s                                                         
(parted) p                                                            
モデル: ATA WDC WD20EFRX-68E (scsi)
ディスク /dev/sdd: 3907029168s
セクタサイズ (論理/物理): 512B/4096B
パーティションテーブル: gpt

番号  開始         終了         サイズ       ファイルシステム  名前              フラグ
 1    2048s        2147485695s  2147483648s                    Linux RAID        raid
 2    2147485696s  3907029134s  1759543439s                    Linux filesystem

(parted) q                                                                
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。 
```

## ５．RAIDにDISKを追加する

### 「/dev/md1」に「/dev/sd/sdd1」を追加
```
# mdadm --manage  /dev/md1 --add /dev/sdd1
mdadm: added /dev/sdd1
```
### DISKを追加後の確認
```
# mdadm --detail /dev/md1
/dev/md1:
        Version : 1.2
  Creation Time : Mon Dec  2 13:54:11 2013
     Raid Level : raid1
     Array Size : 1073610560 (1023.87 GiB 1099.38 GB)
  Used Dev Size : 1073610560 (1023.87 GiB 1099.38 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Mon Jan 22 21:38:15 2017
          State : clean, degraded, recovering 
 Active Devices : 1
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 1

 Rebuild Status : 0% complete

           Name : HostName:1  (local to host HostName)
           UUID : cdb47a47:66aec9bd:c1ca2b5b:14d1aa95
         Events : 588

    Number   Major   Minor   RaidDevice State
       2       8       49        0      spare rebuilding   /dev/sdd1
       1       8       33        1      active sync   /dev/sdc1
```

後はリビルドが終わるのを待つ

```
# cat /proc/mdstat 
Personalities : [raid1] 
md1 : active raid1 sdd1[2] sdc1[1]
      1073610560 blocks super 1.2 [2/1] [_U]
      [=>...................]  recovery =  6.9% (74689024/1073610560) finish=110.7min speed=150265K/sec
      
unused devices: <none>
```

後ちょっと。

```
# cat /proc/mdstat 
Personalities : [raid1] 
md1 : active raid1 sdd1[2] sdc1[1]
      1073610560 blocks super 1.2 [2/1] [_U]
      [===================>.]  recovery = 99.9% (1073386176/1073610560) finish=0.0min speed=119800K/sec
```

終わった。

```
# cat /proc/mdstat 
Personalities : [raid1] 
md1 : active raid1 sdd1[2] sdc1[1]
      1073610560 blocks super 1.2 [2/2] [UU]
      
unused devices: <none>
```

ここでも確認

```
# mdadm --detail /dev/md1
/dev/md1:
        Version : 1.2
  Creation Time : Mon Dec  2 13:54:11 2013
     Raid Level : raid1
     Array Size : 1073610560 (1023.87 GiB 1099.38 GB)
  Used Dev Size : 1073610560 (1023.87 GiB 1099.38 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Mon Jan 22 22:52:32 2017
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : HostName:1  (local to host HostName)
           UUID : cdb47a47:66aec9bd:c1ca2b5b:14d1aa95
         Events : 620

    Number   Major   Minor   RaidDevice State
       2       8       49        0      active sync   /dev/sdd1
       1       8       33        1      active sync   /dev/sdc1
```

## ６．いろいろ設定を元に戻す
### 変更したfstabとかを確認して元に戻す。
_実際は、物理的に交換が終わったら１本状態で稼働させてました。_

# まとめ
- DISK交換めんどくさい。
- rootパスワード忘れてたｗ（USBから別OSで起動してごにょっとしました。orz）
- ディスプレイレスの運用なので、ディスプレイ・キーボード・マウスまで用意した。
- fstabの編集忘れて色々大変だった。
- 今回のDISKは、「WD RED」だけどRMAでの保証期間も過ぎてたｗ
- これから壊れたDISKのサルベージ大会。

# おまけ
## 「/dev/sdd2」の方も使えるようにしておく
### フォーマット
```
# mkfs.ext4 -m 0 /dev/sdd2 
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=1 blocks, Stripe width=0 blocks
54992896 inodes, 219942929 blocks
0 blocks (0.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
6713 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 
        102400000, 214990848

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
```
### 調整
```
#  tune2fs -c -1  -i 0 /dev/sdd2
tune2fs 1.41.12 (17-May-2010)
Setting maximal mount count to -1
Setting interval between checks to 0 seconds
```