39 Sincronização de horário com NTP #
O mecanismo NTP (network time protocol) é um protocolo para sincronizar o horário do sistema na rede. Primeiro, uma máquina pode obter o horário de um servidor, que é uma fonte de horário confiável. Segundo, a máquina pode agir como uma fonte de horário para outros computadores na rede. O objetivo é duplo: manter o tempo absoluto e a sincronização do horário do sistema de todas as máquinas na rede.
Manter um horário exato do sistema é importante em várias situações. Geralmente, o relógio do hardware incorporado não atende aos requisitos dos aplicativos, como bancos de dados ou clusters. A correção manual do horário do sistema levaria a problemas severos pois, por exemplo, um pulo inverso pode causar o mau funcionamento de aplicativos críticos. Em uma rede, geralmente é necessário sincronizar o horário do sistema de todas as máquinas, porém, o ajuste manual do horário não é um bom método. O NTP dispõe de um mecanismo para resolver esses problemas. O serviço NTP ajusta continuamente o horário do sistema com servidores de horário confiáveis na rede. Ele habilita também o gerenciamento de relógios de referência local como relógios controlados pelo rádio.
A partir do SUSE Linux Enterprise Desktop 15, o chrony
é a implementação padrão do NTP. O chrony
inclui duas partes: chronyd
é um daemon que pode ser iniciado no momento da inicialização, e chronyc
é um programa de interface de linha de comando que monitora o desempenho do chronyd
e muda vários parâmetros operacionais em tempo de execução.
A partir do SUSE Linux Enterprise Desktop 15.2, o módulo do YaST para configuração do cliente NTP define o systemd-timer, em vez do daemon cron, para executar o chrony
, quando ele não está configurado para ser executado como um daemon.
Para habilitar a sincronização de horário por meio do diretório ativo, siga as instruções em Procedure 7.2, “Joining an Active Directory domain using . ”
39.1 Configurando um cliente NTP com YaST #
O daemon do NTP (chronyd
) que acompanha o pacote chrony
vem predefinido para usar o relógio do hardware do computador local como referência de horário. A precisão de um relógio de hardware depende substancialmente da sua fonte de horário. Por exemplo, um relógio atômico ou um receptor GPS é uma fonte de horário muito precisa, enquanto um chip RTC comum não é uma fonte de horário confiável. O YaST simplifica a configuração de um cliente NTP.
Na janela de configuração do cliente NTP do YaST (
› ), você pode especificar quando iniciar o daemon do NTP, o tipo de fonte de configuração e adicionar servidores de horário personalizados.39.1.1 Início do daemon do NTP #
Há três opções que você pode escolher para iniciar o daemon do NTP:
Selecione
para iniciar manualmente o daemonchrony
.Selecione
para definir o horário do sistema periodicamente sem a execução permanente dochrony
. Você pode definir o .Selecione
para iniciar ochronyd
automaticamente quando o sistema for inicializado. Essa configuração é recomendada.
39.1.2 Tipo de fonte de configuração #
Na caixa suspensa
, selecione ou . Defina como se o seu servidor usa apenas um conjunto fixo de servidores NTP (públicos). A opção é melhor quando sua rede interna oferece servidores NTP via DHCP.39.1.3 Configurar servidores de horário #
Os servidores de horário para consulta do cliente estão listados na parte inferior da janela
. Modifique esta lista conforme necessário com , e .Clique em
para adicionar um novo servidor de horário:No campo
, digite o URL do servidor de horário ou do pool de servidores de horário com os quais você deseja sincronizar o horário da máquina. Depois que o URL estiver completo, clique em para verificar se ele aponta para uma fonte de horário válida.Ative
para acelerar a sincronização de horário por meio do envio de mais solicitações quando o daemonchronyd
é iniciado.Ative
para acelerar o tempo de inicialização nos sistemas que iniciam o daemonchronyd
automaticamente e podem não ter uma conexão de Internet no momento da inicialização. Essa opção é útil, por exemplo, para laptops com conexões de rede gerenciadas pelo NetworkManager.Confirme com
.
39.2 Configurando manualmente o NTP na rede #
O chrony
lê sua configuração do arquivo /etc/chrony.conf
. Para manter o relógio do computador sincronizado, você precisa informar ao chrony
quais servidores de horário devem ser usados. Você pode usar nomes de servidores ou endereços IP específicos. Por exemplo:
0.suse.pool.ntp.org 1.suse.pool.ntp.org 2.suse.pool.ntp.org 3.suse.pool.ntp.org
Você também pode especificar o nome de um pool. O nome do pool é resolvido para vários endereços IP:
pool pool.ntp.org
Para sincronizar o horário em vários computadores na mesma rede, não é recomendável sincronizar todos eles com um servidor externo. Convém especificar um computador como servidor de horário, que é sincronizado com um servidor de horário externo, e o outro computador atua como cliente dele. Adicione uma diretiva local
ao /etc/chrony.conf
do servidor para diferenciá-lo de um servidor de horário autorizado:
local stratum 10
Para iniciar o chrony
, execute:
systemctl start chronyd.service
Após a inicialização do chronyd
, levará algum tempo para estabilizar o horário, e o arquivo drift que corrige o relógio do computador local será criado. Com o arquivo DRIFT, o erro sistemático do relógio do hardware pode ser registrado quando o computador é ligado. A correção é usada imediatamente, resultando em uma estabilidade maior do horário do sistema.
Para habilitar o serviço que permite iniciar o chrony
automaticamente no momento da inicialização, execute:
systemctl enable chronyd.service
yast-timesync.service
conflitante
Além do serviço chronyd.service
, o SLED inclui o yast-timesync.service
. O yast-timesync.service
é acionado por um temporizador a cada 5 minutos e executa o chronyd
com a opção -q
para definir o horário do sistema e sair. Como apenas uma instância do chronyd
pode estar em execução a qualquer momento, não habilite nem inicie os dois serviços relacionados ao chronyd
simultaneamente.
39.3 Configurar o chronyd
em tempo de execução usando o chronyc
#
Você pode usar o chronyc
para mudar o comportamento do chronyd
em tempo de execução. Ele também gera relatórios de status sobre a operação do chronyd
.
Você pode executar o chronyc
no modo interativo ou não interativo. Para executar o chronyc
interativamente, digite chronyc
na linha de comando. Esse procedimento exibe um prompt e aguarda a entrada do seu comando. Por exemplo, para verificar quantas fontes NTP estão online ou offline, execute:
#
chronyc
chronyc> activity 200 OK 4 sources online 2 sources offline 1 sources doing burst (return to online) 1 sources doing burst (return to offline) 0 sources with unknown address
Para sair do prompt do chronyc
, digite quit
ou exit
.
Se você não precisa usar o prompt interativo, digite o comando diretamente:
#
chronyc
activity
As mudanças feitas com o chronyc
não são permanentes. Elas serão perdidas após a próxima reinicialização do chronyd
. Para mudanças permanentes, modifique o /etc/chrony.conf
.
Para obter uma lista completa dos comandos do chronyc
, consulte a página de manual dele (man
1 chronyc
).
39.4 Sincronização de horário dinâmica em tempo de execução #
Embora o chronyd
seja inicializado normalmente em um sistema que inicializa sem uma conexão de rede, a ferramenta não pode resolver os nomes DNS dos servidores de horário especificados no arquivo de configuração.
O chronyd
continua tentando resolver os nomes de servidor de horário especificados pelas diretivas server
, pool
e peer
em um intervalo de tempo crescente até obter êxito.
Se o servidor de horário não puder ser acessado quando o chronyd
for iniciado, você poderá especificar a opção offline
:
server server_address offline
O chronyd
não tentará fazer poll no servidor até ser habilitado usando o seguinte comando:
#
chronyc online server_address
Quando a opção auto_offline
está definida, o chronyd
pressupõe que o servidor de horário estava offline quando duas solicitações foram enviadas a ele sem receber uma resposta. Essa opção evita a necessidade de executar o comando “offline” do chronyc
ao desconectar o link de rede.
39.5 Configurando um relógio de referência local #
O pacote de software chrony
depende de outros programas (como gpsd
) para acessar os dados de horário por meio do driver SHM ou SOCK. Use a diretiva refclock
em /etc/chrony.conf
para especificar um relógio de referência de hardware a ser usado como fonte de horário. Ela tem dois parâmetros obrigatórios: um nome de driver e um parâmetro específico do driver. Os dois parâmetros são seguidos de zero ou de mais opções do refclock
. O chronyd
inclui os seguintes drivers:
PPS: driver para a API do kernel
pulse per second
. Por exemplo:refclock PPS /dev/pps0 lock NMEA refid GPS
SHM: driver de memória compartilhada do NTP. Por exemplo:
refclock SHM 0 poll 3 refid GPS1 refclock SHM 1:perm=0644 refid GPS2
SOCK: driver de soquete de domínio do Unix. Por exemplo:
refclock SOCK /var/run/chrony.ttyS0.sock
PHC: driver de relógio do hardware PTP. Por exemplo:
refclock PHC /dev/ptp0 poll 0 dpoll -2 offset -37 refclock PHC /dev/ptp1:nocrossts poll 3 pps
Para obter mais informações sobre as opções de drivers individuais, consulte man 8
chrony.conf
.
39.6 Sincronização do relógio com uma Referência de Horário Externa (ETR, External Time Reference) #
O suporte para sincronização do relógio com uma referência de horário externa (ETR) está disponível. A referência de horário externa envia um sinal do oscilador e um sinal de sincronização a cada 2**20 (2 elevado à potência de 20) microssegundos para manter sincronizados os relógios TOD de todos os servidores conectados.
Para disponibilidade, é possível conectar duas unidades ETR a uma máquina. Se a diferença do relógio for maior do que a tolerância da verificação de sincronização, todas as CPUs terão suas máquinas marcadas indicando que o relógio não está sincronizado. Se isso acontecer, todos os dispositivos DASD de E/S habilitados para XRC serão parados até o relógio ser novamente sincronizado.
O suporte a ETR é ativado por meio de dois atributos sysfs
. Execute os seguintes comandos como root
:
echo 1 > /sys/devices/system/etr/etr0/online echo 1 > /sys/devices/system/etr/etr1/online