免責事項: これは英文の記事vSAN cluster fails to create virtual machines with error “Cannot complete file creation operation. Failed to place witnesses” after converting stretched cluster to standard single-site clusterの日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事を参照してください。
ストレッチクラスタとして以前に構成された vSAN 環境で、監視 (witness) アプライアンスを削除し標準のシングルサイトクラスタに変換した後、新しい仮想マシンの作成が失敗します。
仮想マシンの作成や配布をした時に以下のエラーメッセージが表示されます:
ファイル作成操作を完了できません。監視の配置に失敗しました。現在、 0 台の使用可能なディスクがありますが、監視ノードでは、さらに 1 台の使用可能なディスクが必要です。オブジェクトの作成に失敗しました。
VMware vSAN 7.x / 8.x / 9.x
この問題は、クラスタ構成をサポートされないまたは不完全な手順を使用して、ストレッチクラスタから標準のシングルサイトクラスタ構成に変更されたために発生しました。
その結果、vSAN ユニキャストエージェント構成に古い監視レコードが残ったため、vSANが存在しないノードに 監視コンポーネントを配置しようとし続けました。
各 ESXi ホスト上の現在のユニキャストエージェントを確認します
SSH で各 ESXi ホストに接続し、以下のコマンドで現在のユニキャストエージェントを確認します,
esxcli vsan cluster unicastagent list
エントリの1つに IsWitness: 1 と表示され、そのアドレスが削除済みの 監視アプライアンスに対応しています。(以下は上記コマンドの部分的な出力です。簡潔にするため、NodeUuid、IsWitness、Supports Unicast、IP Address などの主要な列のみを表示しています。)
NodeUuid IsWitness Supports Unicast IP Address
------------------------------------ --------- ---------------- -----------
<NODE UUID> 0 true <NODE IP>
<NODE UUID> 0 true <NODE IP>
<NODE UUID> 1 true <OLD WITNESS IP> <=== これが古い監視のエントリ
すべてのホストから古い監視のレコードを削除します
esxcli vsan cluster unicastagent remove --addr <OLD WITNESS IP>
<OLD WITNESS IP> を古い監視アプライアンスの IP アドレスに置き換えてください。
IsWitness = 1 とマークされたユニキャストエントリが残っていないことを確認します
esxcli vsan cluster unicastagent list
仮想マシンの作成を再試行します
すべての古い監視エントリが削除されると、vSAN はクラスタメンバーシップを更新し、新しい仮想マシンの作成が正常に完了します。