VMwareからLSIのカードのRAIDアレイを管理するTips
とある事情で物理VMサーバ上でRAIDを作成する必要があったので作成
2018/2月 追記:ESXi 6.5ではmegacliは動かないのでstorcliを使ってください
検証環境:
- VMware-VMvisor-Installer-5.5.0.update02-2068190.x86_64
- LSI MegaRAID 8708EM2 (LSI SAS1078チップ使用)
- Fujitsu D2516-D11 (LSI SAS1078チップ使用)
- ESX6系及びMegaRAID 9xxカードは未検証
設定手順
lsiproviderをインストールする
LSI(現Avago)のページからSMIS ProbviderをDLします。
http://www.avagotech.com/cs/Satellite?pagename=AVG2%2FsearchLayout&locale=avg_en&Search=SMIS
古いMegaRAIDをサポートするのはMR 6.3が最終らしいです。
VMW-ESX-5-5-0-lsiprovider-500-04-V0-51-0002-1717486.zip
NEC版のものも動きました
http://support.express.nec.co.jp/dload/422225-A02/
AvagoはLSIの旧URLのリンクをクリックするとAvagoのトップページに飛ばすのやめてくれませんかね(小声)
ZIPファイルの中身からVMW-ESX-5.x.0-lsiprovider-500.04.V0.51-0002-offline_bundle-1717486.zipを取り出し、インストールします。
CLIから設定するので、SSHサービスを有効にする必要があります。SSHを有効にすればSCPが動くのでTeratermなどで転送します。
~ # esxcli software vib update -d /VMW-ESX-5.x.0-lsiprovider-500.04.V0.51-0002-offline_bundle-1717486.zip --no-sig-check Installation Result Message: The update completed successfully, but the system needs to be rebooted for the changes to be effective. Reboot Required: true VIBs Installed: LSI_bootbank_lsiprovider_500.04.V0.51-0002
再起動すると、vSphereClientからディスクの状態が見えるようになります。
MegaCLIのインストール
lsiproviderのインストールが完了したら、MegaCLIをインストールします。
MegaRAID Storage Manager (MSM)は動きが不安定だったのでCLIから設定します。MSMは甘え。
http://www.avagotech.com/cs/Satellite?pagename=AVG2%2FsearchLayout&locale=avg_en&Search=MegaCLI+P1
ここから、MegaCLI 5.5P1をDLし、解凍します。
解凍すると、VmwareMNディレクトリ内にvmware-esx-MegaCli-8.07.07.vibというファイルが解凍されるので、これをSCPなどで転送し、インストールします。
vmware-esx-MegaCli-8.07.07.vib
~ # esxcli software vib install -v /vmware-esx-MegaCli-8.07.07.vib --no-sig-check Installation Result Message: Operation finished successfully. Reboot Required: false VIBs Installed: LSI_bootbank_vmware-esx-MegaCli-8.07.07_8.07.07-01 VIBs Removed: VIBs Skipped:
インストールすると、/opt/lsi/MegaCLI/以下にMegaCLIがインストールされます。/opt/lsi/MegaCLI以下に移動し、
MegaCli -AdpAllInfo -aall
などのコマンドが実行できるか確認します。
~ # cd /opt/lsi/MegaCLI/ /opt/lsi/MegaCLI # ./MegaCli -AdpAllInfo -aall Adapter #0 ============================================================================== Versions ================ Product Name : RAID 5/6 SAS based on LSI MegaRAID Serial No : FW Package Build: 6.0.1-0081 Mfg. Data ================ Mfg. Date : 00/00/00 Rework Date : 00/00/00 Revision No : Battery FRU : N/A Image Versions in Flash: ================ FW Version : 1.11.72-0356 BIOS Version : NT10 WebBIOS Version : 1.1-27-e_10-Rel Ctrl-R Version : 1.01-007B Boot Block Version : 1.00.00.01-0006 略
それっぽい値が帰ってくればOKです。
RAIDディスク作成
ここから先はMegaCLIの設定になるので、VMwareに限らずLinux/Windowsでも大体同じです。
試しに、RAID1のLD(論理ディスク)を作成してみます。
物理ディスク確認
RAIDのメンバーにする、物理ディスクを確認します。
./MegaCli -pdlist -a0 略 Enclosure Device ID: 252 Slot Number: 4 Enclosure position: N/A Device Id: 16 WWN: Sequence Number: 1 Media Error Count: 0 Other Error Count: 1 Predictive Failure Count: 0 Last Predictive Failure Event Seq Number: 0 PD Type: SATA Raw Size: 37.259 GB [0x4a85300 Sectors] Non Coerced Size: 36.759 GB [0x4985300 Sectors] Coerced Size: 36.75 GB [0x4980000 Sectors] Sector Size: 0 Firmware state: Unconfigured(good), Spun Up Device Firmware Level: C7TP Shield Counter: 0 Successful diagnostics completion on : N/A SAS Address(0): 0x8b70aa4da8daeec4 Connected Port Number: 4(path0) Inquiry Data: SB2182SFGVVAUHHitachi HTS541640J9SA00 SB1OC7TP 略 Enclosure Device ID: 252 Slot Number: 5 Enclosure position: N/A Device Id: 17 WWN: Sequence Number: 1 Media Error Count: 0 Other Error Count: 1 Predictive Failure Count: 0 Last Predictive Failure Event Seq Number: 0 PD Type: SATA Raw Size: 37.259 GB [0x4a85300 Sectors] Non Coerced Size: 36.759 GB [0x4985300 Sectors] Coerced Size: 36.75 GB [0x4980000 Sectors] Sector Size: 0 Firmware state: Unconfigured(good), Spun Up Device Firmware Level: C7TP Shield Counter: 0 Successful diagnostics completion on : N/A SAS Address(0): 0x8b70aa4ca9ddf2c4 Connected Port Number: 5(path0) Inquiry Data: SB2182SFGUWDYHHitachi HTS541640J9SA00 SB1OC7TP 略
今回はエンクロージャ252:スロット4と252:5を元に、RAID1のVDを作成します。
RAIDアレイ作成
以下のコマンドでRAID1、書き込みキャッシュ有効なVDを追加します。今回作成するVDの番号が1なのは、すでにVD0が起動ディスクとして使われているためです。
-CfgLdAdd の引数は説明すると長いので、-helpを見てください。
/opt/lsi/MegaCLI # ./MegaCli -CfgLdAdd -r1[252:4,252:5] WB RA Cached CachedBadBBU -a0 Adapter 0: Created VD 1 Adapter 0: Configured the Adapter!! Exit Code: 0x00
ディスクのキャッシュを利用する設定にします。
/opt/lsi/MegaCLI # ./MegaCli -LDSetProp -EnDskCache -l1 -a0 Set Disk Cache Policy to Enabled on Adapter 0, VD 1 (target id: 1) success Exit Code: 0x00
ディスク情報確認
作成した内容を確認します。
/opt/lsi/MegaCLI # ./MegaCli -ldinfo -l1 -a0 Adapter 0 -- Virtual Drive Information: Virtual Drive: 1 (Target Id: 1) Name : RAID Level : Primary-1, Secondary-0, RAID Level Qualifier-0 Size : 36.75 GB Sector Size : 512 Mirror Data : 36.75 GB State : Optimal Strip Size : 64 KB Number Of Drives : 2 Span Depth : 1 Default Cache Policy: WriteBack, ReadAhead, Cached, Write Cache OK if Bad BBU Current Cache Policy: WriteBack, ReadAhead, Cached, Write Cache OK if Bad BBU Default Access Policy: Read/Write Current Access Policy: Read/Write Disk Cache Policy : Enabled Encryption Type : None Is VD Cached: No
作成すると、vSphereClientからも見えるようになります。
あとは通常のディスクとして使えます。
RAIDディスク障害対応手順
故意にディスクのSATAケーブルを抜き、障害を発生させディスクのリビルドを行ってみます。
引き抜いたディスクは252:4番として認識されているディスクです。
状態確認
ケーブルを抜くと、以下のようにvSphereClientでエラーになります。
MegaCLIでもState がDegradedになります。
/opt/lsi/MegaCLI # ./MegaCli -ldinfo -l1 -a0 Adapter 0 -- Virtual Drive Information: Virtual Drive: 1 (Target Id: 1) Name : RAID Level : Primary-1, Secondary-0, RAID Level Qualifier-0 Size : 36.75 GB Sector Size : 512 Mirror Data : 36.75 GB State : Degraded Strip Size : 64 KB Number Of Drives : 2 Span Depth : 1 Default Cache Policy: WriteBack, ReadAhead, Cached, Write Cache OK if Bad BBU Current Cache Policy: WriteBack, ReadAhead, Cached, Write Cache OK if Bad BBU Default Access Policy: Read/Write Current Access Policy: Read/Write Disk Cache Policy : Enabled Encryption Type : None Is VD Cached: No
以下のコマンドでもどのディスクに障害が起きているか確認できます。
/opt/lsi/MegaCLI # ./MegaCli -PdGetMissing -aall Adapter 0 - Missing Physical drives No. Array Row Size Expected 0 1 0 37632 MB Exit Code: 0x00
ディスクの状態変更
エラーになっていることを確認したら、ディスクを戻してリビルドしてみます。
ディスクを戻すと、ダメなディスクとして認識されます。
認識されたことを確認したら、以下のコマンドで未構成の正常ディスクに変更します。
MegaCli -PDMakeGood -Physdrv[エンクロージャID:スロットナンバー] -aアダプタN
ディスクを交換した場合はデフォルトでUNCONFIGURED GOODとして認識されます。
/opt/lsi/MegaCLI # ./MegaCli -PDMakeGood -Physdrv[252:4] -a0 Adapter: 0: EnclId-252 SlotId-4 state changed to Unconfigured-Good. Exit Code: 0x00
ディスクの置き換え
その後、以下のコマンドでアレイに使っていたディスクを置き換えます。
MegaCli -PdReplaceMissing -PhysDrv [エンクロージャID:スロットナンバー] -Array論理ディスクN -rowN -aアダプタN
/opt/lsi/MegaCLI # ./MegaCli -PdReplaceMissing -PhysDrv [252:4] -Array1 -row0 -a0 Adapter: 0: Missing PD at Array 1, Row 0 is replaced. Exit Code: 0x00
リビルドの開始
置き換わっただけでは自動リビルドは走らないので、リビルドを明示的に開始します。
ただし、デフォルトのリビルドレートは30%に指定されているため、稼働システムに対するインパクトは少ないものの中々終わりません。
そのため、テストの時は
MegaCli -AdpSetProp RebuildRate -99
でディスクの性能のほぼ100%をリビルドに割り当てます。
/opt/lsi/MegaCLI # ./MegaCli -AdpGetProp RebuildRate -aALL Adapter 0: Rebuild Rate = 30% Exit Code: 0x00 /opt/lsi/MegaCLI # ./ MegaCli -AdpSetProp RebuildRate -99 -a0 /opt/lsi/MegaCLI # ./MegaCli -AdpGetProp RebuildRate -aALL Adapter 0: Rebuild Rate = 99% Exit Code: 0x00
その後、ディスクのリビルドを開始します。開始すると、ファームのステータスがRebuildになります。
/opt/lsi/MegaCLI # ./MegaCli -PDRbld -Start -PhysDrv [252:4] -a0 Started rebuild progress on device(Encl-252 Slot-4) Exit Code: 0x00 /opt/lsi/MegaCLI # ./MegaCli -pdlist -a0|grep Firm Firmware state: Rebuild Device Firmware Level: C7TP Firmware state: Online, Spun Up Device Firmware Level: C7TP
リビルドの進捗確認
以下のコマンドでリビルドの進捗状況を確認できます。
MegaCli -PDRbld -ShowProg -PhysDrv [エンクロージャID:スロットナンバー] -aアダプタN
/opt/lsi/MegaCLI # ./MegaCli -PDRbld -ShowProg -PhysDrv [252:4] -a0 Rebuild Progress on Device at Enclosure 252, Slot 4 Completed 66% in 10 Minutes. Exit Code: 0x00
完了確認
リビルドが終わると、vSphereClientの方も正常に戻ります。
今更ながら、ディスクの状態はUNCONFIGURED GOODじゃなくてONLINEにならないといけないような…?
/opt/lsi/MegaCLI # ./MegaCli -pdlist -a0|grep Firm Firmware state: Online, Spun Up Device Firmware Level: AB0Q Firmware state: Online, Spun Up Device Firmware Level: AB0Q Firmware state: Online, Spun Up Device Firmware Level: AB0Q Firmware state: Online, Spun Up Device Firmware Level: AB0Q Firmware state: Online, Spun Up Device Firmware Level: C7TP Firmware state: Online, Spun Up Device Firmware Level: C7TP
よく分かりませんが。。
以上で、ディスク障害の対応手順(オレオレ検証)は完了です。
その他
その他のチューニングと言うか諸々について
7日ごとにHDD-LEDが強烈に点滅するのを変えたい
ConsistencyCheck (CC)がデフォルトで168時間毎になっているためです。確認、変更はMegacliからできます。
/*** 確認 ***/ ~# MegaCli -AdpCcSched -info aall Adapter #0 Operation Mode: Concurrent Execution Delay: 168 Next start time: 02/10/2018, 03:00:00 Current State: Active Number of iterations: 11 Number of VD completed: 0 Excluded VDs : None Exit Code: 0x00 /*** 変更(例として672時間毎(4週間に一回)) ***/ ~# MegaCli -AdpCcSched -SetDelay 672 aall Adapter 0: Scheduled CC execution delay is set to 672 hours. Exit Code: 0x00 /*** 次回の実行時間を延期する ***/ /*** 今だとNext start time: 02/10/2018, 03:00:00になっているので2/24に変更する ***/ ~# MegaCli -AdpCcSched -SetStartTime 20180224 06 -a0 Adapter 0: Scheduled CC start time is set. Exit Code: 0x00 /*** 確認 ***/ ~# MegaCli -AdpCcSched -info aall Adapter #0 Operation Mode: Concurrent Execution Delay: 672 Next start time: 02/24/2018, 06:00:00 Current State: Active Number of iterations: 11 Number of VD completed: 0 Excluded VDs : None Exit Code: 0x00 /*** CCのモード変更 ***/ /*** CCをConcurrentモードに指定する(デフォルト) ***/ MegaCli AdpCcSched ModeConc aall Adapter 0: Scheduled CC mode is set to Concurrent. Exit Code: 0x00 /*** CCをSequentialモードに指定する ***/ MegaCli AdpCcSched ModeSeq aall Adapter 0: Scheduled CC mode is set to Sequential. Exit Code: 0x00 /*** 非推奨 ***/ /*** CCを無効にする***/ MegaCli AdpCcSched Dsbl aall Adapter 0: Scheduled CC mode is set to Disabled.
あまり頻繁にやるのも良くないですが、無効にするのもよくありません。CC中に破損が見つかった場合、実際にブロックが破損していたが、今までアクセスされなかったがために誰にも気が付かれなかったというパターンです。CCがディスクを壊したわけではありません。無効にしていると、だいたい他のディスクが壊れてリビルド中に全セクタをなめた結果それが発覚して直すべきパリティーが読み込めずアレイが全損します。
CCのモードにSequentialとConcurrentがありますが、Concurrent(デフォルト)はアレイのメンバーディスクを一斉にチェックするモードで、Sequentialはアレイのディスクを1本ずつ終わったら次へ次へと見ていくモードです。ただ、RAIDは結局一番遅いディスクに律されてしまうので、パフォーマンスインパクトとしては1本ずつやる意味がない気がします…。筐体のLEDが1本だけチカチカするのでどのディスクがいまCCされているかという意味ではわかりやすいかもしれません。あとは15krpmのSASドライブが24本くらいになってくると発熱や消費電力的な面で1本ずつやるメリットが有るのかもしれませんが、正直どういうときに使うのか謎です。
Linuxのmdraidはデフォルトで月イチでディスク総なめをする設定が入っているので、そのくらいの頻度でやっておくのがいいと思います。
MegaCLIの使い方についてはMegaCLI -helpを参照。殆どここに書いてあります。
また、ディスク障害発生時に検知したい場合はSNMPかvCenterServerを使う必要があります。
Related articles
コメントの追加