운영중입니다

hwclock이란? System Clock과의 차이점과 동기화 방법 본문

리눅스

hwclock이란? System Clock과의 차이점과 동기화 방법

https443 2025. 8. 6. 12:10

https://https443.tistory.com/18
 


지난 글에 system clock을 설정한 내용을 작성하였으며, 이번 글에는 system clock 설정 후 hwclock을 설정하는 내용을 작성.

✅ 1. hwclock 이란?

hwclock 명령어는 리눅스 시스템에서 하드웨어 시계(RTC, Real Time Clock)를 읽고 설정하는 데 사용되는 유틸리티.

 1.1 hwclock = 하드웨어 클럭 (RTC)

  • 메인보드에 있는 독립된 시계로, 전원이 꺼져도 유지. (CMOS 배터리로 유지).
  • 운영체제 시간(System Clock)과는 별도로 존재.
  • 리눅스 부팅 시 보통 hwclock의 시간을 OS가 읽고 사용.

 1.2 System Clock = 소프트웨어 클럭

  • 커널이 운영하는 클럭이며, 부팅 이후에는 주로 이걸 기준으로 동작.
  • date, timedatectl, rdate 등은 모두 이 System Clock을 조작.

 1.3 하드웨어 클럭과 소프트웨어 클럭의 차이

구분 하드웨어 클럭 (Hardware Clock) 소프트웨어 클럭 (System Clock)
다른 이름 RTC(Real-Time Clock), BIOS Clock System Time, Kernel Clock
위치 메인보드에 있는 독립된 시계 칩 커널이 메모리에서 유지하는 시계
전원 차단 시 배터리(CMOS)로 계속 유지됨 전원 차단 시 초기화됨
부팅 시 역할 부팅 시 OS가 여기서 시간 읽음 부팅 이후 시스템 전체가 이 시간을 기준으로 작동
시간 변경 hwclock 명령어로 설정 가능 date, timedatectl, rdate 등으로 설정 가능
정밀도 대체로 낮음 (오차 발생 가능) NTP 등을 통해 높은 정확도 유지 가능

 


 

✅ 2. System Clock을 설정한 후 Hardware Clock을 설정해야 하는 이유

       2.1 부팅 시 하드웨어 클럭이 시스템 시간의 기준이 되기 때문

  • 시스템이 부팅될 때 운영체제는 보통 하드웨어 클럭의 값을 읽어 소프트웨어 클럭을 초기화.
  • 만약 하드웨어 클럭이 오래된 값(예: 몇 달 전의 시간)을 가지고 있다면, 재부팅 시 그 오류 난 시간으로 시스템이 부팅될 수 있음
  • 정확한 시스템 시간을 유지하려면, 하드웨어 클럭도 최신 상태로 저장해두어야 함.

       2.2 전원이 꺼지면 시스템 클럭은 사라지기 때문

  • System Clock은 RAM 상에 존재하며, 컴퓨터 전원을 끄면 사라짐.
  • 하드웨어 클럭은 CMOS 배터리로 유지되므로, 시스템을 다시 켤 때 유일한 시간 기준이 됨.
  • 따라서 정확한 시간 유지를 위해서는 System Clock을 설정한 뒤 하드웨어 클럭도 같이 맞춰야 함.

 

       2.3 NTP로 동기화해도 하드웨어 클럭은 자동으로 바뀌지 않기 때문

  • chrony나 ntpd 등으로 NTP 시간 동기화를 수행해도, 하드웨어 클럭은 그대로 유지.
  • 그래서 일반적으로 NTP를 통해 시스템 시간을 맞춘 뒤 다음 명령을 사용.

      2.4 시스템 관리 도구와 로그 정확도 확보

  • 많은 시스템 작업이나 로그, cron, journalctl 등의 시간 기록은 정확한 시간을 기준으로 작동해야 함.
  • 만약 하드웨어 클럭이 맞지 않으면, 재부팅 후 시간이 튀어서 로그가 꼬이거나 예약 작업이 오작동할 수 있음.


✅ 3. hwclock 명령어

# 하드웨어 클럭 현재 시간 확인
hwclock 

# 시스템 시간 → 하드웨어 클럭 복사
hwclock --systohc

# 하드웨어 클럭 → 시스템 시간 복사
hwclock --hctosys

 

명령어 방향 의미 사용 시점
hwclock --systohc System Clock → Hardware Clock 현재 시스템 시간을 하드웨어 클럭(RTC)에 저장 rdate, date, timedatectl 등으로 시스템 시간을 설정한
hwclock --hctosys Hardware Clock → System Clock 하드웨어 클럭의 시간을 시스템 클럭으로 복사 시스템 부팅 초기에, 또는 시스템 시간이 잘못되었을 때