ESXi 7.0U3d と RAM disk と vibdownload

Nested で構成している Lab 環境の ESXi に U3d を適用していた際にバチが当たって Fail しました(泣).長期間放置していたので拗ねられてもしょうがない今日この頃.
一応,Dry run でエラーが無かったので esxcli software profile update 打つと以下のエラーで失敗.

 [InstallationError]
 Failed to create ramdisk vibdownload: Errors: 
 No space left on device
      cause = (146, 'Cannot reserve 146 MB of memory for ramdisk vibdownload')
 Please refer to the log file for more details.


log を読みなさいとのことなので,/scratch/log/esxupdate.log を参照すると,コマンド実行時のメッセージ通り RAM disk 作成する容量が不足と言われてます.

2022-05-03T02:05:32Z esxupdate: 24699137: root: ERROR: Traceback (most recent call last):                                                                                       
2022-05-03T02:05:32Z esxupdate: 24699137: root: ERROR:   File "/usr/lib/vmware/esxcli-software", line 794, in <module>                                                          
2022-05-03T02:05:32Z esxupdate: 24699137: root: ERROR:     main()                                                                                                               
2022-05-03T02:05:32Z esxupdate: 24699137: root: ERROR:   File "/usr/lib/vmware/esxcli-software", line 785, in main                                                              
2022-05-03T02:05:32Z esxupdate: 24699137: root: ERROR:     ret = CMDTABLE[command](options)                                                                                     
2022-05-03T02:05:32Z esxupdate: 24699137: root: ERROR:   File "/usr/lib/vmware/esxcli-software", line 252, in ProfileUpdateCmd                                                  
2022-05-03T02:05:32Z esxupdate: 24699137: root: ERROR:     res = t.UpdateProfileFromDepot([], opts.profile, depotUrls=depoturls,                                                
2022-05-03T02:05:32Z esxupdate: 24699137: root: ERROR:   File "/lib64/python3.8/site-packages/vmware/esximage/Transaction.py", line 365, in UpdateProfileFromDepot              
2022-05-03T02:05:32Z esxupdate: 24699137: root: ERROR:     return t.InstallVibsFromProfile(metadataUrls, profileName, depotUrls,                                                
2022-05-03T02:05:32Z esxupdate: 24699137: root: ERROR:   File "/tmp/esx-update-4699137/lib64/python3.8/site-packages/vmware/esximage/Transaction.py", line 1771, in InstallVibsF
2022-05-03T02:05:32Z esxupdate: 24699137: root: ERROR:   File "/tmp/esx-update-4699137/lib64/python3.8/site-packages/vmware/esximage/Transaction.py", line 1215, in _installVibs
2022-05-03T02:05:32Z esxupdate: 24699137: root: ERROR:   File "/tmp/esx-update-4699137/lib64/python3.8/site-packages/vmware/esximage/Transaction.py", line 1393, in _validateAnd
2022-05-03T02:05:32Z esxupdate: 24699137: root: ERROR:   File "/tmp/esx-update-4699137/lib64/python3.8/site-packages/vmware/esximage/HostImage.py", line 1109, in Stage         
2022-05-03T02:05:32Z esxupdate: 24699137: root: ERROR:   File "/tmp/esx-update-4699137/lib64/python3.8/site-packages/vmware/esximage/HostImage.py", line 922, in _stage_with_url
2022-05-03T02:05:32Z esxupdate: 24699137: root: ERROR:   File "/tmp/esx-update-4699137/lib64/python3.8/site-packages/vmware/esximage/Utils/Ramdisk.py", line 85, in CreateRamdis
2022-05-03T02:05:32Z esxupdate: 24699137: root: ERROR: esximage.Errors.InstallationError: Failed to create ramdisk vibdownload: Errors:                                         
2022-05-03T02:05:32Z esxupdate: 24699137: root: ERROR: No space left on device


RAM disk full の場合の対処法は KB2001550 に記載がありますが,故意的にファイル操作した自覚もありません.

kb.vmware.com
すっかり惚けてきたのかもしれませんが,とりあえず自分を信じてw,まず RAM disk の状況確認してみます.

[root@ariel1:/] vdf -h
...
-----
Ramdisk                   Size      Used Available Use% Mounted on
root                       32M        3M       28M  12% --
etc                        28M     1016K       27M   3% --
opt                        32M        0B       32M   0% --
var                        48M      784K       47M   1% --
tmp                       256M        8K      255M   0% --
iofilters                  32M        0B       32M   0% --
shm                      1024M        0B     1024M   0% --
crx                      1024M        0B     1024M   0% --
configstore                32M      212K       31M   0% --
configstorebkp             32M      212K       31M   0% --
vsantraces                300M      260M       39M  86% --
hostdstats                159M        2M      156M   1% --


問題無く Update 出来た Host ではこんな感じ.

[root@esx01:/] vdf -h
-----
Ramdisk                   Size      Used Available Use% Mounted on
root                       32M        3M       28M  12% --
etc                        28M     1016K       27M   3% --
opt                        32M        0B       32M   0% --
var                        48M      512K       47M   1% --
tmp                       256M       12K      255M   0% --
iofilters                  32M        0B       32M   0% --
shm                      1024M        0B     1024M   0% --
crx                      1024M        0B     1024M   0% --
configstore                32M      216K       31M   0% --
configstorebkp             32M      216K       31M   0% --
vsantraces                300M      912K      299M   0% --
hostdstats                159M        2M      156M   1% --


もうお気づきですね.vsantrases の Used が 86% になっています.どうもこれが原因らしい.
私の作業の目的は U3d の適用なので,RAM disk なら Reboot すればクリアされるだろうという超安易な発想で Reboot しますw. まぁ,ユーザーですからこんなもんですよw.Reboot してダメなら電源抜いて,それでもダメなら環境やら他の人のせいにして... え?私だけですか(泣)?

冗談はさておき,Reboot 後は綺麗に RAM disk クリアされています.

-----
Ramdisk                   Size      Used Available Use% Mounted on
root                       32M        3M       28M  12% --
etc                        28M     1016K       27M   3% --
opt                        32M        0B       32M   0% --
var                        48M      512K       47M   1% --
tmp                       256M       12K      255M   0% --
iofilters                  32M        0B       32M   0% --
shm                      1024M        0B     1024M   0% --
crx                      1024M        0B     1024M   0% --
configstore                32M      208K       31M   0% --
configstorebkp             32M      208K       31M   0% --
vsantraces                300M       54M      245M  18% --
hostdstats                159M        2M      156M   1% --


もちろん,これで Update 成功です!
めでたしめでたし... で終わってしまうと,超薄っぺらい Blog になって Go さんに怒られそうなので,クラスタ内の別 Host でもうちょっと触ってみます.
vsantraces が full になった際の対応は KB2150320 に対処方法が書かれています.

kb.vmware.com
目の前の問題は RAM disk 用の容量確保ですから,esxcli vsan trace set -s でサイズ変更してみます.

[root@ariel2:~] esxcli vsan trace set -s 5
[root@ariel2:/] vdf -h
...
-----
Ramdisk                   Size      Used Available Use% Mounted on
root                       32M        3M       28M  12% --
...
vsantraces                300M      231M       68M  77% --
hostdstats                159M        2M      156M   1% --


一回の実行では 77% までしか減りませんでしたが,これがしつこく esxcli vsan trace set -s 5 コマンド打っていくと,毎回少しずつ減ってくれました.

[root@ariel2:~] esxcli vsan trace set -s 5
[root@ariel2:/] vdf -h
...
-----
Ramdisk                   Size      Used Available Use% Mounted on
root                       32M        3M       28M  12% --
...
vsantraces                300M      199M      100M  66% --
hostdstats                159M        2M      156M   1% --
...
(数回実施)
...
[root@ariel2:~] esxcli vsan trace set -s 5
[root@ariel2:/] vdf -h
Ramdisk                   Size      Used Available Use% Mounted on
...
vsantraces                300M       70M      229M  23% --
hostdstats                159M        2M      156M   1% --


ただ,最終的には size 1 とかにしても 23% 以下にはなりませんでした.それでも Available が 229M で,最初 146 MB 足りないと怒られてコケた時点と比べたら余裕です!
もう Update 成功は確定ですね.にやけながらコマンド打ちます.

[root@ariel2:~] esxcli software profile update -p ESXi-7.0U3d-19482537-standard -d /vmfs/volumes/vsanDatastore/patch/VMware-ESXi-7.0U3d-19482537-depot.zip
 [InstallationError]
 Failed to create ramdisk vibdownload: [Errno 17] File exists: '/tmp/vibdownload'
      cause = [Errno 17] File exists: '/tmp/vibdownload'
 Please refer to the log file for more details.


えっ?
...
やっぱり Reboot ですよねー(棒読).


ではなくて,メッセージちゃんと読めばいいだけで,最初の失敗時に作られた /tmp/vibdownload ディレクトリが存在しているのが原因だと.(上書きしてくれればいいのに.)
/tmp の下にキチンと残っていらっしゃるので,rm します.

[root@ariel2:/tmp] ls -al
total 24
drwxrwxrwt    1 root     root           512 May  3 03:36 .
drwxr-xr-x    1 root     root           512 May  3 03:36 ..
-rw-r--r--    1 root     root            40 May  3 03:36 .vsanObserver
drwxr-xr-x    1 root     root           512 May  3 03:22 vibdownload
drwx------    1 root     root           512 May  3 03:21 vmware-root
-rw-------    1 root     root          2451 May  3 03:36 vsanObserver--.result.S91cOS
prw-r--r--    1 root     root             0 May  3 03:29 vsantracebuffer
[root@ariel2:/tmp] rm -rf ./vibdownload


という訳で,Reboot せずに RAM disk 容量不足エラーを回避して U3d 適用するお話でした.
(単に /vsantraces 下の邪魔な .gz 消せば良いのは知ってて書いています.ネタ不足w.)