SoftLayer Bare Metal server: LSI Logic RAID Controller での CLI 操作

#0. はじめに

フランクフルト Data Center のベア・メタル・サーバーを RAID 付きでオーダーした際の、RAID 管理用コマンド・ライン・インターフェース(CLI)操作についての記録を残しておきます。RHEL6, 500GB RAID1 x1, 500GB スペア・ドライブ x1, 500GB JBOD x1 でオーダーしたつもりでしたが、１TB RAID x1 と 1TB JBOD x2（ /disk1, /disk2 に JBOD をマウント) の形でデプロイを完了しました。

覚書の為、だらだらと記載しています。ご容赦下さい。

#1. 構成ツールの準備、設定、基本的な概念
意図した構成へ RAID カード用のツールで変更すれば良いとは思いましたが、最初はどのツールを使うべきなのかさえ不明でした。しかし、 RHEL6 の lspci コマンドの出力に以下の行が含まれていた為、LSI Logic の StorCLI もしくは MegaRAID Storage Manager で構成できると推察できました。

```
# lspci
<中略>
03:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS-3 3108 [Invader] (rev 02)
<中略>
```

間違っても、カスタマー・ポータルの Software Library リンクから LSI Card Tools と表記のある  lsitools/  を選択し、Linux_MegaCli_1.01.39.zip を使うなどと考えてはいけません (私は間違えました :sweat_smile: )。

ネットで検索すれば StorCLI コマンドを LSI Logic が提供していることがわかります。
そこで、以下の yum コマンドを実行すると既にインストール済みでした。

```
# yum list StorCLI
Loaded plugins: rhnplugin, security
This system is receiving updates from RHN Classic or RHN Satellite.
Installed Packages
storcli.noarch                        1.07.07-1                        installed 
```

上記の情報から以下の rpm コマンドでインストールされているファイルを確認できます。

```
# rpm -ql storcli
/opt/MegaRAID/storcli/libstorelibir-2.so.14.07-0
/opt/MegaRAID/storcli/storcli
/opt/MegaRAID/storcli/storcli64
```

しかし、/opt/MegaRAID/storcli/storcli は存在せず、かつパスもとおっていないので、消去法的に /opt/MegaRAID/storcli/storcli64 が構成ツールと考えられます。
好みもありますが、全パスの都度指定を避ける為、 root ユーザーの bash 定義ファイル /root/.bashrc に以下の行を追加し、storcli として storcli64 を実行できるようにしました。

```
alias storcli='/opt/MegaRAID/storcli/storcli64'
```

StorCLI コマンドのお約束としてコマンドの対象をパラメーターに指定する際に必要な概念があります。面倒でもこの辺の概念を把握しておくと、この後の操作が格段に楽です。

コントローラー: /c
サーバー上に対応コントローラーがひとつしか存在しない場合は /c0 として指定します。複数存在する場合は /c1, /c2 のように指定します。

仮想ドライブ: /v
上記の /c と併せて /c0/v0 の様に指定します。複数存在する場合は、/c0/v0、/c0/v1、さらにコントローラーも複数の場合は、/c1/v0 の様に指定します。

ドライブ・グループ: /d
コマンド出力中では DG と記載されます。仮想ドライブを構成する物理ドライブのグループです。操作の対象範囲がどこまで及ぶかを確認する時に必要となります。

エンクロージャー: /e
単一筐体の場合には、理解し辛いですが、PCの本体以外に物理ドライブ拡張用の別筐体を接続している場合に意味を持ちます。
単一筐体の場合、省略できる様に読み取れる記載がマニュアルにありましたが、省略するとエラーになる場合があった為、以下の例では全て指定しています。

スロット:/s
筐体内で、物理ドライブが接続されているスロットを指定します。
特定の物理ドライブに対して、情報の取得や設定をおこなう場合に指定します。

上記の /c, /v, /d, /e, /s の何れに対しても、個別の番号ではなく、認識できる全てを表す all を指定可能です。

例：

```
# storcli /call show
# storcli /c0/vall show
```

StorCLI コマンドが実行できるようになったところで現在の状態を確認します。以下の記載は実際の出力を見やすく編集しています。また、色々試した後の状態なので、デプロイ直後の初期状態という訳でもありません。

