結論
タイムゾーンを変更する時は、timedatectlを使いましょう
/etc/localtimeにリンク貼っちゃいかん
対象環境
RHEL7
CentOS7
on ESXi
問題
最初は下記を設定してたのに、
# ll /etc/localtime
lrwxrwxrwx 1 root root 25 6月 1 17:55 /etc/localtime -> /usr/share/zoneinfo/Japan
VMでテンプレートから上げ直すと下記のようになってた
# ll /etc/localtime
lrwxrwxrwx 1 root root 30 5月 30 17:33 /etc/localtime -> /usr/share/zoneinfo/Asia/Tokyo
原因
1. そもそもタイムゾーンにJapanがない
下記のようにタイムゾーンのリストにAsia/Tokyoはあるが、Japanはなかった
# timedatectl list-timezones | grep Tokyo
Asia/Tokyo
# timedatectl list-timezones | grep Japan
#
2. 設定方法が違う
設定を下記のようにしたが、テンプレートから起動した際に、glibcが更新された時に/etc/localtimeが上書きされた
多分、JapanないからTokyoに上書きされたっぽい
リンクを貼ってゾーンを変更するやり方は推奨されていない
# ln -sf /usr/share/zoneinfo/Japan /etc/localtime
対策
timedatectlでゾーン変更を行う
事前確認
現在のゾーン確認
# timedatectl | grep zone
Time zone: Japan (JST, +0900)
リンク先確認
# ls -l /etc/localtime
lrwxrwxrwx. 1 root root 25 4月 10 15:53 /etc/localtime -> /usr/share/zoneinfo/Japan
ゾーンリストにあるよね確認
# timedatectl list-timezones | grep Asia/Tokyo
Asia/Tokyo
ゾーン設定
# timedatectl set-timezone Asia/Tokyo
事後確認
現在のゾーン確認
# timedatectl | grep zone
Time zone: Japan (JST, +0900)
リンク先確認
# ls -l /etc/localtime
lrwxrwxrwx. 1 root root 25 4月 10 15:53 /etc/localtime -> /usr/share/zoneinfo/Japan