3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OCI移行後のWindowsインスタンスが9時間前になってしまうのを回避

3
Last updated at Posted at 2026-10-13

背景

OCIのコンピュートに移行したWindows ServerのOS上の時刻が、タイムゾーンは日本に設定されているにもかかわらずUTC時刻になってしまうことがあります。

NTPサーバーで時刻同期ができれば問題はありませんが、移行元で設定していたNTPサーバーと移行後に通信できない場合などはHypervisor側から取得されたハードウェアクロックがOSのローカルクロックとして利用されることになります。

その際にWindows OSがハードウェアクロックのタイムゾーンを識別せずに時刻設定してしまうため、Windows OS上でのタイムゾーン設定がJSTであってもHypervisorから取得したUTC時刻をそのまま時刻設定してしまって9時間前の時間になってしまう、という事象です。

回避するには、Windows OS上で、ハードウェアクロックがUTCであるという設定を入れる必要があります。(ちなみにOCIのプラットフォームイメージを使っている場合は最初から設定してあるので特に意識する必要はありません。)

検証の準備

移行元となる仮想マシン

  • VMware上で仮想マシンを作成し、Windows Server 2019をインストールしました。
  • タイムゾーン設定は日本。NTPサーバーはインターネット上のものを参照する形になっています。移行前環境ではインターネット側に通信できるようにしているので問題なく現在時刻が表示できています。
    • 例)移行元環境。実際にJSTで13:47の場合。OS上でも同じ時刻が表示されているので、特に問題はありません。
      image-20260812134757414.png

移行後のVMインスタンス

  • OCMで移行したあとのインスタンスはプライベートサブネットに配置しました。image-20260812101730363.png

  • NAT GWのルートは削除してあるので、インターネット上のNTPサーバーには通信できない状態にしています。image-20260812101816334.png

  • インスタンスに対してインターネットから直接RDP接続などはできないので、VNC接続を行います。

    1. インスタンスの「コンソール接続」で「ローカル接続の作成」をクリックし、作成されたコンソール接続のメニューから「VNC接続コマンドのコピー」で接続用のコマンドをコピーする。image-20260812101923523.png

    2. putty keygenでパブリックキーからWindows用のppkキーを生成しておく。

    3. コピーしたコマンドのキーの位置二か所を適切に修正し、powershellで実行。

      Start-Job { Echo N | plink.exe -i <ppk秘密鍵の場所> -N -ssh -P 443 -l <コンソール接続のOCID> -L 5905:<インスタンスのOCID>:5905 instance-console.ap-tokyo-1.oci.oraclecloud.com }; sleep 5; plink.exe -i <ppk秘密鍵の場所> -N -L 590 0:localhost:5900 -P 5905 localhost -l <インスタンスのOCID>
      

      image-20260812102146903.png

    4. VNC Viewerからlocalhost:5900で接続。ここではUltraVNC Viewerを使用しました。image-20260812102339502.png

  • VMインスタンスのWindowsでは、タイムゾーンがUTC+09:00に設定されているにもかかわらず、ローカル端末の時刻より9時間前が表示されていることを確認。

    • 例)実際には右下のパソコン端末側で表示されている10:28 JSTが現在時刻にもかかわらず、VMインスタンス上のOSでは1:28となっていることがわかります。image-20260812102832971.png
  • PowerShell上で時刻設定を確認します。

    • タイムゾーン設定はTokyo Standard Timeになっている。
    • w32tm /query /source コマンドを実施すると Local CMOS Clock となっているので、ハードウェアクロックから時刻を取得していることがわかる。image-20260812103745190.png

回避策の適用

この問題は以下のドキュメントに既知の問題として回避策の記載があります。ドキュメントに従って設定していきます。

  1. レジストリ・エディタHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation を開く。
  2. RealTimeIsUniversalのキーは存在しないので、新しく作成する。image-20260812104209089.png
  3. DWORDキーを作成して値を1に設定。image-20260812104403202.png
  4. 設定完了。image-20260812104457790.png
  5. インスタンスを再起動する。image-20260812104633822.png

正しい現在時刻が表示されるようになりました!image-20260812105249937.png

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?