背景
Azure IaaS の Linux VM では、ホストとの正確な時刻同期が重要です。しかし、日本語版と英語版の公式ドキュメントに記載内容の差異があり、誤った設定を行うと同期が不安定になる可能性があります。
日本語版と英語版の差異
-
日本語版:
/dev/ptp1シンボリックリンクを使用するよう記載
https://learn.microsoft.com/ja-jp/azure/virtual-machines/linux/time-sync -
英語版:
/dev/ptp_hypervシンボリックリンクを使用するよう記載
https://learn.microsoft.com/en-us/azure/virtual-machines/linux/time-sync
正しい情報(英語版準拠)
Chrony は /dev/ptp_hyperv を使用するべきです。これは Azure ホストに対応する PTP デバイスを指し、安定した同期設定が可能です。
技術的背景
- Linux VM 内では複数の PTP デバイスが表示されることがあります。
- Mellanox mlx5 ドライバーなどが追加の
/dev/ptpデバイスを作成します。 - Linux 起動時の初期化順序により、Azure ホストの PTP デバイスが
/dev/ptp0または/dev/ptp1になる場合があります。 - 最新の Linux イメージでは、udev ルールにより Azure ホストに対応する PTP デバイスにシンボリックリンク
/dev/ptp_hypervが作成されます。
推奨設定
Chrony の設定ファイル(/etc/chrony.conf)で以下を指定します:
refclock PHC /dev/ptp_hyperv poll 3 dpoll -2 offset 0
ポイント
-
/dev/ptp_hypervを使用することで、Azure ホストとの正確な時刻同期が保証されます。 -
/dev/ptp0や/dev/ptp1は起動順序により変動するため、直接指定は推奨されません。
まとめ
- 日本語版ドキュメントの
/dev/ptp1使用記載は誤訳。 - 英語版の記載に従い、Chrony は
/dev/ptp_hypervを使用する設定を行うことが重要です。