AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1121733
Accepted
Cecilia
Cecilia
Asked: 2023-02-02 14:06:39 +0800 CST2023-02-02 14:06:39 +0800 CST 2023-02-02 14:06:39 +0800 CST

Por que o relatório chrony está com baixa compensação quando os horários do meu sistema estão tão distantes?

  • 772

Eu tenho dois voxls em rede que estou tentando sincronizar usando o chrony. Os voxls inicializam com tempos de sistema muito diferentes, como anos de diferença. Eu esperaria que o chrony sincronizasse os horários quando o serviço começar a usar makestep, mas depois de iniciar o chrony, ainda observo uma grande diferença no horário do sistema.

As configurações são as seguintes:

#server 10.0.0.102
                                                                             
makestep 1.0 3                                                               
driftfile /var/lib/chrony/drift                                              
rtcsync                                                                      
allow 10.0.0                                                                 
local stratum 8                                                              
manual                                                                       
logdir /var/log/chrony  
#client 10.0.0.101

server 10.0.0.102 iburst maxpoll 5 prefer
makestep 1.0 3
driftfile /var/lib/chrony/drift
rtcsync
logdir /var/log/chrony

Quando o chrony é inicializado, eu esperaria que ele fosse usado makesteppara sincronizar o cliente de uma só vez, e vejo um ajuste de tempo no status systemclt

root@voxl1:~# systemctl status chronyd
● chronyd.service - NTP client/server
   Loaded: loaded (/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2023-02-01 21:34:52 UTC; 83 years 0 months ago
  Process: 3086 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 3088 (chronyd)
   CGroup: /system.slice/chronyd.service
           └─3088 /usr/sbin/chronyd

Feb 01 21:34:52 voxl1 systemd[1]: Starting NTP client/server...
Feb 01 21:34:52 voxl1 chronyd[3088]: chronyd version 2.4 starting (+CMDMON +NTP +REFCLOCK +RTC -PRIVDROP -...EBUG)
Feb 01 21:34:52 voxl1 chronyd[3088]: Frequency -0.681 +/- 0.232 ppm read from /var/lib/chrony/drift
Feb 01 21:34:52 voxl1 systemd[1]: Started NTP client/server.
Feb 01 21:34:56 voxl1 chronyd[3088]: Selected source 10.0.0.102
Feb 01 21:34:56 voxl1 chronyd[3088]: System clock wrong by 2619696428.415401 seconds, adjustment started
Feb 07 11:02:04 voxl1 chronyd[3088]: System clock was stepped by 2619696428.415401 seconds

Se eu usar chronyc trackingou chronyc sourcespara observar os deslocamentos de tempo, o relatório indica que os horários são sincronizados em 100 microssegundos.

root@voxl1:~# chronyc tracking
Reference ID    : 10.0.0.102 (10.0.0.102)
Stratum         : 9
Ref time (UTC)  : Sun Feb 07 11:08:34 2106
System time     : 0.000066503 seconds slow of NTP time
Last offset     : -0.000076736 seconds
RMS offset      : 0.000044063 seconds
Frequency       : 0.785 ppm slow
Residual freq   : -0.216 ppm
Skew            : 0.987 ppm
Root delay      : 0.004293 seconds
Root dispersion : 0.000069 seconds
Update interval : 129.8 seconds
Leap status     : Normal

root@voxl1:~# chronyc sources -v
210 Number of sources = 1

  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 / .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
||                                                 .- xxxx [ yyyy ] +/- zzzz
||      Reachability register (octal) -.           |  xxxx = adjusted offset,
||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
||                                \     |          |  zzzz = estimated error.
||                                 |    |           \
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 10.0.0.102                    8   6   377    46    -77us[ -109us] +/- 1953us

No entanto, se eu imprimir a data, ela não corresponderá ao servidor de horário.

cliente 10.0.0.101

root@voxl1:~# date
Sun Feb  7 11:12:00 UTC 2106

servidor 10.0.0.102

root@voxl2:~# date
Thu Jan  1 04:43:02 UTC 1970

Em seguida, tentei acionar um manual chronyc makestep, mas isso também não pareceu surtir efeito.

Por que minha data não é a mesma? O makestep funcionou como pretendido? Existe um limite para o quão longe chronyc makesteppode pisar o relógio?

Edit: Eu tenho uma hipótese, mas não sei como testá-la. Acho que posso estar vendo um erro de subfluxo. 1º de janeiro de 1970 é a época do Unix. Minha hipótese é que, quando o chrony tenta sincronizar o cliente pela primeira vez na inicialização, ocorre um erro de estouro e vejo a mensagem systemctl

Feb 01 21:34:56 voxl1 chronyd[3088]: System clock wrong by 2619696428.415401 seconds, adjustment started
Feb 07 11:02:04 voxl1 chronyd[3088]: System clock was stepped by 2619696428.415401 seconds

Essa etapa incorreta empurra o cliente para 2106 e o ​​chrony agora pensa que está sincronizado com o servidor, e é por isso que outras etapas não têm efeito e o deslocamento parece pequeno.

Alguma ideia de como testar essa hipótese?

chrony
  • 1 1 respostas
  • 35 Views

1 respostas

  • Voted
  1. Best Answer
    John Mahowald
    2023-02-02T20:57:47+08:002023-02-02T20:57:47+08:00

    Sim, há um limite. O mesmo limite que significa que o NTP será prorrogado no ano de 2036.

    O formato de registro de data e hora NTP é baseado em segundos de 32 bits (e frações de segundo de 32 bits) ou 136 anos, também conhecido como era NTP . A diferença entre eles é de mais ou menos 68 anos. Qual é a quantidade segura de tempo delta sem que a implementação faça suposições sobre em que era você está.

    Na prática, as implementações serão mais conservadoras e assumirão a era alterada antes dos limites da estrutura de dados. O script de configuração do chrony é padronizado para 50 anos antes de sua data de construção. Em outras palavras, por cerca de três anos, 1970 é considerado uma era NTP diferente. Não é, mas geralmente pode-se supor que os relógios foram acertados em algum momento nas últimas 5 décadas.

    chrony calculou deltas que o colocariam antes desta era. Então assumiu que a era rolou, fazendo o mod de matemática 136 anos. Este ano menos 1970 é de 53 anos atrás. 136 menos 53 é 83, que é o seu enorme deslocamento:

    $ units "2619696428 seconds" years
            * 83.014944
            / 0.012046024
    

    Uma maneira diferente de ver isso é uma coisa da era NTP é comparar os carimbos de data/hora do servidor e do cliente. Converta ambos em segundos de época do UNIX ( date +%sde GNU coreutils), subtraia 2 ^ 32 e subtraia o menor, e eles estão separados por apenas 42.

    O tempo do servidor em 1970 é extraordinário. A partir de 2023, estamos 1,6 bilhão de segundos após 1970-01-01 00:00:00 UTC.

    Use um relógio de tempo real. O que quer que o cliente tenha iniciado antes de ser pisado parecia razoável? Não precisa ser preciso, acertar a década seria uma melhoria. Mesmo que o hardware ou software comece com uma data codificada, isso pode ser corrigido, semelhante a um RTC com bateria descarregada.

    Adicione fontes de tempo mais confiáveis ​​para seu servidor NTP. Se você tiver internet, adicione pool 2.pool.ntp.org ao chrony.conf. E, com uma visão clara do céu, as antenas de navegação por satélite podem adicionar relógios precisos sem a necessidade de passar por IP.

    • 2

relate perguntas

  • chrony: tempo de hospedagem com RTC como relógio autoritativo em um sistema air-gapped (isolado)

  • Chronyc equivalente para ntpdate -q

  • Chrony "dispersão de raiz" continua aumentando de forma constante ao longo do tempo, apesar da sincronização de tempo precisa

  • Sincronização de tempo Chrony em grande diferença de tempo

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve