안녕하세요, timedatctl이 어떻게 작동하는지 이해하도록 도와주실 수 있나요?
시스템 시계 sysnc가 인터넷을 통해 NTP 서비스를 사용하는 경우 시스템 시간은 현재 날짜 및 시간으로 업데이트됩니다.
시스템 시계가 NTP와 동기화되면 11분마다 RTC가 업데이트됩니다. 그렇죠?
root@NB2-SOC-BSP-ALPHA-V1:~# date --set="2025-02-02 12:00:00" Sun Feb 2 12:00:00 IST 2025 root@NB2-SOC-BSP-ALPHA-V1:~# date Sun Feb 2 12:00:02 IST 2025 root@NB2-SOC-BSP-ALPHA-V1:~# timedatectl Local time: Sun 2025-02-02 12:00:04 IST Universal time: Sun 2025-02-02 06:30:04 UTC RTC time: Sat 2022-03-05 11:07:29 Time zone: Asia/Kolkata (IST, +0530) System clock synchronized: no NTP service: inactive RTC in local TZ: no root@NB2-SOC-BSP-ALPHA-V1:~# timedatectl set-ntp true root@NB2-SOC-BSP-ALPHA-V1:~# timedatectl Local time: Fri 2022-10-14 14:22:35 IST Universal time: Fri 2022-10-14 08:52:35 UTC RTC time: Sat 2022-03-05 11:07:39 Time zone: Asia/Kolkata (IST, +0530) System clock synchronized: yes NTP service: active RTC in local TZ: no root@NB2-SOC-BSP-ALPHA-V1:~# timedatectl Local time: Fri 2022-10-14 14:22:41 IST Universal time: Fri 2022-10-14 08:52:41 UTC RTC time: Sat 2022-03-05 11:07:45 Time zone: Asia/Kolkata (IST, +0530) System clock synchronized: yes NTP service: active RTC in local TZ: no
NTP 서비스를 활성화한 후 현지 시간 + 세계 시간만 업데이트되고 RTC 시간은 업데이트되지 않습니다. 이유는 무엇입니까?
답변1
다음은 두 번째 부분(hwclock 매뉴얼 페이지에서 가져옴)을 이해하는 데 도움이 될 수 있습니다.
일부 시스템에서는 하드웨어 시계를 동기화 상태로 유지하는 또 다른 방법이 있습니다. 알아두어야 할 사항입니다. Linux 커널에는 11분마다 시스템 시간을 하드웨어 시계에 복사하는 모드가 있습니다. 이 모드는 컴파일 타임 옵션이므로 모든 커널에 이 기능이 있는 것은 아닙니다. 이는 NTP와 같은 복잡한 기능을 사용하여 시스템 시계를 동기화할 때 좋은 패턴입니다. (NTP는 시스템 시간을 네트워크 어딘가에 있는 시간 서버 또는 시스템에 연결된 무선 시계와 동기화하는 방법입니다. RFC 1305를 참조하세요.)
커널이 "11분 모드" 옵션으로 컴파일되면 커널의 시계 규칙이 동기화될 때 활성화됩니다. 이 상태에서는 커널 time_status 변수의 비트 6(마스크 0x0040에 설정된 비트)이 설정 해제됩니다. 이 값은 adjtimex --print 또는 ntptime 명령의 "status" 줄로 출력됩니다.
커널의 시계 규칙을 동기화된 상태로 설정하여 "11분 모드"를 활성화하려면 NTP 데몬과 같은 외부 영향이 필요합니다. hwclock --hctosys를 포함하여 시스템 시계를 구식 방식으로 설정하는 프로그램을 실행하여 끌 수 있습니다. 그러나 NTP 데몬이 계속 실행 중이면 다음에 시스템 시계를 동기화할 때 다시 11분 모드가 켜집니다.
시스템이 "11분 모드"로 실행 중인 경우 시작 스크립트에서 --hctosys 또는 --systz를 사용해야 할 수 있습니다. 특히 하드웨어 시계가 로컬 시간 척도를 사용하도록 구성된 경우 더욱 그렇습니다. 커널이 하드웨어 시계가 사용하는 시간 단위를 알지 못하는 경우 잘못된 시간 단위로 손상될 수 있습니다. 커널은 기본적으로 UTC를 사용합니다.
시스템 시계를 설정하는 첫 번째 사용자 공간 명령은 하드웨어 시계가 사용하는 시간 척도를 커널에 알려줍니다. 이는 Permanent_clock_is_local 커널 변수를 통해 발생합니다. --hctosys 또는 --systz가 첫 번째인 경우 adjtime 파일 또는 적절한 명령줄 인수를 기반으로 이 변수를 설정합니다. 이 기능을 사용하고 하드웨어 시계 시간 단위 구성이 변경되면 커널에 알리기 위해 재부팅이 필요합니다.
hwclock --adjust는 NTP "11분 모드"와 함께 사용하면 안 됩니다.
11분 모드가 커널의 정상적인 기능인지는 모르겠습니다. 나는 그렇게 생각한다.
또한 systemd-timedated.service가 실행 중인지 확인하세요.
답변2
시스템 시계가 인터넷을 통해 NTP 서비스와 동기화되면 시스템 시간이 현재 날짜 및 시간으로 업데이트됩니다.
예, 시스템이 너무 동기화되지 않아 NTP 서비스가 뭔가 크게 잘못되었다고 생각하여 포기하지 않는 한 그렇습니다.
시스템 시계가 NTP와 동기화되면 11분마다 RTC가 업데이트됩니다. 그렇죠?
가능하지만 항상 그런 것은 아닙니다. Classic은 ntpd
기본적으로 chronyd
이 키워드를 구성 파일에서 사용할 때만 rtcsync
수행합니다 /etc/chrony/chrony.conf
. 다른 NTP 동기화 서비스 구현에 대해서는 해당 특정 구현에 대한 설명서를 참조하세요.