VMware ESXi/vSphere で削除された VMFS データストアを復元する方法

ESXi ホスト上で VMFS データストアが削除、紛失、または破損した場合の対処は非常に面倒です。特に、アンマウントする代わりに削除をクリックするなど、誤って削除してしまった場合はなおさらです。ストレージ エラーやディスクの問題によって、データストアが警告なしに消失することもあります。その場合でも、すぐに慌てる必要はありません。ディスク上のパーティションを手動で回復できる可能性もありますが、コマンドライン マジックと多少の忍耐が必要です。ここでの目標は、VMFS データへのアクセスを回復し、再フォーマットや最初からの再作成 (これは大きな頭痛の種となる可能性があります) を回避することです。SSH でのパーティション コマンドの実行やディスク データの二重チェックに多少の時間がかかることを覚悟してください。ただし、いくつかの注意深い手順を実行すれば実行可能です。この種のリカバリは完璧ではありませんが、LUN 上に残っている重要な VM ファイルや ISO イメージを救出しようとしている場合には救世主となります。

ESXi で削除または破損した VMFS データストアを回復する方法

VMFSデータストアが見つからない、または不明と表示される場合の対処方法

まず最初に、データストアが単に非表示またはアンマウントされていないだけではないことを確認してください。通常、ESXi ホストでは、SSH でログインします (SSH が有効になっている場合 — ちなみに、デフォルトでは常にオンになっているわけではありません)。SSH は、ダイレクト コンソール ユーザー インターフェイス (DCUI)または vSphere クライアントの[ホスト] > [アクション] > [サービス] > [SSH の有効化] から有効にできます。ログインしたら、VMFS を保持していたディスク/LUN を見つける必要があります — 通常は、vCenter の[ストレージ] > [デバイス]から、または SSH で実行して見つけます。などのnaaesxcfg-scsidevs -l識別子を持つデバイスを探します。セットアップによっては、このパスが、失われたデータストアがあるストレージ デバイスを直接指すため、重要です。ディスクが見つからないと表示される場合、またはパーティション テーブルが消えている場合は、このリカバリ ガイドに従って、上書きのリスクを冒さずにパーティション テーブルを手動で再構築してください。/vmfs/devices/disks/naa.60003ff44dc75adc87daa4e08f467565

パーティションテーブルが存在するかどうかを確認し、ディスクレイアウトを識別します

コマンドを実行してくださいpartedUtil getptbl /vmfs/devices/disks/naa.60003ff44dc75adc87daa4e08f467565。既存のGPT(GUIDパーティションテーブル)が表示されたら、それは良い兆候です。パーティション情報は技術的には存在しているものの、正しく認識されていないことを意味します。何も表示されない場合、または「不明なパーティションテーブル」などのエラーが表示される場合は、GPTラベルを手動で設定する必要があります。ここからが微妙なところです。VMFSパーティションの最初と最後のブロックを特定し、後で復元できるようにするのが目的です。

削除された VMFS パーティションの開始位置を見つけるには、次のようなディスク ブロックをチェックするスクリプトを使用できます。

offset="128 2048"; for dev in `esxcfg-scsidevs -l | grep "Console Device:" | awk {'print $3'}`; do disk=$dev; echo $disk; partedUtil getptbl $disk; { for i in `echo $offset`; do echo "Checking offset at $i:"; hexdump -n4 -s $((0x100000+(512*$i))) $disk; done; } | grep -B 1 -A 5 d00d; echo "---------------------"; done

これはパーティションの開始ブロックを見つけるのに役立ちます。例えば2048で見つけたとします。これが次のステップへの最初の手がかりとなります。

VMFSパーティションの最後のブロックを決定する

走る:

partedUtil getUsableSectors /vmfs/devices/disks/naa.60003ff44dc75adc87daa4e08f467565

これにより、使用可能なセクターの総数、つまりパーティションの末尾の値がわかります(20, 971, 486など)。「不明なパーティションテーブル」というエラーが表示された場合は、GPTラベルを以下のように再作成する必要があります。

partedUtil mklabel /vmfs/devices/disks/naa.60003ff44dc75adc87daa4e08f467565 gpt

これによりパーティション情報が消去されるため、ディスクに他に問題がないと確信できる場合にのみ実行してください。その後、VMFSの正確なGUID(常にAA31E02A400F11DB9590000C2911D1B8 )を再適用する必要があります。正しいGUIDが適用されていることを確認するには、 を実行してくださいpartedUtil showGuids

ディスク情報を使用してパーティションテーブルを再構築します

開始ブロックと終了ブロック、および GUID が取得できたので、次のようにしてパーティション情報を再度設定できます。

partedUtil setptbl /vmfs/devices/disks/naa.60003ff44dc75adc87daa4e08f467565 gpt "1 2048 20971486 AA31E02A400F11DB9590000C2911D1B8 0"

これを実行した後、パーティション リストをもう一度確認し、VMFS パーティションが表示されていることを確認します。

partedUtil getptbl /vmfs/devices/disks/naa.60003ff44dc75adc87daa4e08f467565

問題がなければ、 vSphere の「ストレージの再スキャン」ボタンesxcfg-rescanか、より太い「ストレージの再スキャン」ボタンを使ってストレージアダプタを再スキャンしてください。データストアがすぐに復元されるはずです。

マウント/再スキャンとリカバリの検証

実行しvmkfstools -Vて再スキャンします:

esxcfg-rescan -a

ESXiが復元されたパーティションを認識したら、vSphereクライアントにアクセスしてデータストアを確認してください。ファイル、VMイメージ、またはISOイメージがまだそこに残っていれば、正しく復元できています。場合によっては、再度マウントするか、ストレージビューを更新する必要があるかもしれません。

ちょっとしたヒント:これらの手順を実行するのは通常より安全ですが、念のためLUNまたはディスクのバックアップを必ず取ってください。というのも、現時点で最も危険なのは、誤ってデータを上書きしてしまうことです。特にディスクに他のパーティションやデータが存在する場合、このプロセスは多少不安定になる可能性があります。

ESXi のパーティションテーブルの管理についてさらに詳しく知りたい場合は、VMware のpartedUtil の使い方に関する優れた KB 記事をご覧ください。また、設定によっては、別の方法を試すか、変更後に再起動すると、より効果的に機能する場合があります。

もちろん、環境はそれぞれ異なるため、すべてがスムーズに進むとは限りません。しかし、ほとんどの場合、この方法を使えば失われたVMFSを復旧し、最初からやり直す必要がなくなります。この方法が、誰かの長い復旧の悪夢を回避するのに役立つことを願っています。

まとめ

  • SSH 経由で ESXi ホストに接続し、失われたデータストアがあるディスクを見つけます。
  • パーティション テーブルが存在するかどうかを確認しますpartedUtil getptbl
  • 必要に応じて、 を使用して GPT ラベルを手動で設定しますpartedUtil mklabel
  • VMFS パーティションの開始ブロックと終了ブロックを識別します。
  • パーティション テーブルを再構築しますpartedUtil setptbl
  • ストレージを再スキャンし、データストアの可視性を確認します。

まとめ

困った状況では、これらのコマンドライントリックが、一見死んでしまったデータストアを救出するのに役立ちます。少し奇妙に思えるかもしれませんが、多くの場合、パーティションはまだ存在しています。ただ、ESXiが認識できない形で存在しているだけです。時間をかけてコマンドを再確認することが重要です。特に、間違えると復旧が困難になる可能性があるためです。この記事が誰かの頭痛の種を少しでも救ってくれることを願っています。頑張ってください。そして、バックアップをお忘れなく!