Existe alguma razão para ter o ntpd sincronizado com Local (0) se o servidor não for usado como fonte de tempo?

6

Executando o release do CentOS 5.8

Eu tive um problema de desvio de tempo em um servidor que eu consertei - não estava sincronizando o hwclock para que, em uma reinicialização, o ntp tivesse mais de 1000 segundos de folga e nunca sincronizasse o tempo.

Ao investigar o problema, notei que o ntpd estava sincronizando com o Local (0) regularmente.

Existe alguma razão para ter o ntpd configurado para sincronizar com Local (0) quando este servidor nunca será usado como fonte de tempo?

"A resposta" - você não precisa usar o Relógio Local Indisciplinado, a menos que queira usar este servidor como servidor de horário local quando a conexão com outros servidores de horário falhar.

Mensagens de log do ntpd:

Jul 20 03:47:49 localhost ntpd[5441]: synchronized to 110.14.8.1, stratum 3
Jul 20 04:21:06 localhost ntpd[5441]: synchronized to LOCAL(0), stratum 10
Jul 20 04:38:09 localhost ntpd[5441]: synchronized to 110.14.8.1, stratum 3
Jul 20 04:55:26 localhost ntpd[5441]: synchronized to LOCAL(0), stratum 10

ntpd.conf:

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 10.4.58.21
# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.
server  127.127.1.0     # local clock
fudge   127.127.1.0 stratum 10

Desativaremos a sincronização local, mas ainda estamos curiosos para saber por que a sincronização local está acontecendo. Colocamos um servidor de horário temporário na mesma sub-rede, e o ntpd ainda sincroniza com a hora local. (* Possível resposta: ntpdc -c sysinfo estatísticas de que o startum do servidor ntp é 11, o que é pior do que o 10 que dissemos ao ntpd para usar no local. Hora de ir olhar a fonte para o ntpd *)

Jul 24 17:11:32 localhost ntpdate[5432]: step time server 227.220.222.220 offset 1629.764734 sec
Jul 24 17:11:32 localhost ntpd[5434]: ntpd [email protected] Fri Nov 18 13:21:21 UTC 2011 (1)
Jul 24 17:11:32 localhost ntpd[5435]: precision = 1.000 usec
Jul 24 17:11:32 localhost ntpd[5435]: Listening on interface wildcard, 0.0.0.0#123 Disabled
Jul 24 17:11:32 localhost ntpd[5435]: Listening on interface wildcard, ::#123 Disabled
Jul 24 17:11:32 localhost ntpd[5435]: Listening on interface eth0 Enabled
Jul 24 17:11:32 localhost ntpd[5435]: Listening on interface lo, ::1#123 Enabled
Jul 24 17:11:32 localhost ntpd[5435]: Listening on interface lo, 127.0.0.1#123 Enabled
Jul 24 17:11:32 localhost ntpd[5435]: Listening on interface eth0, 192.12.140.55#123 Enabled
Jul 24 17:11:32 localhost ntpd[5435]: kernel time sync status 0040
Jul 24 17:11:32 localhost ntpd[5435]: frequency initialized 0.000 PPM from /var/lib/ntp/drift
Jul 24 17:14:48 localhost ntpd[5435]: synchronized to LOCAL(0), stratum 10
Jul 24 17:16:55 localhost ntpd[5435]: synchronized to 192.12.140.200, stratum 3
Jul 24 20:11:06 localhost ntpd[5435]: synchronized to LOCAL(0), stratum 10
Jul 24 20:20:50 localhost ntpd[5435]: synchronized to 192.12.140.200, stratum 3
    
por Vincent Sartor 20.07.2012 / 22:08

4 respostas

1

ntpd não é responsável por sincronizar o relógio do hardware local. Normalmente, há um programa fornecido para fazer isso. No Ubuntu, o programa é hwclock . Ele é usado na inicialização para configurar a data do sistema e no desligamento para atualizá-lo.

Eu normalmente só configuro o relógio do hardware como uma fonte de tempo no servidor de horário NTP local. Se eu configurá-lo em clientes, eu os configuro em um estrato mais alto, de modo que o servidor de tempo permaneça a autoridade de tempo se ele estiver acessível.

Se você estiver usando ntpd para sincronizar com o relógio local, defina o relógio do hardware como UTC e configure seu sistema para esperar o UTC a partir do relógio no momento da inicialização. Infelizmente, isso não funciona bem se você fizer uma dupla inicialização no Windows. Nesse caso, não use o relógio local como fonte de tempo.

A partir da sua saída, parece que você tem uma fonte de tempo externa intermitente e isso faz com que você inverta o relógio do hardware. Mesmo que seja acessível, a fonte de tempo externa pode ter perdido sua própria sincronização e não ser considerada uma fonte de tempo. Se você tiver uma conexão de rede constante, adicione mais algumas fontes de tempo. Se você tiver uma conexão de rede intermitente, corrija a configuração do relógio do hardware ou remova o relógio do hardware como uma fonte.

O fato de o relógio do seu hardware estar fora dos meus mais de 1000 segundos na inicialização indica um dos dois possíveis problemas:

  • O relógio do hardware não está configurado para o fuso horário esperado pelo software, que define a hora do sistema durante a seqüência de inicialização.
  • A bateria usada para manter o CMOS funcionando quando o sistema está desligado morreu ou está morrendo.

Você pode resolver o problema de sincronização no momento da inicialização adicionando a opção -g ao comando ntpd .

    
por 21.07.2012 / 16:14
3
# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.

Isso é feito como fonte de tempo de fallback se você não puder acessar nenhum servidor oficial (mais). Se você ativou um arquivo de drift, isso pode até mesmo manter seu tempo em sincronia, já que o arquivo de drift deve conter o valor corretivo de tempo real em relação ao relógio local.

    
por 20.07.2012 / 22:33
0

Sincronizar com a fonte de horário local, quando nenhuma existe, é uma ótima maneira de deixar seu relógio enlouquecido. Você descobriu isso da maneira mais difícil (como fiz há algum tempo atrás). Isso se destina a situações em que você tem um GPS, um relógio atômico ou algo relacionado que está fisicamente conectado à máquina. Se você não tem esse hardware, desative-o.

    
por 20.07.2012 / 22:17
0

A sincronização com o relógio local pode ser uma boa ideia, se algum outro sistema em execução no mesmo hardware sincronizar o relógio local. Exemplo: no Host1, o VM1 executa o ntp e sincroniza com alguns servidores ntp públicos (e é, digamos, o estrato 3). no Host1, VM2, VM3, VM4, ... execute o ntp e sincronize com o relógio local.

Enquanto a VM1 estiver em execução, tudo ficará bem, certo?

IMHO, ntp normalmente sincroniza o relógio do hardware "em pequenos passos", pensa em "continuamente", então "hwclock -wu" no desligamento não é necessário.

    
por 02.07.2014 / 15:45

Tags