#3. 全コントローラーの状態を取得
対象を指定せずに show を指定することで、全コントローラーを一覧できます。
次の 4. の結果とあわせ、コントローラー 0 が LSI MegaRAID SAS 9361-8i として認識されていることが判ります。

```
# storcli show
--------------------------------------------------------------------
Ctl Model   Ports PDs DGs DNOpt VDs VNOpt BBU sPR DS  EHS ASOs Hlth
--------------------------------------------------------------------
  0 9361-8i     8   4   3     0   3     0 Opt On  1&2 Y      2 Opt
--------------------------------------------------------------------
```

#4. コントローラー 0 の状態を取得
以下のコマンド出力から、物理ドライブ(PD) 4, ドライブ・グループ(DG) 3, 仮想ドライブ(VD) 3 の構成であることがわかります。

```
# storcli /c0 show
Generating detailed summary of the adapter, it may take a while to complete.
Controller = 0
Status = Success
Description = None
Product Name = LSI MegaRAID SAS 9361-8i
Serial Number = SV44356870
SAS Address =  500605b009b75690
PCI Address = 00:03:00:00
System Time = 01/30/2015 01:30:12
Mfg. Date = 10/25/14
Controller Time = 01/30/2015 01:30:12
FW Package Build = 24.2.1-0044
BIOS Version = 6.14.05.3_4.16.08.00_0x06030504
FW Version = 4.220.80-3557
Driver Name = megaraid_sas
Driver Version = 06.803.01.00-rh1
Vendor Id = 0x1000
Device Id = 0x5D
SubVendor Id = 0x1000
SubDevice Id = 0x936C
Host Interface = PCIE
Device Interface = SAS-12G
Bus Number = 3
Device Number = 0
Function Number = 0

Drive Groups = 3
TOPOLOGY :
------------------------------------------------------------------------
DG Arr Row EID:Slot DID Type  State BT     Size PDC  PI SED DS3  FSpace
------------------------------------------------------------------------
 0 -   -   -        -   RAID1 Optl  N  931.0 GB dflt N  N   none N
 0 0   -   -        -   RAID1 Optl  N  931.0 GB dflt N  N   none N
 0 0   0   252:0    9   DRIVE Onln  N  931.0 GB dflt N  N   none -
 0 0   1   252:1    11  DRIVE Onln  N  931.0 GB dflt N  N   none -
 1 -   -   -        -   RAID0 Optl  N  931.0 GB dflt N  N   none N
 1 0   -   -        -   RAID0 Optl  N  931.0 GB dflt N  N   none N
 1 0   0   252:3    8   DRIVE Onln  N  931.0 GB dflt N  N   none -
 2 -   -   -        -   RAID0 Optl  N  931.0 GB dflt N  N   none N
 2 0   -   -        -   RAID0 Optl  N  931.0 GB dflt N  N   none N
 2 0   0   252:2    10  DRIVE Onln  N  931.0 GB dflt N  N   none -
------------------------------------------------------------------------
Virtual Drives = 3
VD LIST :
=======
------------------------------------------------------------
DG/VD TYPE  State Access Consist Cache sCC     Size Name
------------------------------------------------------------
0/0   RAID1 Optl  RW     No      RWBD  -   931.0 GB RAID1-A
1/2   RAID0 Optl  RW     Yes     RWBD  -   931.0 GB JBOD-C
2/1   RAID0 Optl  RW     Yes     RWBD  -   931.0 GB
------------------------------------------------------------
Physical Drives = 4
PD LIST :
=======
--------------------------------------------------------------------------
EID:Slt DID State DG     Size Intf Med SED PI SeSz Model               Sp
--------------------------------------------------------------------------
252:0     9 Onln   0 931.0 GB SATA HDD N   N  512B ST1000NM0033-9ZM173 U
252:1    11 Onln   0 931.0 GB SATA HDD N   N  512B ST1000NM0033-9ZM173 U
252:2    10 Onln   2 931.0 GB SATA HDD N   N  512B ST1000NM0033-9ZM173 U
252:3     8 Onln   1 931.0 GB SATA HDD N   N  512B ST1000NM0033-9ZM173 U
--------------------------------------------------------------------------
```

#5. ルートファイルシステムで使用している RAID 1 ボリュームの確認

```
# storcli /c0/v0 show
------------------------------------------------------------
DG/VD TYPE  State Access Consist Cache sCC     Size Name
------------------------------------------------------------
0/0   RAID1 Optl  RW     No      RWBD  -   931.0 GB RAID1-A
------------------------------------------------------------
```

#6. スペア・ドライブに変更する予定の RAID 0 ボリュームの確認

```
# storcli /c0/v1 show
```

#7. RAID 0 ボリュームの削除

```
# storcli /c0/v1 del force
```

#8. 削除したボリュームをスペア・ドライブとして指定

```
# storcli /c0/e252/s2 add hotsparedrive
```

以下の 9.～10. はスペア・ドライブを RAID 0 ボリュームにすることで、当初の構成に戻すテスト (VDの番号は変化します)

#9. 指定したスペア・ドライブを削除

```
# storcli /c0/e252/s2 delete hotsparedrive
```

#10. スペア・ドライブだったボリュームを、再度、仮想ドライブとして定義

```
# storcli /c0 add VD r0  name=foo drives=252:2
```

#11. 仮想ドライブを構成する物理ドライブの確認方法
仮想ドライブがどの物理ドライブから作成されているかは、storcli /c0 show の出力から読み取れます。
しかし、特定の仮想ドライブが所属する DG を指定すると表示範囲を限定して表示可能です。

```
# storcli /c0/d0 show
------------------------------------------------------------------------
DG Arr Row EID:Slot DID Type  State BT     Size PDC  PI SED DS3  FSpace
------------------------------------------------------------------------
 0 -   -   -        -   RAID1 Optl  N  931.0 GB dflt N  N   none N
 0 0   -   -        -   RAID1 Optl  N  931.0 GB dflt N  N   none N
 0 0   0   252:0    9   DRIVE Onln  N  931.0 GB dflt N  N   none -
 0 0   1   252:1    11  DRIVE Onln  N  931.0 GB dflt N  N   none -
------------------------------------------------------------------------
```

252:0, 252:1 で構成されていることが判ります。

#12. ホット・スペア機能のテスト
ホット・スペア機能をテストしたいので、擬似的に故障を起こして、スペア・ドライブを使わせるには？
また、ホット・スペアでの再構築の完了後に元のスロットのドライブを使用するには？
まず、現状を確認します。

```
# storcli /c0/v0 show
------------------------------------------------------------
DG/VD TYPE  State Access Consist Cache sCC     Size Name
------------------------------------------------------------
0/0   RAID1 Optl  RW     Yes     RWBD  -   931.0 GB RAID1-A
------------------------------------------------------------
```

仮想ドライブ VD0 は ドライブ・グループ DG0 から RAID1 構成で作成されています。

```
# storcli /c0/d0 show
------------------------------------------------------------------------
DG Arr Row EID:Slot DID Type  State BT     Size PDC  PI SED DS3  FSpace
------------------------------------------------------------------------
 0 -   -   -        -   RAID1 Optl  N  931.0 GB dflt N  N   none N
 0 0   -   -        -   RAID1 Optl  N  931.0 GB dflt N  N   none N
 0 0   0   252:0    9   DRIVE Onln  N  931.0 GB dflt N  N   none -
 0 0   1   252:1    11  DRIVE Onln  N  931.0 GB dflt N  N   none -
 - -   -   252:2    10  DRIVE GHS   -  931.0 GB -    -  -   -    -
------------------------------------------------------------------------
```

ドライブ・グループ DG0 は Enclosure 252 のスロット 0,1 でのドライブで形成され、スロット2 のドライブがホット・スペアになっています。テストの為、RAID 1 を構成するEnclosure 252 のスロット 1 のドライブをオフラインに設定します。

```
# storcli /c0/e252/s1 set offline
```

再度状況をチェックします。

```
# storcli /c0/v0 show
------------------------------------------------------------
DG/VD TYPE  State Access Consist Cache sCC     Size Name
------------------------------------------------------------
0/0   RAID1 Dgrd  RW     Yes     RWBD  -   931.0 GB RAID1-A
------------------------------------------------------------
```
DG0 の VD0 が冗長性のない状態(Dgrd(degraded))になっています。

