CLOCK_DRIFT_UNSYNC
Linux / DevOps
Синхронизация времени в Linux под виртуализацией: Chrony и systemd-timesyncd
- Рассинхронизация часов в виртуальных машинах после приостановки или миграции ноды.
- Ошибки TLS сертификатов, токенов авторизации (JWT, Kerberos) и репликации баз данных.
- Предупреждения ядра
Time stamp counter is unsynchronized across CPUs.
1. Проверка текущего источника времени ядра
cat /sys/devices/system/clocksource/clocksource0/current_clocksource
cat /sys/devices/system/clocksource/clocksource0/available_clocksource2. Установка и настройка Chrony
apt-get install -y chrony || dnf install -y chronyОтредактируйте /etc/chrony/chrony.conf:
server 0.pool.ntp.org iburst minpoll 4 maxpoll 6
server 1.pool.ntp.org iburst minpoll 4 maxpoll 6
server 2.pool.ntp.org iburst minpoll 4 maxpoll 6
makestep 1.0 3
corrtimeratio 100
driftfile /var/lib/chrony/drift
rtcsyncsystemctl enable --now chronyd && systemctl restart chronyd3. Мониторинг точности синхронизации
chronyc sources -v
chronyc tracking4. Альтернатива: systemd-timesyncd для контейнеров
В /etc/systemd/timesyncd.conf:
[Time]
NTP=pool.ntp.org
FallbackNTP=time.cloudflare.comtimedatectl set-ntp true
timedatectl timesync-status
Практический опыт инженера:
Никогда не запускайте ntpd/chronyd одновременно с синхронизацией гостевых утилит гипервизора (например, open-vm-tools time synchronization) — это вызовет постоянный конфликт коррекции часов.
Частые вопросы (FAQ)
Что делает опция makestep 1.0 3 в Chrony?
Она разрешает демону скачкообразно перевести часы (step), если начальное расхождение превышает 1 секунду, но только в течение первых 3 циклов обновления.
Какой clocksource лучше использовать в KVM/Proxmox?
Оптимальным является kvm-clock или tsc (если гипервизор поддерживает флаг constant_tsc и invtsc).