【VMware】VMware vSphere 6.5 ESXi はタイムゾーンの設定ができない(vCenter Applianceも)

VMware vSphere 6.5 ESXi はタイムゾーンの設定ができません。

ESXi Hypervisor に ssh でログインして「/var/log」ディレクトリ配下を確認した際にタイムスタンプが「UTC(協定世界時:Coordinated Universal Time)」になっています。

そのため、/var/log/ ディレクトリ配下では各種ログのタイムスタンプが UTC で表示されるため分かりにくいです。

 

VMware vSphere 6.5 ESXi のタイムゾーン設定

以下の通り、VMware vSphere 6.5 ESXi のタイムゾーンは「UTC」で表示されます。

ちなみに、「UTC」から「日本時間」に変換する場合は、「UTC」に9を足すと「日本時間」になります。

UTC計算方法

 

VMware のバージョンを確認します。

[root@test:~] vmware -v
VMware ESXi 6.5.0 build-5310538

 

dateコマンドで確認しても「UTC」として表示されます。

[root@test:~] date
Mon Jul 10 07:04:42 UTC 2017 ← UTCで表示されます。ちなみに UTC で7時なので、7+9で日本時間16時であることが分かります。
[root@test:~]

 

NTPを利用していてもタイムゾーンは変わりません。

[root@test:~] ps -c | grep ntp
214482  214482  grep                                  grep ntp
153587  153587  sh                                    /bin/sh /sbin/watchdog.sh -t 100 -s ntpd /sbin/ntpd -g -n -c /etc/ntp.conf -f /etc/ntp.drift
153598  153598  ntpd                                  /sbin/ntpd -g -n -c /etc/ntp.conf -f /etc/ntp.drift

 

ntpdの設定について確認します。

[root@test:~] cat /etc/ntp.conf
restrict default kod nomodify notrap nopeer
restrict 127.0.0.1
server xxx.xxx.xxx.xxx
server xxx.xxx.xxx.xxx
driftfile /etc/ntp.drift
[root@test:~] ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*xxx.xxx.xxx.xxx   133.243.238.244  2 u   53  512  377    0.134   -0.711   0.094
+xxx.xxx.xxx.xxx   133.243.238.164  2 u  442  512  377    0.276   -0.649   0.083
[root@test:~]

 

ESXi のハードウェアクロックを確認します。

[root@test:~] esxcli hardware clock get
2017-07-10T07:24:51Z ← 「Z」が付いているため、「UTC」表示であることが分かります。

 

 

OSの時刻を確認します。

[root@test:~] esxcli system time get
2017-07-10T07:25:46Z ← 「Z」が付いているため、「UTC」表示であることが分かります。

 

ハードウェアクロックとは

単純に言えば、「ハードウェアの時刻」、つまり「マザーボードの時刻」「BIOSの時刻」を言います。

もちろん、「マザーボードの時刻」=「BIOSの時刻」です。

ハードウェアクロックは OS の時刻とは関係がなく独立しています。

OSの時刻を変更しても BIOS の時刻には影響しません。

(もちろん、ハードウェアクロックを変更するコマンドをOS上から実行すればハードウェアクロックは変更されます)

 

システムクロックとは

システムクロックとは「OSの時刻」です。

「date」コマンドで表示される時刻です。

OS起動時にハードウェアクロックを読み、OSの時刻を設定します。

 

 

以上のように VMware vSphere 6.5 ESXi ではタイムゾーンそのものが「UTC」になっています。

 

VMware vSphere 6.5 ESXi はタイムゾーンの設定についてどうすればいいのか調べてみた

ではどうすればいいのか調べました。

参考サイト:ESXiの時刻について
https://communities.vmware.com/thread/499346

※このページを読むと「6.5」だけの話ではなく以前のバージョンから続いている話になります。また「ESX」はタイムゾーンの設定がサポートされていましたが、「ESXi」からはサポートされなくなったようです。

 

  • ESXi は BIOS の時刻を UTC として認識する
  • BIOSがタイムゾーンを設定できない場合 → ESXi は UTC の時刻と判断する
  • BIOSがタイムゾーンを設定できる場合 → ?(どうなるかタイミングの問題で不明)→ そのため BIOS は「UTC」で設定しておくのが良い
  • NTPで時刻同期を取っている場合 → ログは UTC で表示される
  • BIOSが「日本時間」で NTP で時刻同期をする場合 → ログは UTC で表示される
  • Web Client でイベントを確認する場合 → 日本時間で表示される(理由はブラウザを起動しているOS上のタイムゾーンに合わせるため)

 

とにかく VMware vSphere 6.5 ESXi は、単純に BIOS の時刻を「UTC」として認識するので、BIOS の時刻を「UTC」で設定しておくのが「一番障害が起こりにくい環境にできる」と言えます。

 

 

6.5が他のバージョンと異なる部分

VMware vSphere 6.5 ESXi が「時刻の設定(タイムの設定)」で、他のバージョンと異なる個所を記載しました。

 

  • /usr/share/zoneinfo ディレクトリが存在しない
  • /etc/sysconfig/clock ファイルが存在しない
  • /etc/localtime ファイルが存在しない

 

ようするにタイムゾーンを変更できると思わせるような設定ファイルは根こそぎ消えたと言っていいでしょう。

 

公式サイトでは

公式サイトでは ESXi のタイムゾーンを変更をサポートしないと明言しています。

「ESXi は、UTC 時間を使用しており、タイム ゾーンの変更をサポートしていません。」

ESXi は、UTC 時間を使用しており、タイム ゾーンの変更をサポートしていません。

※ただし、この対象バージョンに「ESXi 6.5」は含まれていません。

ESXi は、UTC 時間を使用しており、タイム ゾーンの変更をサポートしていません。

 

VMware 公式サイトが公開している仮想マシン(バーチャルマシン)の時刻同期の内部処理の説明です。

(バージョン的には VMware vSphere 5.0 ですが、6.5 でも基本は同じと思います)

Timekeeping in VMware Virtual Machines

 

 

VMware vCenter Appliance もタイムゾーンは変更できない

公式サイトによると ESXiだけでなく「VMware vCenter Appliance」もタイムゾーンの変更はできません。

 

Setting the Time Zone in the vCenter Server Appliance(2057956)

 

Details
In the VMware vCenter Server Appliance console, you can use the arrow keys to navigate and select Timezone, but cannot change the Timezone.

VMware vCenter Serverアプライアンスコンソールでは、矢印キーを使用して移動して[タイムゾーン]を選択できますが、タイムゾーンは変更できません。

Solution
By design, the Timezone is set to UTC and cannot be changed in the vCenter Server Appliance console.

設計上、タイムゾーンはUTCに設定されており、vCenter Serverアプライアンスコンソールで変更することはできません。

 

まとめ

ヒューマンエラーを防ぐためなのか、シンプルにするためなのかいろんな意図が考えられますが、ようするに ESXi では勝手にタイムゾーンを設定できないということです。

日本に住んでいる → タイムゾーンを「Asia/Tokyo」にするというわけにはいかない

ということです。

設計思想がそうなっているなら、その設計に合わせるしかありません。

何とかして日本時間で表示させようと作り込むよりも、UTCで表示されていることを受け入れて使うほうがいいでしょうね。

ただ、個人的には ESXi に ssh ログインしてログを確認する場合も日本時間で表示された方が障害対応などやりやすいと思います。

 

 

Posted by 100%レンタルサーバーを使いこなすサイト管理人

コメントを残す

メールアドレスが公開されることはありません。