```
# storcli /c0/d0 show
------------------------------------------------------------------------
DG Arr Row EID:Slot DID Type  State BT     Size PDC  PI SED DS3  FSpace
------------------------------------------------------------------------
 0 -   -   -        -   RAID1 Dgrd  N  931.0 GB dflt N  N   none N
 0 0   -   -        -   RAID1 Dgrd  N  931.0 GB dflt N  N   none N
 0 0   0   252:0    9   DRIVE Onln  N  931.0 GB dflt N  N   none -
 0 0   1   252:2    10  DRIVE Rbld  Y  931.0 GB dflt N  N   none -
------------------------------------------------------------------------
```

スロット2 のホット・スペアが再構築中(Rbld(Rebuild))となっているので、再構築状態を確認します。

```
# storcli /c0/e252/s2 show rebuild
------------------------------------------------------
Drive-ID    Progress% Status      Estimated Time Left
------------------------------------------------------
/c0/e252/s2         5 In progress 1 Hours 58 Minutes
------------------------------------------------------
```

現在の進行状況が 5% であり、残りの予想所要時間が 1時間 58 分であることが判ります。
再構築が完了した状態では以下の様に表示されます。

```
# storcli /c0/eall/s2 show rebuild
----------------------------------------------------------
Drive-ID    Progress% Status          Estimated Time Left
----------------------------------------------------------
/c0/e252/s2 -         Not in progress -
----------------------------------------------------------
```

物理ドライブの状態だけをまとめて参照することも可能です。

```
# storcli /c0/eall/sall show
--------------------------------------------------------------------------
EID:Slt DID State DG     Size Intf Med SED PI SeSz Model               Sp
--------------------------------------------------------------------------
252:0     9 Onln   0 931.0 GB SATA HDD N   N  512B ST1000NM0033-9ZM173 U
252:1    11 UGood  - 931.0 GB SATA HDD N   N  512B ST1000NM0033-9ZM173 U
252:2    10 Rbld   0 931.0 GB SATA HDD N   N  512B ST1000NM0033-9ZM173 U
252:3     8 Onln   1 931.0 GB SATA HDD N   N  512B ST1000NM0033-9ZM173 U
--------------------------------------------------------------------------
```

冗長性をより早く取り戻す観点からお勧めはできませんが、以下のコマンドで再構築処理を一時停止後(pause)/再開(resume)することも可能です。

```
# storcli /c0/e252/s2 pause rebuild
# storcli /c0/e252/s2 resume rebuild
```

#13. コピー・バック
ホット・スペアのテスト完了後に、元の Enclosure 252 のスロット 0,1 の構成に戻したい場合は、以下のコマンドでコピー・バック操作をおこないます。

```
# storcli /c0/e252/s2 start copyback target=252:1
```

コピー・バックの進捗状況も再構築と同様の形式確認可能です。
再構築と同様にそれなりの時間が必要です。コマンドの対象は、コピー・バックを指定した際の target のドライブです。
コピー・バックが完了すると以下の様に表示されます。

```
# storcli /c0/e252/s1 show copyback

----------------------------------------------------------

Drive-ID    Progress% Status          Estimated Time Left
----------------------------------------------------------
/c0/e252/s1 -         Not in progress -
----------------------------------------------------------
```

さらに以下のコマンドで意図したとおりに RAID 1 ボリュームを構成する物理ドライブがエンクロージャー 252のスロット0,2 の組み合わせからスロット0,1 へと変化していることがわかります。

```
# storcli /c0/d0 show

------------------------------------------------------------------------
DG Arr Row EID:Slot DID Type  State BT     Size PDC  PI SED DS3  FSpace
------------------------------------------------------------------------
 0 -   -   -        -   RAID1 Optl  N  931.0 GB dflt N  N   none N
 0 0   -   -        -   RAID1 Optl  N  931.0 GB dflt N  N   none N
 0 0   0   252:0    9   DRIVE Onln  N  931.0 GB dflt N  N   none -
 0 0   1   252:1    11  DRIVE Onln  N  931.0 GB dflt N  N   none -
------------------------------------------------------------------------
```

参考 サイト：
http://ktaka.blog.clustcom.com/2013/05/megaraidstorcli.html
また、以下の検索結果に StorCLI Reference Manual が含まれます。(改訂により、ファイル名等が更新される為、この様に記載しています)
https://www.google.co.jp/search?q=storcli+reference+manual