linux시스템에서는 system clock과 hardware clock 두가지가 있습니다.
system clock은 file 생성, process 실행, 그리고 날자와 시각이 필요한 곳에 쓰이며,
date 명령 혹은 ntpd service를 통해 수동 혹은 자동으로 설정 또는 조회가 가능합니다.
hardware clock은 motherboard의 CMOS 설정과 관련이 있으며, hwclock 명령으로 설정 또는 확인 할 수 있습니다.
아래 내용은 CentOS 와 Ubuntu 시스템에서 hwclock를 이용하여 hardware clock 을 설정하는 방법입니다.
## CentOS 5.x 에서의 TimeZone Setting ##
우선 리눅스(CentOS설치시) TIME ZONE 은 “Asia/Seoul” 기준 입니다..
하지만 셋팅이 완료되고 난 후 date 와 hwclock 을 이용하여 날짜&시간 값을 확인하였을 경우 두개의 값이 서로 다른
경우가 있습니다.
================================================
[root@localhost]# date
Wed Dec 21 16:13:07 EST 2011
[root@localhost]# hwclock
Wed 21 Dec 2011 04:13:49 PM EST -0.297984 seconds
================================================
이러한 경우는 KVM을 이용한 가상서버를 사용하는 경우, Guest VM (가상서버) 에서도 동일하게 적용됩니다.
또한 이러한 가상서버에서는 시스템의 시간이 현재 시간과의 오차가 발생하게 됩니다.
date값 과 hwclock 값을 동일하게 맞추기 위해서는 다음과 같은 방법을 이용하여 보시면 두개의 시간 값이 동기화
될 것입니다.
우선
[root@localhost]# cat /etc/sysconfig/clock
ZONE=”Asia/Seoul”
UTC=TRUE ======> UTC=false
ARC=false
UTC의 기본값은 TRUE로 사용하는것으로 기본설정이 되어있습니다.
이것을 사용하지 않도록 수정합니다.
* UTC ( Universal Time Code )
: 1972년 1월 1일부터 시행된 국제 표준시이다. UTC는 국제원자시와 윤초보정을 기반으로 표준화되었습니다.
UTC는 그리니치 평균시(GMT)로 불리기도 하는데, UTC와 GMT는 초의 소숫점 단위에서만 차이가 나기 때문에
일상에서는 혼용되어 사용되며, 기술적인 표기에서는 UTC가 사용됩니다.
[root@localhost ~]# cat /etc/adjtime
-131.447378 1389327336 0.000000
1389327336
UTC
[root@localhost ~]# hwclock -w –localtime === 운영체제의 시간을 참조하여 하드웨어 시간조정
* /etc/adjtime 의 UTC 값이 LOCAL 로 변경됩니다.
[root@localhost ~]# cat /etc/adjtime
-131.447378 1389328734 0.000000
1389328734
LOCAL
* 위와 같은 절차 진행 후 재부팅 ( reboot )
단, 가상서버의 경우 GuestVM이 구동되는 HOST 서버의 시간이 Local 시스템의 시간으로 지정되도록
/etc/adjtime의 UTC 설정을 LOCAL로 적용한 후에 운여되는 GuestVM을 재부팅이 아닌 종료 후 시작을
진행하여야 정상적으로 적용됩니다.
==========================================================================
## 우분투 (Ubuntu 12.04) 에서의 TimeZone Setting ##
* 우분투 기본설치후에도 CentOS와 마찬가지로 Timezone 셋팅은 UTC로 맞추어져 있을것입니다.
그리고 /etc/adjtime 파일이 보이지 않는 상태일 것입니다.
첫번째로, /etc/default/rcS 파일을 열어 UTC설정을 사용않함으로 변경합니다.
[ root@ubuntu:~]# vi /etc/default/rcS
# assume that the BIOS clock is set to UTC time (recommended)
UTC=yes ====> “no” 로 변경
두번째로, localtime 설정
[ root@ubuntu:~]# hwclock –systohc –localtime
위의 두 단계를 실행하면 다음과 같이 /etc/adjtime 파일이 자동으로 생성됩니다.
[ root@ubuntu:~]# cat /etc/adjtime
0.000000 1389334049 0.000000
1389334049
LOCAL
* 외와 같이 우분투에서의 Timezoen 설정이 완료되면 시스템을 종료 후 시작 하면 date 값과 hwclock 값이 동기화 되어
시간오차가 발생하지 않음을 확인할 수 있습니다.
* hwclock
하드웨어(Rom-bios) 시간을 확인하거나 리눅스와의 시간을 동기화 시킴
운영체제의 시간을 참조하여 하드웨어 시간조정하기
[root@localhost ~]# hwclock -w
하드웨어시간을 참조하여 운영체제 시간조정하기
[root@localhost ~]# hwclock -s
==========================================================================
* rdate를 이용한 시간 동기화
# rdate -s time.bora.net && date > /dev/null && clock -r > /dev/null && clock -w > /dev/null 2> /dev/null
==========================================================================