ESXi

ESXi 6.5から7.0へのアップグレード

サーバーが頑張ると発熱する。Kopanoをアップグレードした後、なんかkopano-searchがずーっとCPUを使い続けている。どうかしていると思うレベルで稼働し続けているのだが、夏の暑さもあいまって熱々になっていた。



広告


発熱を検知してメールで警告してくれる仕組みを作ろうと思ったのだけれども、それはセンサードライバーがなきゃ駄目。
CPUが古すぎて6.7は使えない。NICのドライバがないので7.0も使えない。
ということで、うちでは何も実現できなかったのだけれども、アップグレードについて分かったことをまとめてみる。

環境

ESXi 6.5.0d (Build 5310538) ※ビルド番号からのバージョン確認はこちらでできる。英語版にしか載っていないバージョンがあるので注意。

そもそもはAspire X3950にESXiをインストールして運用していたが、メインPCを作ったタイミングで旧メインPCをサーバーに転用。
MACアドレスを旧メインPCのものに変更して運用している。んー、サステナブル!な環境。

型番Gateway DX4840
CPUIntel core i5 750 (Lynnfield)
Memory20GB (2GBx2+8GBx2)
LANRealtek RTL8111
LAN部分の引用先 http://www.findlaptopdriver.com/specs-gateway-dx4840-11e/

とはいえ、VMwareはこのような構成を全くサポートしていなくて、たまたま動いているに過ぎない。
インストールのためにはISOをカスタマイズする必要がある。

アップグレードで気にしておくこと

CPU

VMware Workstation PlayerでもCPUにはシビア。対応するハードウェアを確認しなければ…と思ったら、当然だがサーバー用ではないこのCPUについての言及がない。そこで、ESXiの上で作った仮想マシンにESXiをインストールして確認してみる。

仮想マシンはCPUx2、メモリ4GB、HDD40GB、VMware ESXi 6.7 U3のISOを接続してマシンを作成。
インストールを進めていくと、CPUがサポートされていない表示がされた。これは他のブログ等でも言及されているのと同じだった。

VMB: 578:
Unsupported CPU: Intel family 0x06, model 0x1e, stepping 0x5
Intel(R) Core(TM) i5 CPU 750 @ 2.67GHz
See http://www.vmware.com/resources/compatibility

これはブートオプションを編集してスキップできるようになっている。
vSoliloquy / Nested ESXi のテンプレート作りに必要な設定と解説

具体的には Loading ESXi Installer の画面が表示されたら、SHIFT+Oを押して、allowLegacyCPU=trueを追加する。

<ENTER: Apply options and boot>
> cdromBoot runweasel allowLegacyCPU=true

後述するが、6.7ではこれでもインストールはできない。

NICドライバ

このシステムに標準的なISOを使ってインストールをしようとしても、NICドライバがなくてインストーラー自体が動かない。
今まで気軽にアップグレードできなかった理由がこれ。

確認してみたところ、RealTek製のNICについて6.7までは対応している模様。
V-Front.de / List of currently available ESXi packagesNet55-r8168

ただ、7.0については対応していないとのことだった。

アップグレードパス

アップグレードパスが調べられるページがあった。
ここで、VMware vSphere Hypervisor (ESXi)を選択する。
vmware / Product Interperability Matrix → Upgrade Path

これでいくと、6.5U2→7.0はできそうだが、6.5→7.0はできないようだ。

アップグレード方法

アップグレード用のzipを落としてきてコマンド実行…という方法しかないのかと思っていたが、ISOからの起動でも途中でアップグレードするのかインストールするのか聞いてくれることが分かった。

結局どちらの方法を使ったとしても、インストーラー自体は同じものが動いているようだ。

インストールの際にdatastoreを残すかどうか聞いてくれるので、いざとなったらインストールしなおす手もありそうだ。

ライセンスの確認

いつも通りメニューからはたどり着けず、検索結果からVMwareのページに到達。※URLの末尾を6→7に変更すると、メジャーバージョンが上がる。
ログインして各バージョンのライセンスを確認しておく。

カスタマイズに使ったもの

VMware vSphere PowerCLI

インストール

PowerCLIは、ESXiを管理するコマンド群、ということの模様。
Think IT / PowerCLIを使った仮想化の自動運用

PowerCLIがESXiのどのバージョンに対応しているのか確認。
vmware / Product Interperability Matrix → Interoperability
ここでVMware PowerCLIを選択し、Add Platform/SolutionでVMware vSphere Hypervisor (ESXi)を選択してCHECK INTEROPERABILITYをクリックする。

これから取り扱う6.5→7.0U2については12.0.0~12.3.0が対応しており、リポジトリからインストールができるらしかった。
vmware {code} / VMware PowerCLI

PowerShellを管理者で開き、以下を実行。

PS > Install-Module -Name VMware.PowerCLI

続行するには NuGet プロバイダーが必要です
PowerShellGet で NuGet ベースのリポジトリを操作するには、'2.8.5.201' 以降のバージョンの NuGet
プロバイダーが必要です。NuGet プロバイダーは 'C:\Program Files\PackageManagement\ProviderAssemblies' または
'C:\Users\yosh\AppData\Local\PackageManagement\ProviderAssemblies' に配置する必要があります。'Install-PackageProvider
-Name NuGet -MinimumVersion 2.8.5.201 -Force' を実行して NuGet プロバイダーをインストールすることもできます。今すぐ
PowerShellGet で NuGet プロバイダーをインストールしてインポートしますか?
[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): [Enter]

