De alguma forma, mas não com base na pergunta mais antiga "ntpd vs. systemd-timesyncd - Como obter uma sincronização NTP confiável?" , gostaria de perguntar sobre as diferenças entre chrony e systemd-timesyncd em termos de um cliente NTP .
Eu sei que o systemd-timesyncd é uma implementação de cliente ntp mais ou menos mÃnima, enquanto o chrony é uma solução de daemon NTP completa que inclui um cliente NTP.
As notas de lançamento do ubuntu Bionic Beaver afirmam o seguinte:
Para necessidades de sincronização de tempo simples, o sistema básico já vem com systemd-timesyncd. O Chrony só é necessário para atuar como servidor de horário ou se você deseja que a sincronização anunciada seja mais precisa e eficiente.
Eu gosto da ideia de usar uma ferramenta pré-instalada mÃnima para fazer o trabalho e tenho certeza de que o systemd-timesyncd fará o trabalho para meus casos de uso, ainda estou curioso:
- Quais são as diferenças do mundo real entre os dois em termos de precisão?
- Quais são as diferenças de eficiência?
- Quais são as necessidades de sincronização de tempo "não simples", também conhecidas como casos de uso para chrony como cliente NTP?
O anúncio do systemd-timesyncd no arquivo systemd NEWS faz um bom trabalho ao explicar as diferenças desta ferramenta em comparação com o Chrony e ferramentas semelhantes. (ênfase minha):
Essa configuração é um caso de uso comum para a maioria dos hosts em uma frota de servidores. Eles geralmente são sincronizados a partir de servidores NTP locais, que são sincronizados de várias fontes, possivelmente incluindo hardware. systemd-timesyncd tenta fornecer uma solução fácil de usar para esse caso de uso comum.
Tentando responder à s suas perguntas especÃficas:
Acredito que você pode obter maior precisão obtendo dados de sincronização de várias fontes, o que especificamente não é um caso de uso com suporte para systemd-timesyncd. Mas quando você o está usando para obter dados de sincronização de servidores NTP centrais conectados à sua rede interna confiável, o uso de várias fontes não é tão relevante e você obtém boa precisão de uma única fonte.
Se você estiver sincronizando seu servidor de um servidor confiável em uma rede local e no mesmo datacenter , a diferença de precisão entre NTP e SNTP será praticamente inexistente. O NTP pode levar em conta o RTT e fazer timesmearing, mas isso não é tão benéfico quando seu RTT é muito pequeno, como é o caso de uma rede local rápida e uma máquina próxima. Você também não precisa de várias fontes se puder confiar na que está usando.
Obter a sincronização de uma única fonte é muito mais simples do que obtê-la de várias fontes, pois você não precisa tomar decisões sobre quais fontes são melhores que outras e possivelmente combinar informações de várias fontes. Os algoritmos são muito mais simples e exigirão menos carga de CPU para o caso simples.
Isso é abordado na citação acima, mas em qualquer caso, esses são casos de uso para Chrony que não são cobertos pelo systemd-timesyncd:
Esses casos de uso requerem Chrony ou ntpd ou similar.
Como a outra resposta afirma corretamente,
chrony
implementa NTP esystemd-timesyncd
SNTP.Do ponto de vista de um cliente de serviço de tempo:
O SNTP é um protocolo muito mais simples de implementar;
O NTP permite incrementos/correções passo a passo no tempo. Uma grande vantagem do NTP é que ele também leva em consideração o RTT da resposta para obter uma hora mais exata.
De https://www.meinbergglobal.com/english/faq/faq_37.htm
De https://www.masterclock.com/company/masterclock-inc-blog/ntp-vs-sntp
Um outro ponto importante que posso ver as implementações de SNTP dando mais problemas do que o NTP está na virtualização, quando você tem o hypervisor e o daemon NTP tentando alterar o tempo da VM. Especialmente com eles não concordando a tempo com alguma configuração incorreta faz com que ambos sejam ativos, isso pode causar grandes problemas. (Embora os administradores de sistema competentes mantenham ativo apenas um método de sincronização com o tempo, pode acontecer que ambos estejam ativos por um erro de configuração).
PS
systemd-timesyncd
não deve ser uma alternativa aconselhada quando não estiver usandosystemd
.chrony
não é um formulário fork,ntpd
mas é implementado do zero. Ele implementa os modos cliente e servidor do protocolo NTPv4 completo ( RFC5905 ). Em usuários de nÃvel empresarial, estamos vendo uma tendência de mudança do tradicionalntpd
parachrony
o Red Hat (RHEL 7 em diante) e SuSE (do SLES 15).systemd-timesyncd
implementar apenas o modo cliente do protocolo SNTP ( RFC4330 ) . Portanto, casos de uso complexos não são cobertos pelo . Por exemplo, o SNTP não pode torná-lo mais preciso recuperando o tempo de várias fontes, como o NTP faz por padrão. Como resultado , não pode fornecer um tempo de alta precisão como .systemd-timesyncd
systemd-timesyncd
chrony