何だか怪しいディスクをMegacliを使って予備のディスクに置き換えてリビルドを実行する

# 概要

RAID1 を構成する構成する2つのストレージの内、1つをarrayから外して
代わりに正常なディスクを組み入れてリビルドを実行する。  

## 全体の流れ

1. エンクロージャのIDやarrayのID、物理ディスクのIDなどを確認する
2. RAID1を構成する物理ディスクの内1つをofflineにする
3. offlineにした物理ディスクにMissingをマークする
4. offlineにした物理ディスクと正常な予備のディスクを入れ替える
5. 予備のディスクに対してリビルドをする

# 前提

- Megacliはインストール済
- storcliの事は気にしない

# エンクロージャのIDやarrayのID、物理ディスクのIDなどを確認する

アダプターの数を確認する。

```plain
[root@localhost ~]# MegaCli -adpCount 
                                     

Controller Count: 1.

Exit Code: 0x01
[root@localhost ~]#
```

どうも1つついているみたい。

次に、アダプターの番号を確認する。

```plain
[root@localhost ~]# MegaCli -AdpAllInfo -aALL
                                     
Adapter #0

==============================================================================
                    Versions
                ================
Product Name    : LSI MegaRAID SAS 9267-8i
Serial No       : SV35110738
(後略)
---
```

#0 みたい。

次に、エンクロージャのデバイスIDを確認する

```plain
# MegaCli -EncInfo -aアダプタの番号かALL
[root@localhost ~]# MegaCli -EncInfo -a0
                                     
    Number of enclosures on adapter 0 -- 1

    Enclosure 0:
    Device ID                     : 252
    (後略)

Exit Code: 0x00
```

252 みたい。

次にアレイの情報を確認する。
```plain
[root@localhost ~]# MegaCli -LDInfo -LALL -a0
                                     

Adapter 0 -- Virtual Drive Information:
Virtual Drive: 0 (Target Id: 0)
Name                :
RAID Level          : Primary-1, Secondary-0, RAID Level Qualifier-0
(中略)
Number Of Drives    : 2
Span Depth          : 1
(中略)



Exit Code: 0x00
[root@localhost ~]#
```

arrayのIDは0番でRAIDはLv1で2つのディスクで構成されているみたい。
RAIDレベルはPrimaryが1でSpanDepthが1ということから判断できる。

論理ディスクを構成する物理ディスクを確認する
```plain
[root@localhost ~]# MegaCli -LdPdInfo -a0
                                     
Adapter #0

Number of Virtual Disks: 1
Virtual Drive: 0 (Target Id: 0)
(中略)

PD: 0 Information
Enclosure Device ID: 252
Slot Number: 0
(中略)
Firmware state: Online, Spun Up
(中略)

PD: 1 Information
Enclosure Device ID: 252
Slot Number: 2
(中略)
Firmware state: Online, Spun Up
(中略)

Exit Code: 0x00
[root@localhost ~]#
```
論理ディスクの0を構成する物理ディスク2の内、
PD: 0 はSlotNumber0 で、
PD: 1 はSlotNumber2 みたい。

次はサーバに搭載されている物理ディスクの情報を確認する。
```plain
[root@localhost ~]# MegaCli -PDList -a0
                                     
Adapter #0

Enclosure Device ID: 252
Slot Number: 0
(中略)
Firmware state: Online, Spun Up
(中略)

Enclosure Device ID: 252
Slot Number: 1
(中略)
Firmware state: Unconfigured(good), Spun Up
(中略)

Enclosure Device ID: 252
Slot Number: 2
(中略)
Firmware state: Online, Spun Up
(中略)

Exit Code: 0x00
[root@localhost ~]# 
```

全部で3つディスクがついていて、
SlotNumber 0と2はRAID1を構成しているやつで、
`Firmware state: Online, Spun Up` の表記から正常みたい。
SlotNumber1 は `Firmware state: Unconfigured(good), Spun Up` から
RAIDを構成しているとかhotspareとかではないけど、正常なディスクであることが分かる。

では、今回はSlotNumber2のディスクをSlotNumber1に入れ替えることを進めていきます。

# RAID1を構成する物理ディスクの内SlotNumber2のディスクをofflineにする

```plain
# MegaCli -PDOffline -physDrv [エンクロージャID:スロット番号] -a0
[root@localhost ~]# MegaCli -PDOffline -physDrv [252:2] -a0
                                     
Adapter: 0: EnclId-252 SlotId-2 state changed to OffLine.

Exit Code: 0x00
[root@localhost ~]#
```

offlineに変わっているかを確認する。
```plain
[root@localhost ~]# MegaCli -pdInfo -PhysDrv [252:2] -a0
                                     
Enclosure Device ID: 252
Slot Number: 2
(中略)
Firmware state: Offline
(中略)

Exit Code: 0x00
[root@localhost ~]# 
```

offlineに変わっている！

# offlineにした物理ディスクにMissingをマークする

```plain
[root@localhost ~]# MegaCli -PdMarkMissing -physdrv [252:2] -a0
                                     
EnclId-252 SlotId-2 is marked Missing.

Exit Code: 0x00
[root@localhost ~]#
```

この時点で、`MegaCli -LdPdInfo -a0` を実行するとPD: 1 が表示されなくなっている。

# offlineにした物理ディスクの代わりに正常な予備のディスクをRAIDに組み入れる

```plain
# MegaCli -PdReplaceMissing -PhysDrv [予備のディスクのエンクロージャID:予備のディスクのスロット番号] -Array対象の論理ディスクのID -row交換したい論理ディスクを構成する物理ディスクの番号 -a0
[root@localhost ~]# MegaCli -PdReplaceMissing -PhysDrv [252:1] -Array0 -row1 -a0
                                     
Adapter: 0: Missing PD at Array 0, Row 1 is replaced.

Exit Code: 0x00
[root@localhost ~]#
```

# 予備のディスクに対してリビルドを実行する

```plain
[root@localhost ~]# MegaCli -PDRbld -Start -PhysDrv [252:1] -a0
                                     
Started rebuild progress on device(Encl-252 Slot-1)

Exit Code: 0x00
[root@localhost ~]#
```

以下の感じのコマンドでリビルドの進捗も確認できる。

```plain
[root@localhost ~]# MegaCli -PDRbld -ShowProg -PhysDrv [252:1] -a0
                                     
Rebuild Progress on Device at Enclosure 252, Slot 1 Completed 6% in 3 Minutes.

Exit Code: 0x00
[root@localhost ~]#
```

# おまけ

SlotNumber2のデータを削除する

```plain
[root@localhost ~]# MegaCli -SecureErase Start Simple  -PhysDrv [252:2] -a0
                                     
Adapter 0: Secure Erase is started on Physical Device at EnclId-252 SlotId-2.

Exit Code: 0x00
[root@localhost ~]#
```

以下のコマンドで進捗を確認することが出来る。
`MegaCli -SecureErase ShowProg  -PhysDrv [252:2] -a0`