El anuncio de systemd-timesyncd en el archivo systemd NEWS hace un buen trabajo al explicar las diferencias de esta herramienta en comparación con Chrony y herramientas similares. (énfasis mío):
Se ha agregado un nuevo demonio "systemd-timesyncd" para sincronizar el reloj del sistema a través de la red. Implementa un cliente SNTP . A diferencia de las implementaciones de NTP como chrony o el servidor de referencia NTP, esto solo implementa un lado del cliente y no se molesta con la complejidad completa de NTP, centrándose solo en consultar el tiempo desde un servidor remoto y sincronizar el reloj local . A menos que tenga la intención de servir NTP a clientes en red o desee conectarse a relojes de hardware locales, este simple cliente NTP debería ser más que apropiado para la mayoría de las instalaciones. [...]
Esta configuración es un caso de uso común para la mayoría de los hosts en una flota de servidores. Por lo general, se sincronizarán desde servidores NTP locales, que a su vez se sincronizarán desde múltiples fuentes, posiblemente incluyendo hardware. systemd-timesyncd intenta proporcionar una solución fácil de usar para ese caso de uso común.
Tratando de abordar sus preguntas específicas:
¿Cuáles son las diferencias en el mundo real entre los dos en términos de precisión?
Creo que puede obtener una mayor precisión al obtener datos de sincronización de múltiples fuentes, lo que específicamente no es un caso de uso compatible para systemd-timesyncd. Pero cuando lo usa para obtener datos de sincronización de servidores NTP centrales conectados a su red interna confiable, el uso de múltiples fuentes no es realmente tan relevante y obtiene una buena precisión de una sola fuente.
Si está sincronizando su servidor desde un servidor de confianza en una red local y en el mismo centro de datos , la diferencia de precisión entre NTP y SNTP será prácticamente inexistente. NTP puede tener en cuenta RTT y reducir el tiempo, pero eso no es tan beneficioso cuando su RTT es realmente pequeño, como es el caso de una red local rápida y una máquina cercana. Tampoco necesita múltiples fuentes si puede confiar en la que está utilizando.
¿Cuáles son las diferencias en eficiencia?
Obtener la sincronización de una sola fuente es mucho más simple que obtenerla de múltiples fuentes, ya que no tiene que tomar decisiones sobre qué fuentes son mejores que otras y posiblemente combinar información de múltiples fuentes. Los algoritmos son mucho más simples y requerirán menos carga de CPU para el caso simple.
¿Cuáles son las necesidades de sincronización de tiempo "no simple", también conocidas como casos de uso para crony como cliente NTP?
Eso se aborda en la cita anterior, pero en cualquier caso estos son casos de uso para Chrony que no están cubiertos por systemd-timesyncd:
- ejecutar el servidor NTP (para que otros hosts puedan usar este host como fuente para la sincronización);
- obtener información de sincronización NTP de múltiples fuentes (lo cual es importante para que los hosts obtengan esa información de servidores públicos en Internet); y
- obtener información de sincronización del reloj local, que generalmente involucra hardware especializado como dispositivos GPS que pueden obtener información precisa de la hora de los satélites.
Estos casos de uso requieren Chrony o ntpd o similar.
Como la otra respuesta dice correctamente,
chrony
implementa NTP ysystemd-timesyncd
SNTP.Desde el punto de vista de un cliente de servicio horario:
SNTP es un protocolo mucho más simple de implementar;
NTP permite incrementos / correcciones paso a paso a tiempo. Una ventaja importante de NTP es que también tiene en cuenta el RTT de la respuesta para obtener un tiempo más exacto.
Desde https://www.meinbergglobal.com/english/faq/faq_37.htm
Desde https://www.masterclock.com/company/masterclock-inc-blog/ntp-vs-sntp
Otro punto importante que puedo ver es que las implementaciones de SNTP causan más problemas que NTP en la virtualización, cuando el hipervisor y el demonio NTP intentan cambiar el tiempo de VM. Especialmente con ellos no estar de acuerdo a tiempo con alguna configuración incorrecta hace que ambos estén activos, puede causar grandes problemas. (Si bien los administradores de sistemas competentes solo mantendrán activo un método para la sincronización con el tiempo, puede suceder que ambos estén activos por un error de configuración).
PS
systemd-timesyncd
no debe ser una alternativa recomendada cuando no se usasystemd
.fuente
systemd-timesyncd
programa bajo otro administrador de servicios. He proporcionado un paquete de servicios para ejecutarlo bajo el kit de herramientas noshservice-manager
desde 2018. Lo que se ha perdido es que las personas systemd (por Debian bug # 812522) alientan a los servicios para invitados de VirtualBox y a otros a entrar en conflicto explícito con elsystemd-timesyncd
servicio para evitar su uso en máquinas virtualessystemd
... Sin embargo, vmtools timesync puede y estará deshabilitado, y debería deshabilitarse en servidores que realizan servicios NTP (por ejemplo, los servidores NTP VM), y algunos administradores de sistemas se mantienen sincronizados por vmtools, otros siguen los documentos de VmWare de deshabilitar vmtools timesync (que solo debe usarse cuando sabes lo que estás haciendo). Ese error no es lineal para ser resuelto, y será un punto extra de configuración que las personas que pierdan fácilmente y que sigan las recomendaciones de VmWare no usarán vmtools timesync.vmware-toolbox-cmd timesync disable
en mis servidores NTP, ya sea que los chicos de VmWare hayan deshabilitado o no la sincronización de tiempo para esas máquinas virtuales. (También prefiero usar chrony como cliente NTP)chrony
no es una forma de bifurcación,ntpd
pero se implementa desde cero. Implementa los modos cliente y servidor del protocolo NTPv4 completo ( RFC5905 ). En los usuarios de nivel empresarial, estamos viendo una tendencia a cambiar de Red Hat tradicionalntpd
achrony
Red Hat (RHEL 7 en adelante) y SuSE (de SLES 15).systemd-timesyncd
solo implemente el modo cliente del protocolo SNTP ( RFC4330 ) . Por lo tanto, los casos de uso complejos no están cubiertos por . Por ejemplo, SNTP no puede hacerlo más preciso al recuperar el tiempo de múltiples fuentes como lo hace NTP de manera predeterminada. Como resultado , no puede proporcionar el tiempo de alta precisión como .systemd-timesyncd
systemd-timesyncd
chrony
fuente