ESXi ホストの何番目のディスクが壊れたか知りたい

VMware を使ってクラウド環境構築する際に、ハイパーバイザー用の ESXi ホストとして HP の ProLiant サーバ (DL シリーズ) をよく使っていますが、ある日ローカルディスクが一本壊れてますと。

データセンター巡回監視担当者から連絡がありました。

幸いなことに、ローカルストレージは、RAID 5 で構築したので、ディスク一本壊れても特に影響はありませんでした。

vCenter 構成 - ストレージアダプタ - Smart Array P410i のローカル HDD 状態

全ての ESXi ホスト、ストレージ、スイッチ、ルータ等の機器は、データセンターのラック内にあり、状況確認・運用などは通常業務として全て会社でやっているので、vCenter に接続して、該当 ESXi ホストのディスク状態を確認しようとしたのですが、vCenter の ハードウェアのステータス タブが使えない状態になっていました。

よりによって、iLO と SMH (HP Systems Insight Manager) へ接続が出来ない状態になっていました。

ちなみに、本来なら以下のように iLO か SMH へ接続すると各ディスクの状態確認ができます

iLO3 Drives 情報

iLO3 Drives 情報

iLO4 Storage 情報

iLO4 Storage 情報

SMH アレイコントローラ情報

SMH アレイコントローラ情報

ディスク一本片手にデータセンター行って LED 状態を確認すれば、何番目のディスクが壊れているか確認できるので、その場でオンラインディスク交換できるとは思いますが、現地に行く前に何番目のディスクが壊れているかくらいは、事前に確認しておいた方が気持ち的に安心感があります。(ディスク交換する際に、間違えて正常のディスクを抜いてしまって二重故障を起こしてシステム壊したら大変なことになるので。。)

それ以外に、また一つ問題がありまして、そもそも ESXi ホストに刺さってるディスク・壊れたディスクが SATA なのか、SAS なのか、容量は 300GB なのか 600GB なのか確認するすべがありませんでした。

先ほど、RAID 5 って言いましたが、昔過ぎて本当にそうだったかすら覚えてない状態でした。

それで、コマンドラインベースで ESXi ホスト内で RAID 情報各 HDD のステータス を何とか確認する方法があるか調べたところ、幸いなことにやり方を見つけて対応したので、今回は、ESXi ホストのアレイ情報確認、及び故障ディスク特定する方法についてご紹介します。

ESXi ホストのアレイ情報確認、及び故障ディスク特定

Step 1. ESXi ホストへ SSH 接続

コマンドを実行する必要があるので、まずは、以下を参考にし、ESXi ホストへ SSH 接続を実施します。

Step 2. アレイ情報確認

ESXi ホストのアレイ情報を確認するためには、以下のようにします。

一つの論理ボリュームが RAID 5 で構成されていることが分かります。

ESXi ホストのアレイ情報確認Raw Code(S)Raw Code(T)
# cat /proc/driver/hpsa/hpsa0
hpsa0: HP Smart Array P410i Controller
Board ID: 0x3245103c
Firmware Version: 3.66
Driver Version: HP HPSA Driver (v 5.0.0-28OEM)
Driver Build: 2
IRQ: 202
Logical drives: 1
Current Q depth: 0
Current # commands on controller: 0
Max Q depth since init: 0
Max # commands on controller since init: 176
Max SG entries since init: 129
Max Commands supported: 1020
SCSI host number: 4

hpsa0/C4:B0:T0:L1       Direct-Access           LOGICAL VOLUME          3.66    RAID 5

Step 3. ESXi ホストの故障ディスク特定

ESXi ホストの各ドライブベイ情報・ディスクステータスを確認するためには、hpacucli (HP Array Configuration Utility CLI) コマンドを使います。

hpacucli の基本的な使い方は、以下の通りです。

パッと見た感じだと色々できそうですね。

hpacucli 使い方Raw Code(S)Raw Code(T)
# /opt/hp/hpacucli/bin/hpacucli help

