리눅스
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 | 하드웨어 클럭의 시간을 시스템 클럭으로 복사 | 시스템 부팅 초기에, 또는 시스템 시간이 잘못되었을 때 |