RTC 시간 동기화가 작동하지 않습니다(CONFIG_RTC_SYSTOHC)

RTC 시간 동기화가 작동하지 않습니다(CONFIG_RTC_SYSTOHC)

CONFIG_RTC_SYSTOHC커널에서 옵션을 활성화했습니다.

Device Drivers  --->
    [*] Real Time Clock  --->
        [*]   Set the RTC time based on NTP synchronization

도움말은 다음과 같이 말합니다.

CONFIG_RTC_SYSTOHC:

If you say yes here, the system time (wall clock) will be stored in the RTC
specified by RTC_HCTOSYS_DEVICE approximately every 11 minutes if userspace
reports synchronized NTP status.

그러나 내 하드웨어 시계가 동기화되지 않았습니다. 나는 RTC_HCTOSYS_DEVICE그것을 올바르게 설정했습니다 :

CONFIG_RTC_HCTOSYS_DEVICE="rtc0"

위에 인용된 도움말에서는 "사용자 공간이 동기화된 NTP 상태를 보고하는 경우" 동기화가 작동한다고 말합니다. 그게 무슨 뜻이야? 저는 ntpdatecron을 사용하여 주기적으로(4시간마다) 시간을 동기화합니다.

ntp동기화되었으며 하드웨어 시계가 동기화되기를 원한다는 것을 시스템에 어떻게 알릴 수 있습니까 ?

답변1

cron을 통해 이미 ntp시간 업데이트가 있으므로 ntpupdate해당 cron에 하드웨어 동기화를 추가하거나 두 번째 cron을 생성해 보는 것은 어떨까요? 나는 시계를 동기화하기 위해 회사의 매우 오래된 RHEL 3 및 4 시스템에서 이와 동일한 방법을 사용했습니다.

0 */4 * * * ntpdate mytimeserver.com && ( hwclock --adjust; hwclock -w )

ntpdate성공하면 이 크론은 하드웨어 시계를 시스템 시간으로 업데이트합니다. 에 대한 추가 정보hwclock commands.

메모 추가:

mytimeserver.com나에게는 중복성을 제공하기 위해 일부 시간 서버가 있는 내부 VIP입니다. 동일한 항목에 액세스할 수 없는 경우 ntp각 시스템이 하나의 ntp 서버에만 종속되지 않도록 서버를 다른 ntp 풀로 변경해야 합니다.

서버 1:

0 */4 * * * ntpdate 0.pool.ntp.org  && ( hwclock --adjust; hwclock -w )

서버 2:

0 */4 * * * ntpdate 1.pool.ntp.org  && ( hwclock --adjust; hwclock -w )

답변2

ntpdateSTA_UNSYNC시스템 시간을 조정할 때 플래그가 지워지지 않습니다. 따라서 커널은 시스템 시간이 유효하지 않은 것으로 간주하고 RTC를 업데이트하지 않습니다. 대신 시스템 시간을 설정 STA_UNSYNC하는 데 사용되므로 명확하지 않습니다 .adjtime()adjtimex()

이 기능을 사용하려면 플래그를 지우는 도구, 즉 를 CONFIG_RTC_SYSTOHC사용해야 합니다 .STA_UNSYNCntpd

이 문제는 아마도 ntpdate개발자에게 보고되어야 할 것입니다.

답변3

cronjob에서 실행하면 ntpdate실행될 때마다 시스템 시간이 조정되지만 이는 시스템이 "NTP 동기화"(시계가 주기적 동기화 간에 이동할 수 있음)되고 커널이 자동으로 RTC를 동기화하지 않는다는 의미는 아닙니다.

ntpdate실행하는 대신 cronjob에서 실행하는 특별한 이유가 있습니까 ntpd? ntpd더 정확한 시간을 유지하고 더 많은 오류 검사를 수행하며(잘못된 시간 서버로 인해 문제가 발생하지 않도록) 시스템의 클럭 주파수를 제어하여 오실레이터 드리프트를 보상합니다.

또한 커널에 "NTP 동기화 상태"를 보고한 다음 주기적으로 hwclock을 설정합니다.

ntpdate매뉴얼 페이지 에서 :

필요한 경우 ntpdate를 수동으로 실행하여 호스트 시계를 설정하거나 호스트 시작 스크립트에서 이를 실행하여 부팅 시 시계를 설정할 수 있습니다. 어떤 경우에는 NTP 데몬 ntpd를 시작하기 전에 처음에 시계를 설정하는 데 유용합니다. cron 스크립트에서 ntpdate를 실행할 수도 있습니다. 그러나 설계된 cron 스크립트를 갖춘 ntpdate는 복잡한 알고리즘을 사용하여 리소스 사용을 최소화하면서 정확성과 안정성을 최대화하는 NTP 데몬을 대체하지 않는다는 점에 주목할 가치가 있습니다. 마지막으로 ntpdate는 ntpd처럼 호스트 클럭 주파수를 지정하지 않기 때문에 ntpdate 사용의 정확성이 제한됩니다.

ntpd일반적으로 말해서, 특별한 이유가 없는 한(예: 데이터 전송 비용이 매우 많이 드는 원격 또는 격리된 시스템) 시계 동기화를 유지하는 데 이 기능을 사용하는 것이 가장 좋습니다 .

관련 정보