Configurei o systemd timesyncd para obter a hora de um servidor NTP:
/etc/systemd/timesyncd.conf > NTP=ca.pool.ntp.org
systemctl restart systemd-timesyncd.service
timedatectl set-ntp true
O estado é o seguinte:
$ timedatectl status
...
Network time on: yes
NTP synchronized: no
Como a saída indica, a hora ainda não está sincronizada. Alguém pode me ajudar nas seguintes questões?
- Quanto tempo levará para o timesyncd sincronizar com o NTP? Em que intervalos faz isso, onde posso verificá-los e alterá-los?
- Em casos urgentes: Só posso definir a hora manualmente ou posso forçar o timesyncd a sincronizar imediatamente com o servidor NTP?
Sem instalar mais nenhum pacote... Desligue o NTP, defina manualmente o tempo para estar próximo o suficiente , ligue o NTP novamente:
Definir serviço NTP inativo
Defina a hora manualmente
Obtenha a hora LOCAL aproximada do relógio de parede, do seu telefone, da Internet. Não precisa ser perfeito porque vamos ativar o ntp novamente em um momento...
Definir serviço NTP ativo
Espere.
Espere alguns minutos. Se a resposta em timedatectl não mudar, você terá problemas de rede.
O "Relógio do sistema sincronizado: não" mudará para "sim" quando estiver ajustado o suficiente para ser considerado 'em sincronia'. Algo como:
e
Solução de problemas
Quem você está pedindo para o tempo?
Espero que esse pool comum seja o melhor, mas algumas distribuições podem ter seus próprios, ou um regional ou você pode ter algo desatualizado; tudo bem, apenas certifique-se de que existe e serve ntp. Se houver um fechamento que você possa alcançar, como um servidor de horário corporativo que está dentro do firewall, você pode defini-lo aqui ou definir um servidor de reserva. Veja os documentos para mais.
Como está o andamento da sincronização?
Essa sincronização está indo mal: começou em 30 segundos, mas acabou esperando mais de 8 minutos entre as pesquisas. O
packet count
é uma contagem de entrada; ou seja: houve zero respostas. Veja acima um exemplo de um saudável. O intervalo de pesquisa se ajusta automaticamente em relação ao quanto seu relógio se desvia.Há qualquer mensagem de erro?
Verifique o syslog para obter pistas sobre qual pode ser o problema.
Neste exemplo, os pacotes de saída não estavam recebendo nenhuma resposta porque os pacotes ntp estavam sendo bloqueados por um firewall corporativo.
Para usar uma implementação NTP real, você precisa instalar e configurar um,
chrony
ou talvezntpd
. Faça isso se você precisar de qualquer monitoramento do desempenho do tempo. Vou assumir cronia.Adicione
iburst
às suas linhaspool
ouserver
em sua configuração para acelerar os poucos pacotes iniciais. Ainda pode demorar alguns minutos para estabilizar, seja paciente.Ao editar o chrony.conf, revise quando as etapas são permitidas. Por exemplo,
makestep 1.0 3
significa que nas primeiras 3 atualizações após o início do chronyd, um deslocamento maior que 1 segundo define o relógio imediatamente. Voltar no tempo é ruim para alguns aplicativos, portanto, grandes etapas geralmente não são permitidas quando o sistema está em execução.Na linha de comando, todas as variáveis podem ser consultadas.
chronyc tracking
mostrará o deslocamento atual. Tenha uma ideia de quais são seus requisitos, a precisão de um segundo pode facilmente tolerar dezenas de milissegundos de deslocamento.chronyc makestep
sem argumentos fará o ajuste atual imediatamente. Normalmente não é necessário, há uma diretiva de arquivo de configuração correspondente, e o chrony disciplinará o relógio de forma constante.makestep
na CLI é para corrigir o NTP interativamente quando você não deseja reiniciar o chronyd.timesyncd
é um cliente SNTP que pode definir o tempo, mas não discipliná-lo de forma gradual e contínua, nem filtrar o servidor NTP remoto com base na qualidade . (Ele também não pode falar com hardware de tempo ou PTP, apenas protocolo NTP.) Um pouco melhor do que repetidontpdate
, pelo que quero dizer relógio não muito bom. Pessoalmente, eu o substituo na maioria dos servidores.Sobre a única maneira de definir a hora com timesyncd é manualmente:
timedatectl set-time "2019-01-15 00:40:16"
. Não possui meios robustos para disciplinar e monitorar o relógio. As estatísticas básicas do NTP viatimedatectl timesync-status
são uma coisa relativamente nova, não acho que essa opção esteja disponível no Red Hat 7 ou no Ubuntu 18.04.systemd define "sincronizado" como se o NTP já foi usado para dizer ao Linux para ajustar o relógio. Especificamente, se a disciplina do kernel chamar adjtimex() retornou sem erro, e não o estado inicial. Consulte o código-fonte, systemd/src/basic/time-util.c.
Outra solução de problemas para mim foi olhar para
Então eu editei
vi /etc/systemd/timesyncd.conf
e descomente e defina:
e isso resolveu meu problema após a reinicialização do serviço timedatectl
Apenas como uma nota lateral para as pessoas que lutam com esse problema, às vezes a sincronização não funcionará de qualquer maneira em sistemas conteinerizados (por exemplo, OpenVZ) se a máquina host não fornecer os direitos adequados.
O
systemd-timesyncd
serviço não será iniciado em sistemas conteinerizados; o arquivo de serviço contém a seguinte diretiva:Tentar comentar isso e reiniciar o serviço pode funcionar, mas a menos que a máquina host tenha dado o direito ao contêiner, você pode ter esse erro na
systemctl status systemd-timesyncd
saída: