【現環境】
・ESXi7.0.3
・ESXiホスト5台構成
・vCenter7.0.1
・vSAN有効
・社内の検証環境に使用中
【背景】
現在のvSphereの環境を維持しながら、サーバーを初期化するため、vSANの最小構成であるESXiホスト3台構成を維持しながら、1台ずつvCenterから切り離し、サーバーの初期化とESXiのインストールを行っていました。
その最中、vCenterのファイルが欠損?したのかは不明ですが、vCenter Serverが起動しない事態に見舞われ、解決の目途が立ちません。そこで、現在のvCenterの復旧は諦め、新たにvCenterを構築し、そこに5台のESXiホスト移したいと考えています。
【質問】
この際、一時的にESXiホストは新旧2台のvCenter配下に属することになりますが、技術的な問題はありますか?
> ➁仮想マシンが存在しない1号機、2号機をメンテナンスモードに変更
このステップでは、Ensure Accessibility を利用してMaintenance Modeに入れましたか?
きちんとEnsure AccessibilityでMMにしたのであれば、もしかしたら不運にも3,4,5号機でディスク障害が発生してしまった可能性もあります。
1号機と2号機のvSAN Disk 群がフォーマットされていなければ復旧できる可能性はあります。
MMに入れた後何もしていなければ、まずは1,2号機のMMを解除することをお勧めします。
MM解除をしても改善がない場合はVCSAが多重起動してしまっている可能性や何らかの競合や輻輳が発生している可能性もありますので、すべてのESXiをMMにして再起動したうえで、改めてVCSAだけを起動してみてください。
それでも同様のエラーで起動しない場合は、vSANのヘルスチェックをする必要があります。
とりあえず以下のコマンドで状況を確認することをお勧めします。
esxcli vsan cluster get
↑Sub-Cluster Member Count と Sub-Cluster Member HostNames を確認してvSANに参加しているホストを特定する
esxcli vsan debug object health summary get
↑Inaccessible Objectがないかどうかを確認する
メンバーカウントが5なのにInaccessibleがある場合は、サポートに問い合わせた方が良い状況ですね。
メンバーカウントが4以下でInaccessibleがある場合は、未参加のESXiをvSANに復旧させることでVCSAが起動できるようになる可能性があります。
(1,2号機でESXiを再インストールしてしまった場合でも)vSAN Diskを初期化していなければ、復旧できる場合があります。
難易度は高いですが、 ttps://kb.vmware.com/s/article/2150303 の Unicast Agentを確認&再設定したり、
esxcli vsan cluster join -u [UUID]
↑上記のコマンドでクラスタに復帰させたりできるかもしれません。
ただし難易度は非常に高いですので、保守があればサポートに問い合わせですね。保守がなければ、(復旧できる保証はないが)頑張ってトライするか、諦めて再構築するかですね。
いくつか書いて頂いた状況から起きている事象を推測します。
▼ メンテナンスモードのオプション
まず、ESXi ホストをメンテナンスモード (MM) に切り替えた際は、vSAN クラスタの場合、
のメンテナンスモードに切り替える ESXi ホストに格納されている vSAN 上の仮想マシンデータの移行必要性の有無によりオプションを選択します。
上記 MM のオプション、クラスタから ESXi ホストを取り外したり、ESXi ホストを玉突きで移行する場合は「3. 全データの移行」を選び、仮想マシンデータを安全に退避する必要があります。
通常の ESXi ホストの再起動など、短時間の停止時は「1. アクセシビリティの確保」を選択します。この際は ESXi ホストが再起動中は仮想マシンは冗長化された仮想ディスクの片方にアクセス出来ませんが、もう片方が活きているため仮想マシンは停止しません。
「3. データの移行なし」は、クラスタの全シャットダウンなど計画停止時に利用するオプションです。。
まず、これらの MM のオプションはどれを選択したか覚えていますでしょうか?
▼ メンテナンスモードへの移行
簡易的ですが、先日お伝えした vCenter の複数ある仮想ディスクが vSAN クラスタ上に RAID 1 で分散配置されているイメージを以下に描きました。
※ vCSA は合計 17 個の仮想ディスクを持っていますが、上記は簡易的に D1 ~ D3 の3つの仮想ディスクで記しています。
薄緑の四角が vCSA の仮想ディスクをイメージしています。
このような状態の時、ESXi ホスト ① から仮に「アクセシビリティの確保」または 「データ移行なし」で MM に移行すると、
ESXi ① の仮想マシンデータはそのままに、仮想マシンは別の ESXi ホストに vMotion で移動します。
この時点ではそれぞれ、仮想マシンは vSAN 上で冗長配置された RAID 1 の残ったデータにアクセスできるので仮想マシンは起動しています。
続いてこの状態で ESXi ② を同じく「アクセシビリティの確保」または 「データ移行なし」で MM に移行すると、先に vCSA を他の ESXi ホストに vMotion で逃していたとしても、
以下のように vCSA の Disk 1 が ESXi ① と ② に残ったまま MM に移行されるとデータにアクセス出来なくなり、
vCenter がクラッシュ・半死にします。
実際には、「アクセシビリティの確保」で MM に移行すると vCSA の Disk 1 へのアクセスを確保するため、
ESXi ② に格納されている vCSA の Disk 1 のデータを残る ESXi にデータ移行を裏で行ってから MM に移行完了しますが、
裏で流れているデータ移行に時間がかかっているのを待たずに、vCenter から ESXi ② を切断などすると、FTT=1 の許容台数を超えて ESXi ホストの vSAN データにアクセスできなくなるので vCSA がクラッシュするリスクが高いです。
恐らく今回はそれに近い状況じゃないかと思われます。
これらを防ぐためには、必ず ESXi ホストを永続的に切り離す際には「全データの移行」で MM に移行してください。
そして MM への移行は必ず ESXI ホストを 1 台ずつ、データ移行が完全に完了してから次の ESXi ホストを MM に移行します。
ここで多重に移行しようとするとデータアクセス不可になる VM が発生するリスクがあります。
▼ ESXi ② の状況の推測
> この際、なぜか2号機(vCenterから切断したホスト)から、vsandatastoreが認識されています。
> また、vcsaの移行先である4号機では、vCSAは認識されているものの、リソースや仮想ディスクなどを読み込めないという状況です。
> やはり、vCSAのデータの一部が欠損している可能性が高いですか?
ESXi ②は vCenter のデータを持ったまま切断・MM に移行してしまった可能性が高く、
クラスタから外される前に vCenter がクラッシュしたから今の状態になっていると思われます。
現状で ESXi ② に対して ESXi の再インストールなどの操作を行っていないのであれば、一旦 ESXi ② の MM を解除し、オリジナルの vCenter を再起動して復旧できるかを確認します。
ESXi ① は既に vSAN クラスタから抜かれた状態のようなので、一旦は MM のままでも良いですが、解除できるのであれば MM 解除しておいてください。
▼ 全てのホストをMMにしようとしたところ、仮想マシンのシャットダウンの実行に失敗し、MMにできない状況
これは上記に示した様に、ESXi を MM に移行すると仮想マシンから vSAN 上の仮想ディスクにアクセスできなくなりますので想定される状況です。
全 ESXi ホストを MM にする場合は vCenter 含む全ての仮想マシンをシャットダウン後、各 ESXi の Host Client (ESXi の IP アドレスに Webブラウザで接続)や、SSH でアクセスして esxcli コマンドでメンテナンスモードに移行します。
計画停電など、クラスタの全シャットダウンを行う際は、
vCenter 7.0 update3 以降では vSAN 上の仮想マシンを全てシャットダウンした後、vCenter が活きていれば vSphere Client で vSAN クラスタを右クリックして表示されるメニューの一番下、vSAN を選び、「クラスタのシャットダウン」を実行することで vSAN クラスタを安全にシャットダウンする事ができます。
▼ ESXi ホストから vSAN クラスタへの復旧について
> >未参加のESXiをvSANに復旧させることでVCSAが起動できるようになる可能性があります。
> そもそも、ESXiホスト側からvSANに追加させることは可能なのでしょうか?
復旧可能な条件として重要なのが、もともと vSAN で使っていた SSD などをフォーマットするなど「初期化していない」事が必須です。
vSAN Disk に手を付けていなければ、nkaneda さん記載の
> vSAN Diskを初期化していなければ、復旧できる場合があります。
> 難易度は高いですが、 https://kb.vmware.com/s/article/2150303 の Unicast Agentを確認&再設定したり、
> esxcli vsan cluster join -u [UUID]
などの手順で復旧が可能かもしれません。
まずは、ESXi ② を起動し、MM を解除して vCenter の仮想ディスクが見えるようになるか確認してください。
ESXi ④ で確認した Inaccessible Object の数が減っていれば、ESXi ② の MM 解除でアクセス可能な仮想ディスク (vSAN のオブジェクト)が増えたことを意味します。
私も過去にバックアップのない状態でVCを壊してしまい、スクラッチビルドしたことがありますが特に問題はなかったです。
1.新VCSAをBuild
2.DCとClusterを作成し、Cluster作成時にvSANとHAは有効にしておく
3.Add Host で全ホストをクラスタ配下に追加
4.VDS作成(PG作成やUplinkの設定は済ませておく)
5.VDSにAdd Host
6.その他もろもろ
もちろん、バックアップがあるならそこから戻したほうがいいですし、Snapshotから戻せる場合もあります。
ファイル破損の場合はFSCKをかければ復旧できる場合もあります。
> vSANの最小構成であるESXiホスト3台構成を維持しながら、1台ずつvCenterから切り離し
> その最中、vCenterのファイルが欠損?したのかは不明ですが、vCenter Serverが起動しない事態に見舞われ
上記作業の状況から、vCSA の仮想ディスクが配置されている 2 台の ESXi が同時に切断された状況だとしたら vCSA のデータの一部が欠損した可能性があります(vCSA は仮想ディスク数が多く、それぞれがほぼ全ての ESXi にミラーなどで分散配置される事が多いため)。
この手のメンテナンス時に注意が必要なのが、vSAN の最小構成という観点よりも、vSAN 上のデータが保持される FTT のポリシー設定となります。
FTT = 1 の場合、2重障害相当の接続断の時は 3 ホスト残っていたとしても、VMDK ファイルにアクセス不可となる VM が発生する可能性があります。
> この際、一時的にESXiホストは新旧2台のvCenter配下に属することになりますが、技術的な問題はありますか?
以下の KB があり、vSAN クラスタの vCenter 付け替えについては正規手順が一応公開されています。
KB の手順自体は vCenter がクラッシュしてバックアップから戻せない場合も想定した手順となりますので、こちら参考にしてみてください。
"新旧2台のvCenter配下に属する" 状態は、新しい vCenter が ESXi ホストを登録した段階で、
ESXi 自体は新しい vCenter 配下のみの状態として自分自身を認識するので、新規 vCenter に登録する事で問題ありません。
ご回答いただき、ありがとうございます。
続けて、質問がございます。(まだ現在のvCenterを諦めきれないものでして、、)
今回のメンテナンスの実施手順としましては、以下の通りです。
➀初期化予定のホスト(1、2号機)上に存在する、vCSAをはじめとした仮想マシンを、初期化しないホスト(3、4、5号機)にvMotionで移行
➁仮想マシンが存在しない1号機、2号機をメンテナンスモードに変更
➂1号機、2号機をvSANクラスタから除外
➃2号機をvCenterから切断
⑤vCenterにて障害発生
この障害というのは、2号機切断後、vSphere Clientの画面が固まり、リロードすると接続ができなくなったことを指します。
また、vCSAを再起動してみると、立ち上がらなくなってしまいました。スナップショットからの復元も不可でした。
この際、なぜか2号機(vCenterから切断したホスト)から、vsandatastoreが認識されています。
また、vcsaの移行先である4号機では、vCSAは認識されているものの、リソースや仮想ディスクなどを読み込めないという状況です。
やはり、vCSAのデータの一部が欠損している可能性が高いですか?
ちなみに、4号機からHost Clientの監視>イベントを確認してみると、以下のようなものとなっています。
vCSAがha-datacenterに登録されました。
ha-datacenter内の4号機上のvCSA用のゲストOSの再起動。
ha-datacenter内の4号機上のvCSA用のゲストOSを再起動できません。仮想マシンのリセットに失敗しました。
ホスト4号機で仮想マシンの一部のディスクに読み込み失敗しました。仮想マシン構成内に存在する情報が不完全な可能性があります。
コンピューティングリソース4号機にある4号機の仮想マシンvCSAの実行状態をvcsaスナップショット_20230316に戻すことができませんでした。
ha-datacenterの4号機のvCSAの構成ファイルが見つかりません。
ha-datacenter内の4号機上のvCSAがレジュームしています
> ➁仮想マシンが存在しない1号機、2号機をメンテナンスモードに変更
このステップでは、Ensure Accessibility を利用してMaintenance Modeに入れましたか?
きちんとEnsure AccessibilityでMMにしたのであれば、もしかしたら不運にも3,4,5号機でディスク障害が発生してしまった可能性もあります。
1号機と2号機のvSAN Disk 群がフォーマットされていなければ復旧できる可能性はあります。
MMに入れた後何もしていなければ、まずは1,2号機のMMを解除することをお勧めします。
MM解除をしても改善がない場合はVCSAが多重起動してしまっている可能性や何らかの競合や輻輳が発生している可能性もありますので、すべてのESXiをMMにして再起動したうえで、改めてVCSAだけを起動してみてください。
それでも同様のエラーで起動しない場合は、vSANのヘルスチェックをする必要があります。
とりあえず以下のコマンドで状況を確認することをお勧めします。
esxcli vsan cluster get
↑Sub-Cluster Member Count と Sub-Cluster Member HostNames を確認してvSANに参加しているホストを特定する
esxcli vsan debug object health summary get
↑Inaccessible Objectがないかどうかを確認する
メンバーカウントが5なのにInaccessibleがある場合は、サポートに問い合わせた方が良い状況ですね。
メンバーカウントが4以下でInaccessibleがある場合は、未参加のESXiをvSANに復旧させることでVCSAが起動できるようになる可能性があります。
(1,2号機でESXiを再インストールしてしまった場合でも)vSAN Diskを初期化していなければ、復旧できる場合があります。
難易度は高いですが、 ttps://kb.vmware.com/s/article/2150303 の Unicast Agentを確認&再設定したり、
esxcli vsan cluster join -u [UUID]
↑上記のコマンドでクラスタに復帰させたりできるかもしれません。
ただし難易度は非常に高いですので、保守があればサポートに問い合わせですね。保守がなければ、(復旧できる保証はないが)頑張ってトライするか、諦めて再構築するかですね。
ご回答ありがとうございます。
>MM解除をしても改善がない場合はVCSAが多重起動してしまっている可能性や何らかの競合や輻輳が発生している可能性もありますので、すべてのESXiをMMにして再起動したうえで、改めてVCSAだけを起動してみてください。
全てのホストをMMにしようとしたところ、仮想マシンのシャットダウンの実行に失敗し、MMにできない状況です。(おそらくvSANの問題)
>とりあえず以下のコマンドで状況を確認することをお勧めします。esxcli vsan cluster get
各ホストでesxcli vsan cluster get を実行しました。
1号機は「vSAN Clustering is not enabled on this host」と表示され、正常にvSANが無効になっているようでした。
一方で、2号機で同じコマンドを実行したところ、vSANに属している4号機や5号機と同じように「Cluster Information」が表示され、有効になっているようでした。(Sub-Cluster Member Countは「1」と表示されている)
また、4号機で、esxcli vsan debug object health summary getを実行したところ、Inaccessible Objectが「182」と表示されていました。これは、vSANから抜け切れていない2号機が原因ですかね。
>未参加のESXiをvSANに復旧させることでVCSAが起動できるようになる可能性があります。
無知ですみません。そもそも、ESXiホスト側からvSANに追加させることは可能なのでしょうか?
現状分析する上で、他に何かすべきことはありますか?
何度も本当にすみません、よろしくお願いします。
いくつか書いて頂いた状況から起きている事象を推測します。
▼ メンテナンスモードのオプション
まず、ESXi ホストをメンテナンスモード (MM) に切り替えた際は、vSAN クラスタの場合、
のメンテナンスモードに切り替える ESXi ホストに格納されている vSAN 上の仮想マシンデータの移行必要性の有無によりオプションを選択します。
上記 MM のオプション、クラスタから ESXi ホストを取り外したり、ESXi ホストを玉突きで移行する場合は「3. 全データの移行」を選び、仮想マシンデータを安全に退避する必要があります。
通常の ESXi ホストの再起動など、短時間の停止時は「1. アクセシビリティの確保」を選択します。この際は ESXi ホストが再起動中は仮想マシンは冗長化された仮想ディスクの片方にアクセス出来ませんが、もう片方が活きているため仮想マシンは停止しません。
「3. データの移行なし」は、クラスタの全シャットダウンなど計画停止時に利用するオプションです。。
まず、これらの MM のオプションはどれを選択したか覚えていますでしょうか?
▼ メンテナンスモードへの移行
簡易的ですが、先日お伝えした vCenter の複数ある仮想ディスクが vSAN クラスタ上に RAID 1 で分散配置されているイメージを以下に描きました。
※ vCSA は合計 17 個の仮想ディスクを持っていますが、上記は簡易的に D1 ~ D3 の3つの仮想ディスクで記しています。
薄緑の四角が vCSA の仮想ディスクをイメージしています。
このような状態の時、ESXi ホスト ① から仮に「アクセシビリティの確保」または 「データ移行なし」で MM に移行すると、
ESXi ① の仮想マシンデータはそのままに、仮想マシンは別の ESXi ホストに vMotion で移動します。
この時点ではそれぞれ、仮想マシンは vSAN 上で冗長配置された RAID 1 の残ったデータにアクセスできるので仮想マシンは起動しています。
続いてこの状態で ESXi ② を同じく「アクセシビリティの確保」または 「データ移行なし」で MM に移行すると、先に vCSA を他の ESXi ホストに vMotion で逃していたとしても、
以下のように vCSA の Disk 1 が ESXi ① と ② に残ったまま MM に移行されるとデータにアクセス出来なくなり、
vCenter がクラッシュ・半死にします。
実際には、「アクセシビリティの確保」で MM に移行すると vCSA の Disk 1 へのアクセスを確保するため、
ESXi ② に格納されている vCSA の Disk 1 のデータを残る ESXi にデータ移行を裏で行ってから MM に移行完了しますが、
裏で流れているデータ移行に時間がかかっているのを待たずに、vCenter から ESXi ② を切断などすると、FTT=1 の許容台数を超えて ESXi ホストの vSAN データにアクセスできなくなるので vCSA がクラッシュするリスクが高いです。
恐らく今回はそれに近い状況じゃないかと思われます。
これらを防ぐためには、必ず ESXi ホストを永続的に切り離す際には「全データの移行」で MM に移行してください。
そして MM への移行は必ず ESXI ホストを 1 台ずつ、データ移行が完全に完了してから次の ESXi ホストを MM に移行します。
ここで多重に移行しようとするとデータアクセス不可になる VM が発生するリスクがあります。
▼ ESXi ② の状況の推測
> この際、なぜか2号機(vCenterから切断したホスト)から、vsandatastoreが認識されています。
> また、vcsaの移行先である4号機では、vCSAは認識されているものの、リソースや仮想ディスクなどを読み込めないという状況です。
> やはり、vCSAのデータの一部が欠損している可能性が高いですか?
ESXi ②は vCenter のデータを持ったまま切断・MM に移行してしまった可能性が高く、
クラスタから外される前に vCenter がクラッシュしたから今の状態になっていると思われます。
現状で ESXi ② に対して ESXi の再インストールなどの操作を行っていないのであれば、一旦 ESXi ② の MM を解除し、オリジナルの vCenter を再起動して復旧できるかを確認します。
ESXi ① は既に vSAN クラスタから抜かれた状態のようなので、一旦は MM のままでも良いですが、解除できるのであれば MM 解除しておいてください。
▼ 全てのホストをMMにしようとしたところ、仮想マシンのシャットダウンの実行に失敗し、MMにできない状況
これは上記に示した様に、ESXi を MM に移行すると仮想マシンから vSAN 上の仮想ディスクにアクセスできなくなりますので想定される状況です。
全 ESXi ホストを MM にする場合は vCenter 含む全ての仮想マシンをシャットダウン後、各 ESXi の Host Client (ESXi の IP アドレスに Webブラウザで接続)や、SSH でアクセスして esxcli コマンドでメンテナンスモードに移行します。
計画停電など、クラスタの全シャットダウンを行う際は、
vCenter 7.0 update3 以降では vSAN 上の仮想マシンを全てシャットダウンした後、vCenter が活きていれば vSphere Client で vSAN クラスタを右クリックして表示されるメニューの一番下、vSAN を選び、「クラスタのシャットダウン」を実行することで vSAN クラスタを安全にシャットダウンする事ができます。
▼ ESXi ホストから vSAN クラスタへの復旧について
> >未参加のESXiをvSANに復旧させることでVCSAが起動できるようになる可能性があります。
> そもそも、ESXiホスト側からvSANに追加させることは可能なのでしょうか?
復旧可能な条件として重要なのが、もともと vSAN で使っていた SSD などをフォーマットするなど「初期化していない」事が必須です。
vSAN Disk に手を付けていなければ、nkaneda さん記載の
> vSAN Diskを初期化していなければ、復旧できる場合があります。
> 難易度は高いですが、 https://kb.vmware.com/s/article/2150303 の Unicast Agentを確認&再設定したり、
> esxcli vsan cluster join -u [UUID]
などの手順で復旧が可能かもしれません。
まずは、ESXi ② を起動し、MM を解除して vCenter の仮想ディスクが見えるようになるか確認してください。
ESXi ④ で確認した Inaccessible Object の数が減っていれば、ESXi ② の MM 解除でアクセス可能な仮想ディスク (vSAN のオブジェクト)が増えたことを意味します。
詳細にご説明いただき、ありがとうございます。
おかげさまで、無事にvCenterを復活させることができました!ありがとうございました!
無事に復活できたようで何よりです。
差し支えなければどのようなやり方で復旧されたのか教えていただけないでしょうか?
基本的にはnkaneda1さんが記載してくださった、以下の方法を試しました。
コマンド ラインからの vSAN ユニキャスト ネットワークの構成 (2150303) (vmware.com)
まず、esxcli vsan cluster get を1~5号機全てのホストで実行しました。
すると、 1号機は、この時点で既にvSAN外だったので”vSANは無効”という旨のメッセージが正常に表示されましたが、
2号機は、vSANが有効な状態かつ2号機単体でvSANを構成しているという異常な状態でした。
(2号機の"Local Node State"は"MASTER"、”Sub-Cluster Member Count”は「1」)
3~5号機は、いずれも”3,4,5号機でvSANを構成している”という正常な表示がされました。
(3号機の"Local Node State"が"MASTER"、4号機が"BACKUP"、5号機が”AGENT”、”Sub-Cluster Member Count”は「3」)
次に、vSANが有効な2~5号機で、esxcli vsan cluster unicastagent list を実行したところ、
3~5号機では、自分以外の3,4,5号機のエントリが正常に設定されていましたが、2号機は自分以外の1~5号機のエントリが設定されているという異常な状態でした。
そこで、vSANを2~5号機で再構成するため、
まず2号機で、esxcli vsan cluster unicastagent remove -a <Host_VSAN_IP> を実行し、全てのエントリを削除した後、esxcli vsan cluster unicastagent add -t node -u <Host_UUID> -U true -a <Host_VSAN_IP> -p 12321 を実行し、改めて3,4,5号機のエントリを追加しました。
その後、再びesxcli vsan cluster unicastagent list を実行すると、2~5号機で全てのホストで正常なエントリが表示され、2~5号機でvSANを再構成することができました。(2号機の"Local Node State"も"AGENT"に変更、”Sub-Cluster Member Count”は「4」)
しかし、この時点では依然としてVCSAは起動しませんでした。また、esxcli vsan debug object health summary get を実行すると、”Inaccessible Object”は「0」になりましたが、”reduced-availability-with-no-rebuild”が増加していました。
そこで、vSANから外していた1号機も含め、改めてvSANを1~5号機で再構成するため、
1号機で、esxcli vsan cluster join -u [UUID]を実行し、2~5号機のエントリを追加し、vSANに参加させたところ、”reduced-availability-with-no-rebuild”が著しく減少し、無事にVCSAを起動させることができた、という流れです。
詳細に共有ありがとうございます。
復旧対応がキレイに整理され、改めて勉強になりました。ありがとうございます。
復旧できたことに加えて、結果的にトラシューの内容がまとまった良いスレッドになりましたね!