信頼されていないリポジトリ
信頼されていないリポジトリからモジュールをインストールしようとしています。このリポジトリを信頼する場合は、Set-PSReposit
ory コマンドレットを実行して、リポジトリの InstallationPolicy の値を変更してください。'PSGallery'
からモジュールをインストールしますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): Y[Enter]

インストール結果を以下のように確認。

PS > Get-DeployCommand

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           Apply-ESXImageProfile                              7.0.2.1... VMware.DeployAutomation
Alias           Get-DeployCommand                                  7.0.2.1... VMware.DeployAutomation
Function        Get-AutoDeployCommand                              7.0.2.1... VMware.DeployAutomation
Function        Get-DeployMachineIdentity                          7.0.2.1... VMware.DeployAutomation
Function        Set-DeployMachineIdentity                          7.0.2.1... VMware.DeployAutomation
Cmdlet          Add-CustomCertificate                              7.0.2.1... VMware.DeployAutomation
Cmdlet          Add-DeployRule                                     7.0.2.1... VMware.DeployAutomation
… 使用できそうなコマンドがズラッとならぶ。

PS > Get-Module

ModuleType Version    Name                                ExportedCommands
---------- -------    ----                                ----------------
…
Script     7.0.2.1... VMware.DeployAutomation             {Add-CustomCertificate, Add-DeployRule, Add-ProxyServer, A...
Script     7.0.2.1... VMware.ImageBuilder                 {Add-EsxSoftwareDepot, Add-EsxSoftwarePackage, Compare-Esx...
Script     7.0.2.1... VMware.Vim
Script     12.3.0.... VMware.VimAutomation.Cis.Core       {Connect-CisServer, Disconnect-CisServer, Get-CisService}
Script     12.3.0.... VMware.VimAutomation.Common         {Get-PowerCLIContext, Get-Task, New-OAuthSecurityContext, ...
Script     12.3.0.... VMware.VimAutomation.Core           {Add-PassthroughDevice, Add-VirtualSwitchPhysicalNetworkAd...
Script     12.2.0.... VMware.VimAutomation.Sdk            {Get-ErrorReport, EnableParameterCompleters, Get-InstallPa...

アンインストール

過去にESXiをインストールしようとして、多分msi?を使ってPowerCLIをインストールしていた。
それを忘れて新しいのをインストールしてしまったため、整合性に不安が残った。

コントロールパネルから過去のインストールを削除した上で、以下のコマンドで完全に消し去った。

PS > (Get-Module VMware.PowerCLI -ListAvailable).RequiredModules | Uninstall-Module -Force
PS > Get-Module VMware.PowerCLI -ListAvailable | Uninstall-Module -Force

※エラーが出たりするけれども、実際には消えているようだ。

その後、丁寧にモジュールを削除しているらしいスクリプトを発見。
焦げlog / VMware PowerCLI 12.0.0 がリリースされました

その上でインストールした結果を上で書いている。

ESXi-Customizer-PS

VMware Front Experienceが提供するImage Builderのラッパースクリプトで、PowerCLIが分かっていなくても、見よう見まねでカスタムISOができてしまう。PowerCLIでISOを作ってみようかと思ったけれども、なかなかに難しい。

本家サイトの更新は止まっている?ような気がする。最新のソースコード(ps1形式)がGitHubにあるので、これをダウンロードしてくる。ps1形式はテキストファイル、コマンドとして起動しやすい場所に置いておけば良い。
GitHub / VFrontDe / ESXi-Customizer-PS

コマンドのヘルプ

ヘルプを表示させてなんちゃって翻訳してみた。

PS > .\ESXi-Customizer-PS.ps1 -help

This is ESXi-Customizer-PS Version 2.8.1 (visit https://ESXi-Customizer-PS.v-front.de for more information!)

Usage:
  ESXi-Customizer-PS [-help] |  [-izip <bundle> [-update]] [-sip] [-v70|-v67|-v65|-v60|-v55|-v51|-v50]
                                [-ozip] [-pkgDir <dir>[,...]] [-outDir <dir>] [-vft] [-dpt depot1[,...]]
                                [-load vib1[,...]] [-remove vib1[,...]] [-log <file>] [-ipname <name>]
                                [-ipdesc <desc>] [-ipvendor <vendor>] [-nsc] [-test]

Optional parameters:
   -help              : このヘルプを表示します。
   -izip <bundle>     : オンラインデポの代わりに、VMwareオフラインバンドル<bundle>を使います。
   -update            : -izipを付けた場合のみ、VMwareオンラインデポからESXiパッチでローカルバンドルを
                        更新し、これと一致するESXiバージョン選択スイッチを組み合わせます。
   -pzip              : -updateと一緒に使うと、オンラインデポの代わりにオフラインパッチバンドルを使います。
   -pkgDir <dir>[,...]: 追加するオフラインバンドルやVIBファイルのローカルディレクトリ(あれば、デフォルトなし)。
   -ozip              : インストールISOの代わりにオフラインバンドルを出力します。
   -outDir <dir>      : カスタマイズされたISO、またはオフラインバンドルを格納するディレクトリ(デフォルトは
                        script ディレクトリです。指定すると、ログファイルもここに移動します)。
   -vft               : V-Frontオンラインデポに接続します。
   -dpt depot1[,...]  : URLで追加のオンラインデポに接続したり、ファイル名でローカルオフラインバンドルに接続したりします。
   -load vib1[,...]   : 接続されたデポやオフラインバンドルから追加のパッケージをロードします。
   -remove vib1[,...] : カスタムイメージプロファイルから名前付きVIBパッケージを削除します。
   -sip               : 現在のリストからイメージプロファイルを選択します。
                        (デフォルト = 最新の標準プロファイルを自動選択)
   -v70 |
   -v67 | -v65 | -v60 |
   -v55 | -v51 | -v50 : ESXi 7.0/6.7/6.5/6.0/5.5/5.1/5.0 のいずれかのイメージプロファイルを入力として使用し、他を無視します。
   -nsc               : エクスポート時に署名を確認しません(-NoSignatureCheck)。
   -log <file>        : カスタムログファイル<file>を使います。
   -ipname <name>
   -ipdesc <desc>
   -ipvendor <vendor> : カスタマイズされたイメージプロファイルの名前、説明、ベンダーを提供します
                        (デフォルトではクローンされた入力イメージプロファイルから得られます)。
   -test              : パッケージのダウンロードとイメージのビルドをしません(テスト用です)。

コマンドの実行

このコマンドを実行すると10054のエラーが発生する場合がある。

PS > .\ESXi-Customizer-PS.ps1 -v67 -vft -load net55-r8168
…
Exporting the Imageprofile to 'D:\hoge hoge\ESXi-6.7.0-20210304001-standard-customized.iso'. Please be patient ...

An unexpected error occurred:
[WinError 10054] ?????????????????????????????? ????????????????????????????????????????????????

If requesting support please be sure to include the log file
   C:\hoge hoge\ESXi-Customizer-PS-18652.log

VMwareのサイトがTLS1.2を要求するようになったことの影響とのこと。
Pandora Pocket / ESXi-Customizer-PSが[WinError 10054]エラーを吐くときの覚書(PowerShellでTLS1.2を有効化する方法)

また、開発元でも議論されていたらしく、一旦オフラインバンドルを作ってから、ISOを書き出せば良い、といったことも書かれていたりする。
GitHub / “[WinError 10054] An existing connection was forcibly closed by the remote host” during “Exporting the Imageprofile”

ここでは、以下を実行して一旦再起動する、を試した。PowerShell画面を閉じて作り直しても上手くいったりすることがある。

PS > [Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12

安定しないが、このように上手くいく場合がある。

PS > .\ESXi-Customizer-PS.ps1 -v67 -vft -load net55-r8168

This is ESXi-Customizer-PS Version 2.8.1 (visit https://ESXi-Customizer-PS.v-front.de for more information!)
(Call with -help for instructions)

Logging to C:\hoge hoge\ESXi-Customizer-PS-15784.log ...

Running with PowerShell version 5.1 and VMware PowerCLI version .. build

Connecting the VMware ESXi Software depot ... [OK]

Connecting the V-Front Online depot ... [OK]

Getting Imageprofiles, please wait ... [OK]

Using Imageprofile ESXi-6.7.0-20210304001-standard ...
(Dated 03/04/2021 10:16:14, AcceptanceLevel: PartnerSupported,
Updates ESXi 6.7 Image Profile-ESXi-6.7.0-20210304001-standard)

Load additional VIBs from Online depots ...
   Add VIB net55-r8168 8.045a-napi [New AcceptanceLevel: CommunitySupported] [OK, added]

Exporting the Imageprofile to 'D:\hoge hoge\ESXi-6.7.0-20210304001-standard-customized.iso'. Please be patient ...

All done.

日付からで確認できなかったのだが、起動してみたところBuild 17700523で、これはESXi 6.7 P05だった。

中で行われていること

このスクリプトで何が行われているのか、ソースを眺めてコマンドを2つ実行し、最終的にISOを書き出すタイミングのコマンドを再現してみた。

PS > Add-EsxSoftwaredepot https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml

Depot Url
---------
https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml

PS > Get-EsxImageProfile

Name                           Vendor          Last Modified   Acceptance Level
----                           ------          -------------   ----------------
ESXi-5.0.0-20110904001-notools VMware, Inc.    2011/08/26 1... PartnerSupported
ESXi-5.0.0-20110904001-stan... VMware, Inc.    2011/08/26 1... PartnerSupported
ESXi-5.0.0-20111104001-no-t... VMware, Inc.    2011/10/13 1... PartnerSupported
…
ESXi-6.5.0-20210704001-no-t... VMware, Inc.    2021/06/25 1... PartnerSupported
ESXi-6.5.0-20210704001-stan... VMware, Inc.    2021/06/25 1... PartnerSupported
…
ESXi-6.7.0-20210304001-no-t... VMware, Inc.    2021/03/04 1... PartnerSupported
ESXi-6.7.0-20210304001-stan... VMware, Inc.    2021/03/04 1... PartnerSupported
…
ESXi-7.0bs-16321839-no-tools   VMware, Inc.    2020/06/02 5... PartnerSupported
ESXi-7.0bs-16321839-standard   VMware, Inc.    2020/06/02 5... PartnerSupported

PS > Export-EsxImageprofile -Imageprofile 'ESXi-6.7.0-2021…' + ESXi-6.7.0-2021….iso -ExportToISO

なるほど、-sipオプションは、こうして取り出したイメージプロファイル達から、どれを使うのかを選択させてくれるということのようだ。

完全に理解できているわけではないが、ライセンスがあるならダウンロードURLを必死で探す必要はないんだなと気付く。
デポはVMwareが提供しているものを使っていて、その中から6.7の最新のプロファイルを使おうとしていた。

知っておくことは大事だなー。

Nested ESXi

ESXiに子ESXiを作ることをこのように呼ぶらしい。
ウチの場合はアップグレードでCPUが問題になるので、子ESXiでテストができる。

子ESXiを動かす仮想マシンを作るときに重要なのが、VMタイプを正しく選択しておくことだった。

いままでVMを作成するにあたって、OSはある程度合わせておく程度でどうにかなったのだが、ESXiは含まれているドライバが限られているので、ちゃんとした選択をしておく必要があった。

間違って作ってしまい、後から修正する場合は、このあたりをいじれば良さそうだった。

項目設定値
SCSI コントローラVMware Paravirtual
ネットワークアダプタ アダプタタイプVMXNET 3

アップグレード

今回の環境について、アップグレードが可能なのかどうかを整理するとこうなる。

ESXiバージョンCPUNIC
RTL8111
NIC(追加)
Intel 82574L
備考
6.5(無印)現在、この状態で運用中。NICはサードパーティ製。
6.5U3無印と同じ条件で運用が可能。
6.7U3×CPU非対応のため、インストーラーをバイナリレベルで変更する必要あり。
7.0U2a×CPU非対応は回避が可能、NICはサードパーティの提供がなく多分無理。

元々の状態だと、6.5U3より上へのアップグレードはできない。
NICを追加することで7.0を使うことができるようになる。

6.5.0d → 6.5U3

このアップグレードはCPUの問題がなかったので、何の問題もなく実施できた。

PS > .\ESXi-Customizer-PS.ps1 -v65 -vft -load net55-r8168
…
Exporting the Imageprofile to 'D:\hoge hoge\ESXi-6.5.0-20210704001-standard-customized.iso'. Please be patient ...

※実際のバージョンはESXi 6.5 EP 24で、この日の最新版になっていた。

ISOができたので、Nested ESXiでアップグレードのテスト。
その最中にCPUのことは警告されている。安定して動いていたので忘れてしまっていた。

Error(s)/Warning(s) Found During System Scan

The system encountered the following warning(s).

Warning(s)
<CPU_SUPPORT WARNING: The CPU in this host may not be supported in future ESXi release. Please plan accordingly.>
<HARDWARE_VIRTUALIZATION WARNING: Hardware Virtualization is not a feature of the CPU, or is not enabled in the BIOS>

当然だがアップグレードは上手くいったので、ISOをCD-Rに焼き込んで本番環境をアップグレードした。
問題なく動いていて、いい感じ。

6.5U3 → 6.7U3(失敗)

アップグレードの方法を2種類試したものの、インストーラーの中で行われるチェックを止められない。

結局はここに書かれているように、逆アセンブラ・再パッケージ化的なことでもやらないことには、前に進まない。
TECH ADVENTURES / Allowing Unsupported CPU’s on ESXI 6.7

ISOからのアップグレード

ISOを作成してNested ESXiでテストする。

PS > .\ESXi-Customizer-PS.ps1 -v67 -vft -load net55-r8168
…
Exporting the Imageprofile to 'D:\hoge hoge\ESXi-6.7.0-20210304001-standard-customized.iso'. Please be patient ...

CPUが未対応、ブートオプションで回避して先に進めるが、アップグレードでエラーが発生する。

Error(s)/Warning(s) Found During System Scan

The system encountered the following warning(s) and error(s)

Error(s)
<CPU_SUPPORT ERROR: The CPU in this host is not supported by ESXi 6.7.0. Please refer to the VMware Compatibility Guide (VCG) for the list of supported CPUs.>
このホストのCPUはESXi 6.7.0ではサポートされていません。サポートされているCPUのリストについては、VMware Compatibility Guide (VCG)を参照してください。

DeepL先生の翻訳結果

インストールならどうだ!と試したが、エラーの他に次のワーニングが追加され、やっぱり先に進めない。

Warning(s)
<HARDWARE_VIRTUALIZATION WARNING: Hardware Virtualization is not a feature of the CPU, or is not enabled in the BIOS>
CPUがハードウェア仮想化の機能を持っていない、またはBIOSで有効になっていません。

これは駄目だ。

オフラインバンドルからのアップグレード

オフラインバンドルを作成する。
こんなことなら、先にオフラインバンドルを作っておけば良かったかも…オフラインバンドルからISOは作れるが、ISOからオフラインバンドルが作れないので…。

PS > .\ESXi-Customizer-PS.ps1 -v67 -vft -load net55-r8168 -ozip
…
Exporting the Imageprofile to 'D:\hoge hoge\ESXi-6.7.0-20210304001-standard-customized.zip'. Please be patient ...

できあがったzipファイルをデータストアにアップロードし、SSHで接続して適用。

# esxcli software profile update -d /vmfs/volumes/datastore1/ESXi-6.7.0-20210304001-standard-customized.zip -p ESXi-6.7.0-20210304001-standard-customized
Update Result
   Message: The update completed successfully, but the system needs to be rebooted for the changes to be effective.
   Reboot Required: true
   VIBs Installed: VMW_bootbank_ata-libata-92_3.00.9.2-16vmw.670.0.0.8169922, VMW_bootbank_ata-pata-amd_0.3.10-3vmw.670.
…

アップグレード成功、再起動してくれ、といっているが、このまま単純に再起動するとVMB: 578が発生するので、ブートオプションを変更して回避。
/bootbank/boot.cfg

kernelopt=… の最後に allowLegacyCPU=true を追加

再起動すると、インストーラーが動作し始めたが、途中でCPU_SUPPORT ERRORが発生したので、インストールを中断。

再起動すると6.5に戻っていて、WebUIが503を起こしていた。
これは、F2 → Restart Management Networkで回復。

このことから、結局インストーラーの中にCPUチェックが組み込まれており、これを回避するためにはバイナリの編集が必要で…となって、このバージョンは諦めた。

6.5U3 → 7.0U2a

これはまだいける!ということで、

  • CPUについては allowLegacyCPU=true で回避。
  • NICはオンボードのRTL8111を諦めて、ESXi7.0で使えるNICを購入。

というシナリオでNested ESXiで確かめていく。

ISOの作成

オフラインバンドルを一度作っておけば、それをベースに色々できそうなので、オフラインバンドル→カスタムISOの順で作成してみる。

PS > .\ESXi-Customizer-PS.ps1 -v70 -ozip
PS > .\ESXi-Customizer-PS.ps1 -izip ESXi-7.0U2a-17867351-standard.zip
…
Exporting the Imageprofile to 'D:\hoge hoge\ESXi-7.0U2a-17867351-standard-customized.iso'. Please be patient ...

※本日の最新はビルド番号が17867351であった。オフラインバンドルファイルの名前は、最初に作られたzipファイルを指定する。

ISOの再カスタム

ブートローダーは起動時のオプションでどうにか突破できるのだが、インストーラーはそれでは回避ができない。
スクリプトでallowLegacyCPUを探しているみたいなんだけれども、boot.cfgから直接取っているらしい。

Ubuntu 20.04でISOの中身を取り出して、必要な編集をした後に、mkisofsで起動イメージにしようと考えた。
そこから紆余曲折して本家が提供してくれているISOの作り方を知ることになった。
hanaokaiwa’s blog / KNOPPIX 7.7.1 DVDの起動オプションを変更する

ISOからファイルを抽出して編集

手元のWindows 10でVMware Player→Ubuntu 20.04と起動して、ISOをドライブにセット。
それをUbuntuからマウント。

$ sudo mount /dev/sr0 /cdrom
mount: /cdrom: WARNING: device write-protected, mounted read-only.

※ワーニングが出てあまりかっこよくないけど…まぁ、読み取り専用には違いないからいいか。

ファイルを作業ディレクトリに抽出して、ISOをアンマウント。

$ mkdir vmware
$ cp -ar /cdrom/* ./vmware
$ sudo umount /cdrom

抽出したファイルの中にあるboot.cfgを編集する。ファイルは2つあったので、2つとも修正。
vDAN / How to fix? The CPU in this host is not supported by ESXi 7.0.0. -> allowLegacyCPU=True

vmware/boot.cfg & vmware/efi/boot/boot.cfg

…
kernelopt=runweasel cdromBoot allowLegacyCPU=true

※赤文字を追記。CDから持ってきているのでReadOnlyだった…強制上書き。

ISOの作成

ISOを作成するため、genisoimageをインストール。

$ sudo apt install genisoimage

ISO作成時に使用するコマンドはこちらで教えてくれている。
vmware docs / カスタムのインストールまたはアップグレードスクリプトを含む、インストーラ ISO イメージの作成

$ sudo genisoimage -relaxed-filenames -J -R -o ./esxi.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e efiboot.img -no-emul-boot vmware/

できあがったesxi.isoをscp等を使って取り出した。

ISOからのアップグレード

esxi.isoから起動すると、ブートローダーのオプションがちゃんと反映されていて、何も指定せずともインストーラーが起動する。

しかし、アップグレードでエラーが発生する。

Error(s)

<MISSING_DEPENDENCY_VIBS ERROR: Found=[‘Realtek_bootbank_net55-r8168_8.045a-napi’,’Realtek_bootbank_net55-r8168_8.045a-napi’] Expected=[] These vibs on the host are missing dependency if continue to upgrade. Remove these vibs before upgrade or use Image Builder to resolve this missing dependency issue.>
発見したこと=[‘Realtek_bootbank_net55-r8168_8.045a-napi’,’Realtek_bootbank_net55-r8168_8.045a-napi’]
期待されること=[]
このままアップグレードすると、ホスト上のこれらのvibsは依存関係がなくなってしまいます。アップグレードの前にこれらのvibsを削除するか、Image Builderを使用してこの依存関係の欠如の問題を解決してください。

これは、インストール済みのRealtekのNICのドライバーが7.0で動かないよ、といっている。仕方がない…インストール前に削除するか…。
再起動してESXi 6.5にSSHで接続し、名前を確認して削除。
※本番環境には他にNICがなく、これを削除した途端に丸腰状態で起動しなくなるだろう。やるとしたらESXiが標準で認識するNICを買ってから。

# esxcli software vib list
Name                           Version                               Vendor   Acceptance Level    Install Date
-----------------------------  ------------------------------------  -------  ------------------  ------------
net55-r8168                    8.045a-napi                           Realtek  CommunitySupported  2021-08-09
…

# esxcli software vib remove -n net55-r8168
Removal Result
   Message: The update completed successfully, but the system needs to be rebooted for the changes to be effective.
   Reboot Required: true
   VIBs Installed:
   VIBs Removed: Realtek_bootbank_net55-r8168_8.045a-napi
   VIBs Skipped:

Nested ESXiなので、このドライバは使っていなかったので、再起動しても問題なく動作している。

気を取り直してアップグレード再開。
途中でCPUに関する警告が表示される。ISOの再カスタムをするまではErrorになっていた項目。Warningに変わったことで、インストールを続行させることができるようになった。

Error(s)/Warning(s) Found During System Scan

The system encountered the following warning(s) and error(s)

Warning(s)
<CPU_SUPPORT WORNING: The CPU in this host is not supported by ESXi 7.0.2. Please refer to the VMware Compatibility Guide (VCG) for the list of supported CPUs.>

インストールが終了して再起動するときには注意。
次のエラー表示がされると電源を落とさざるを得ない → No hypervisor found.となって、Recoveryも選べず、再インストールしかできなくなるので厄介。
ESXi 6.5(無印)の時にNested ESXiで試したときには問題なかったような気がするが…どうにも困る。

VMB: 634:
Unsupported CPU: Intel family 0x06, model 0x1e, stepping 0x5
Intel(R) Core(TM) i5 CPU 750 @ 2.67GHz
See http://www.vmware.com/resources/compatibility

※番号が578から634に変わっているが、結局6.7の時と同じ問題が発生している。

この表示がされないように、再起動したら5秒以内に確実に起動オプションを入力するモードに入り(SHIFT+O)、以下を入力する。

<ENTER: Apply options and boot>
> cdromBoot runweasel allowLegacyCPU=true

そこで、ブート時にオプション allowLegacyCPU=true を追加して起動する。

毎回こんな綱渡りはできないので、boot.cfgを編集。どこにあるのか…ESXiでSSHを有効化して中に入ってみる。

$ ssh root@<ip address>
# cd bootbank

bootbankディレクトリにboot.cfgありました。
/bootbank/boot.cfg

…
kernelopt=autoPartition=FALSE allowLegacyCPU=true

変更結果を保存後、ESXiを再起動して様子を確認したが、boot.cfgに設定したオプションが働いて問題なく起動した。

起こったこと

USBから起動できない

本番をやってみて「あっ!」と思ったのは、そう、このPCはUSBフラッシュメモリーから起動できないんだった。
一応、USBからの起動にも対応しているんだけれども、それは外付けのCD-ROMドライブとかを付けた場合であって、USBフラッシュメモリーからは起動ができないのだった。

慌ててCD-ROMに焼き付けて実行。

ESXi7.0に対応していないドライバ

ESXi7.0に対応していないドライバを組み込んで運用した結果、7.0インストール時にエラーが発生して続行ができなくなった。
よくよく考えてみるとISOを作っているときに何か言われていたな。

PS > .\ESXi-Customizer-PS.ps1 -v70 -ozip
PS > .\ESXi-Customizer-PS.ps1 -izip ESXi-7.0U2a-17867351-standard.zip -vft -load net55-r8168

警告: The image profile fails validation.  The ISO / Offline Bundle will still be generated but may contain errors and may not boot or be functional.  Errors:
警告:   VIB Realtek_bootbank_net55-r8168_8.045a-napi requires vmkapi_2_2_0_0, but the requirement cannot be satisfied within the ImageProfile.
警告:   VIB Realtek_bootbank_net55-r8168_8.045a-napi requires com.vmware.driverAPI-9.2.2.0, but the requirement cannot be satisfied within the ImageProfile.

この時点で警告してくれている。うーん、深刻。

警告: イメージプロファイルの検証に失敗しました。 ISO/オフラインバンドルは生成されますが、エラーが含まれていたり、起動しなかったり、機能しなかったりします。これらのエラーです。
警告: VIB Realtek_bootbank_net55-r8168_8.045a-napiにはvmkapi_2_2_0_0が必要ですが、ImageProfile内でその要件を満たすことができません。
警告: VIB Realtek_bootbank_net55-r8168_8.045a-napiにはcom.vmware.driverAPI-9.2.2.0が必要ですが、ImageProfile内ではその要件を満たすことができません。

DeepL先生の翻訳

こうなった場合、最新版のドライバを用意する必要がある。
vmware customer connect / ESXi 7.0 のインストールまたはアップグレード中に vmkapi 依存関係エラーが発生する (78389)

今回の場合、既存のバージョンにこのドライバがインストールされており、アップグレードするならそれを削除しておく必要があることが分かった。

Nested ESXiを作るための仮想マシン設定

仮想マシンを作成するときの選択は重要なんだなぁと気付いた出来事。
修正できないことはないが、最初からちゃんと設定しておけば、余計な問題に時間を取られることもない。

ネットワークの問題

Nested ESXiのインストールなのに、ネットワークアダプタが認識できない。

No Network Adapters

No network adapters were detected. Either no network adapters are physically connected to the system, or a suitable driver could not be located. A third party driver may be required.
Ensure that there is at least one network adapter physically connected to the system before attempting installation. If the problem persists, consult the VMware Knowledge Base.

ネットワークアダプタが検出されませんでした。ネットワークアダプターが物理的にシステムに接続されていないか、適切なドライバーが見つからなかったかのいずれかです。サードパーティ製のドライバが必要になる場合があります。
インストールを試みる前に、少なくとも1つのネットワークアダプターが物理的にシステムに接続されていることを確認してください。それでも問題が解決しない場合は、VMware Knowledge Baseを参照してください。

DeepL先生の翻訳結果

仮想マシンを作成した際のネットワークアダプタは、LinuxデフォルトのE1000だった。
vmware customer connect / 仮想マシンのネットワーク アダプタを選択する (1001805)

これを E1000e に変更したところ、インストールが先に進んだ。

本来、Nested ESXi用にマシンを作った場合、選択されるネットワークアダプタはVMXNET 3であった。

ストレージの問題

次に発生したのはストレージが見えない問題。仮想マシンを作成した際のハードディスクはSCSIだった。
これはSATAに変更すると認識するようだった。

なお、

  • SCSIで6.5をインストール
  • インストーラーが認識しないので、SATAに変更
  • 6.7U2aにアップグレード

という無茶を実施したところ、ブート直後に黒い画面から進まなくなった。
以下のメッセージが表示されている…

VMware Hypervisor Recovery

no hypervisor found

これらの復旧には、ESXiをインストールして、データストアを取り出す程度が関の山ではないかと思われる。
(まぁ、復旧できないよりはマジだけれども…)

本来、Nested ESXi用にマシンを作った場合、選択されるSCSIコントローラーはVMware Paravirtualであった。

VMware Tools は、vSphere で管理されていません

これが色々と数字が取り出せない原因なのか…英語ではVMware Tools is not managed by vSphereという表記。
原因はopen-vm-toolsを使っているから、とのこと。
vmware technology network / ESXI 6.7 VM Tools not managed by vSphere

初期状態(問題の回復)

Ubuntu 20.04を新規にインストールしてみたところ、5秒ごとにエラーがガンガンログ出力されている。

/var/log/syslog

Aug 11 23:48:46 testvmtl multipathd[657]: sda: add missing path
Aug 11 23:48:46 testvmtl multipathd[657]: sda: failed to get udev uid: Invalid argument
Aug 11 23:48:46 testvmtl multipathd[657]: sda: failed to get sysfs uid: Invalid argument
Aug 11 23:48:46 testvmtl multipathd[657]: sda: failed to get sgio uid: No such file or directory
Aug 11 23:48:51 testvmtl multipathd[657]: sda: add missing path
Aug 11 23:48:51 testvmtl multipathd[657]: sda: failed to get udev uid: Invalid argument
Aug 11 23:48:51 testvmtl multipathd[657]: sda: failed to get sysfs uid: Invalid argument
Aug 11 23:48:51 testvmtl multipathd[657]: sda: failed to get sgio uid: No such file or directory

ESXi 6.5(無印)では一度も発生したことがない問題…これはアップグレードの弊害と言えそう。
仮想化通信 / VMware vSphere環境に立てたUbuntu Server 20.04でmultipathdのログが荒ぶる場合の対処

仮想マシンオプション→詳細→設定の編集…からパラメータを追加。
disk.EnableUUID = TRUE

サーバーを一度シャットダウンし、改めて起動すると問題は解消していた。

初期状態

改めて…Ubuntu 20.04をインストールしてみたところ、open-vm-toolsが動いている。

$ systemctl status open-vm-tools.service
● open-vm-tools.service - Service for virtual machines hosted on VMware
     Loaded: loaded (/lib/systemd/system/open-vm-tools.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2021-08-11 23:45:27 UTC; 54s ago
       Docs: http://open-vm-tools.sourceforge.net/about.php
   Main PID: 698 (vmtoolsd)
      Tasks: 2 (limit: 2279)
     Memory: 4.2M
     CGroup: /system.slice/open-vm-tools.service
             mq698 /usr/bin/vmtoolsd

Aug 11 23:45:27 testvmtl systemd[1]: Started Service for virtual machines hosted on VMware.

そりゃ、意識しないな。

VMware Toolsのインストール(非推奨)

インストールしていく。仮想マシンの [アクション] → [ゲストOS] → [VMware Tools のインストール] を選択。
元々入っているopen-vm-toolsのアンインストールは、インストールスクリプトで自動的に行われる。

$ sudo mount /dev/sr0 /cdrom
$ sudo cp /cdrom/VMwareTools-10.3.23-17030940.tar.gz /tmp
$ sudo umount /cdrom

$ cd /tmp
$ sudo tar -zxvf VMwareTools-10.3.23-17030940.tar.gz
$ cd vmware-tools-distrib/

事前にアンインストールしておかないと、open-vm-toolsの上に入れてもただの無駄だよ、といわれてしまう。
設定もすべて消すのでremoveではなくpurgeでアンインストールし、インストールを開始する。

$ sudo apt purge open-vm-tools
$ sudo ./vmware-install.pl
open-vm-tools packages are available from the OS vendor and VMware recommends
using open-vm-tools packages. See http://kb.vmware.com/kb/2073803 for more
information.
Do you still want to proceed with this installation? [no] yes[enter]

良いことは何もないけど、インストールを続行するのか?と聞かれる。続行してみる。

Creating a new VMware Tools installer database using the tar4 format.

Installing VMware Tools.

In which directory do you want to install the binary files?
[/usr/bin] [enter]

What is the directory that contains the init directories (rc0.d/ to rc6.d/)?
[/etc] [enter]

What is the directory that contains the init scripts?
[/etc/init.d] [enter]

In which directory do you want to install the daemon files?
[/usr/sbin] [enter]

The path "/usr/lib/vmware-tools" does not exist currently. This program is
going to create it, including needed parent directories. Is this what you want?
[yes]
 [enter]

In which directory do you want to install the library files?
[/usr/lib/vmware-tools] [enter]

The path "/usr/share/doc/vmware-tools" does not exist currently. This program
is going to create it, including needed parent directories. Is this what you
want? [yes] [enter]

In which directory do you want to install the documentation files?
[/usr/share/doc/vmware-tools] [enter]

Before running VMware Tools for the first time, you need to configure it by
invoking the following command: "/usr/bin/vmware-config-tools.pl". Do you want
this program to invoke the command for you now? [yes] [enter]

… ここでconfig toolsが走行。

The VMware Host-Guest Filesystem allows for shared folders between the host OS
and the guest OS in a Fusion or Workstation virtual environment.  Do you wish
to enable this feature? [no] [enter] ※ホストとゲストの間でフォルダ共有するときには yes

The vmblock enables dragging or copying files between host and guest in a
Fusion or Workstation virtual environment.  Do you wish to enable this feature?
[no] [enter] ※ホストとゲストの間でファイルのドラッグやコピーをするときには yes

Do you want to enable Guest Authentication (vgauth)? [yes] [enter]

さて、ESXiで見てみると、「VMware Tools はインストールされていません。」と表示されている。
再起動してみる。

$ sudo reboot

これで認識した。表示は
 VMware Tools のバージョンは準拠しています。
に変わった。

でも、これ以外の変化はなかった。

センサーデーターがないこと

センサーデーターがない。原因はこれに関係するであろうsfcbd-watchdogが起動していないから?

このシステムには IPMI 機能がありません。センサー データを取得できるようにするには、ドライバをインストールしなければならない可能性があります
This system has no IPMI capabilities, you may need to install a driver to enable sensor data to be retrieved.

これへの対応について説明してくれている記事があった。
magander.se / ESXi 6.5 Service sfcbd-watchdog Not Running

書かれているのと同じ状態であることを確認。

[root@ESXi:~] esxcli system wbem get
   Authorization Model: password
   Enabled: false
   Loglevel: warning
   Port: 5989
   WSManagement Service: true

同じ状態だったので、これを有効化して、再度確認。

[root@ESXi:~] esxcli system wbem set --enable true

[root@ESXi:~] esxcli system wbem get
   Authorization Model: password
   Enabled: true
   Loglevel: warning
   Port: 5989
   WSManagement Service: true

これだけで起動した。

[root@ESXi:~] /etc/init.d/sfcbd-watchdog status
sfcbd is running

このあと15分ほどでハードウェアのタブを更新すると表示される…とあったけれども、全然表示されない。
今まではセンサー読み取りのためのサービスが動いていなかったのだが、今回はそれが動いていてもセンサードライバがないということらしい。

さいごに

割と全開で色々と探してみたけれども、結局温度センサーから情報を取ることはできない結果に終わった。
分かっている人ならできることなのかもしれないが…んー、やり方を見つけられなかった。

とはいえ、分かったこともあるので、宅内で動いているサーバーをESXi 7.0U2aにアップグレードしてみようと考えた。
そのために、Intel 82574Lを搭載したNICを買ってみた。

アップグレード前は2つ → アップグレード後は1つ、IPアドレスがちゃんとしていないと色々困る、という状況。
時間を選んでこそっとやってみるかな。

コメントはこちらから お気軽にどうぞ ~ 投稿に関するご意見・感想・他