CLI Syntax
   A typical ACU CLI command line consists of three parts: a target device,
   a command, and a parameter with values if necessary. Using angle brackets to
   denote a required variable and plain brackets to denote an optional
   variable, the structure of a typical ACU CLI command line is as follows:

      <target> <command> [parameter=value]

   <target> is of format:
      [controller all|slot=#|wwn=#|chassisname="AAA"|
                  serialnumber=#|chassisserialnumber=#|ctrlpath=#:# ]
      [array all|<id>]
      [physicaldrive all|allunassigned|[#:]#:#|[#:]#:#-[#:]#:#]
      [ssdphysicaldrive all|allunassigned|[#:]#:#|[#:]#:#-[#:]#:#]
      [logicaldrive all|#]
      [enclosure all|#:#|serialnumber=#|chassisname=#]
      [licensekey all|<key>]
      [ssdinfo]
      Note 1: The #:#:# syntax is only needed for systems that
              specify port:box:bay. Other physical drive targeting
              schemes are box:bay and port:id.
      Note 2: The chassisserialnumber is known in ACU as the
              RAID Array Serial Number. The chassisname is known
              in ACU as the RAID Array ID.
      Note 3: ctrlpath=#:# maps to "smart enclosure hooked up to
              host bus adapter slot:host bus adapter port"

   Example targets:
      controller slot=5
      controller chassisname="Lab C"
      controller serialnumber=P21DA2322S
      controller chassisserialnumber=9J3CJN71XDCH
      controller wwn=500308B300701011
      controller slot=7 array A
      controller slot=5 logicaldrive 5
      controller slot=5 physicaldrive 1:5
      controller slot=5 physicaldrive 1E:2:3
      controller slot=5 ssdphysicaldrive all
      controller slot=5 enclosure 4E:1 show
      controller slot=5 licensekey XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

For detailed command information type any of the following:
   help add
   help create
   help delete
   help diag
   help modify
   help remove
   help shorthand
   help show
   help target
   help rescan
   help version

Help also accepts commonly used CLI parameters and ACU keywords. Adding
additional keywords will further filter the help output. Examples:
   help ssp        (shows all ssp help including show and modify commands)
   help ssp modify (restricts ssp help to only modify commands)
   help migrate
   help expand
   help extend
   help <keyword> <keyword> ... <keyword>

   Please note that beginning with ACU/ACUCLI version 8.55, the term
   "stripe size" has been replaced by "strip size."  This is a change
   of labeling and does not signify a change in functionality.  When
   distributing data across multiple physical drives (striping) the
   "strip size" is the amount of data that is written to each physical
   drive.  The "full stripe size" refers to the combined size of all
   the strips across all physical drives,  excluding parity-only drives.

各ドライブベイの詳細は、以下のコマンドで確認できます。

4番目の SAS 300GB ディスクが一本壊れていることが分かります。

ESXi ホストの故障ディスク特定Raw Code(S)Raw Code(T)
# /opt/hp/hpacucli/bin/hpacucli controller slot=0 physicaldrive all show

Smart Array P410i in Slot 0 (Embedded)

   array A

      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 300 GB, OK)
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 300 GB, OK)
      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, SAS, 300 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, SAS, 300 GB, Failed)
      physicaldrive 2I:1:5 (port 2I:box 1:bay 5, SAS, 300 GB, OK)
      physicaldrive 2I:1:6 (port 2I:box 1:bay 6, SAS, 300 GB, OK)
      physicaldrive 2I:1:7 (port 2I:box 1:bay 7, SAS, 300 GB, OK)
      physicaldrive 2I:1:8 (port 2I:box 1:bay 8, SAS, 300 GB, OK)

終わりに

これだけ分かれば、安心というか。 いざとなったときに役立つかもしれないですね。

hpacucli がダメだったら hpssacli

もし、hpacucli コマンドが使えない場合には、hpssacli で試して見てください。

hpssacli (Smart Storage Administrator CLI) は、HP ProLiant サーバーに接続された Smart アレイコントローラー、ホストバスアダプター、SAS スイッチなどのストレージデバイスを一括して設定、管理できる hpacucli に置換わるコマンドラインベースのユーティリティです。

参考 : HP ProLiant サーバー - Smart Storage Administrator (SSA) CLI での操作方法

hpssacli 実行例 (ESXi 6.0)Raw Code(S)Raw Code(T)
# /opt/hp/hpssacli/bin/hpssacli controller slot=0 physicaldrive all show

Smart Array P440ar in Slot 0 (Embedded)

   array A

      physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS, 300 GB, OK)
      physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS, 300 GB, OK)

ちょっと不思議に思ったのが、ESXi ホストに特に HP のユーティリティソフトウェアを導入した記憶がまったくないのに、なぜ普通に hpacucli コマンドが使えたかというところです。

少し考えて見たら、HP のサーバを ESXi ホストとして使うためには、VMware のハイパーバイザーである vSphere ESX をインストールする必要がありますが、VMware オリジナルの vSphere ESX ではなく、ベンダさん (ここでは、HP) によって配布される カスタム vSphere ESX をインストールする必要があります。

このカスタム vSphere ESX イメージの中には、オリジナルの vSphere ESX に加え、HP 用のドライバ・モジュールなどが組み込まれているため、恐らく、その中に hpacucli も含まれていたのではないかと思われます。 これで納得しました。

簡単にまとめると以下の機能が使えないときには、ESXi ホストへ SSH ログインし、proc ファイル・システム内のアレイコントローラの RAID 情報 /proc/driver/hpsa/hpsa0 を確認した後、hpacuclihpssacli を使って、各ドライブベイのディスクステータスを確認します。

  • vCenter ハードウェアステータスタブが使えない
  • iLO へ接続できない
  • SMH へ接続できない
  • どうしてもダメだったら、ESXi へ SSH ログインし、コマンドで確認する

以上、ESXi ホストのアレイ情報確認、及び故障ディスク特定 でした。