D. J. Bernstein 이 만든 clockspeed는 NTP 프로토콜을 사용해 믿을만한 소스와의 시간 동기화에 쓰이는 sntpclock, 로컬 네트워크상의 컴퓨터들의 시간을 동기화 시키는데 쓰이는 데몬과 클라이언트 (taiclockd, taiclock)등을 포함하고 있다.
컴파일/설치
clockspeed 소스를 다운로드한다 clockspeed-0.62.tar.gz (local copy, RPM).

tar xzf clockspeed-0.62.tar.gz
cd clockspeed-0.62
make
make setup check

파일들은 /usr/local/clockspeed/에 설치되며 /etc/leapsecs.dat도 생긴다. 실행파일들은 /usr/local/clockspeed/bin/에 설치되므로, $PATH에 추가해준다.

glibc 2.3.1 이상에서는 컴파일이 되지 않을 것이다. 다음 패치를 적용 후 컴파일 한다. clockspeed-0.62.errno.patch


시간 조정
일단 정확한 시간 소스를 제공할 믿을 만한 NTP 서버를 사용해야 하는데 http://www.eecis.udel.edu/~mills/ntp/servers.htm에서 찾을수 있다 (나는 ntp.nasa.gov를 사용했다).

NTP서버의 ip를 1.2.3.4 라고 가정하고, 일단 자신의 시스템과 NTP 서버간의 시간차이를 보자.

[ gate@root ]$ sntpclock 1.2.3.4 | clockview
before: 2001-12-24 13:31:37.609422000000000000
after: 2001-12-24 13:25:37.718549326965332031

결과에서 보여지는 것처럼 꽤 차이가 나고 있음을 알수 있다. 다음과 같이 시간을 맞추어준다.
sntpclock 1.2.3.4 | clockadd

다시 얼마나 차이가 나는지 확인,
[ gate@root ]$ sntpclock 1.2.3.4 | clockview
before: 2001-12-24 13:37:07.265703000000000000
after: 2001-12-24 13:37:07.391163127197265624

이제 거의 차이가 없음을 알수 있다.

정확한 시간으로 유지하기
RTC 자체의 부정확함 때문에 한번 시간을 정확히 맞추었다 하더라고 얼마간의 시간이 지나면 다시 오차가 생기기 시작하게 된다. 이것을 막기 위해 clockspeed를 다음과 같은 방법으로 실행해준다.


clockspeed를 실행하고 NTP서버와의 오차를 기록한다.
clockspeed &
sntpclock 1.2.3.4 > /usr/local/clockspeed/adjust &

몇시간 뒤에 다시 오차를 clockspeed에게 알려준다.
sntpclock 1.2.3.4 > /usr/local/clockspeed/adjust &

몇일 후에 오차를 확인해보고 위 과정을 반복한다.
sntpclock 1.2.3.4 | clockview
sntpclock 1.2.3.4 > /usr/local/clockspeed/adjust &

3번 과정을 몇주후, 몇개월 후에 한번 실행해주면 NTP서버와 거의 오차가 없는 완벽한 동기화가 이루어 진다.

로컬 네트워크의 시간 동기화
이제 우리는 위의 과정으로 시간이 정확히 맞추어진 시스템을 기준으로 로컬 네트워크상의 다른 컴퓨터들의 시간을 동기화 할수 있다. 이때 기준이 되는 서버에서는 TAICLOCK 프로토콜을 제공하는 taiclockd 데몬을 실행주켜 주고, 다른 컴퓨터들은 taiclock 클라이언트를 사용하여 시간을 동기화 시킨다.

기준이 되는 서버의 ip가 192.168.1.1 이라고 가정하고,


기준이 되는 서버상에 taiclockd 를 실행시킨다 (root 권한으로 실행하지 않아도 된다). .
taiclockd &

이제 부터는 기준 서버와 시간을 동기할 클라이언트상에서 해야할 일이다. 일단 기준 서버와의 오차를 확인해 본다.
[ home@root ]$ taiclock 192.168.1.1 > /tmp/adjust
[ home@root ]$ clockview < /tmp/adjust
before: 2001-12-24 14:10:34.888573000000000000
after: 2001-12-24 14:17:14.884068500000000000

7분이나 차이가 나고 있었다! :(

시간을 맞춰주자.
clockadd < /tmp/adjust

위에서 설명한 것처럼 정확한 시간을 유지하기 위해 clockspeed 를 실행하고, 오차를 기록한다.
clockspeed &
taiclock 192.168.1.1 > /usr/local/clockspeed/adjust &

몇일후에 다시 이 과정을 반복한다.
taiclock 192.168.1.1 > /usr/local/clockspeed/adjust &


daemontools로 clockspeed 구동하기 다음 내용은 홍덕기 may@base.yonsei.ac.kr님께서 보내주셨습니다.
daemontools 에 clockspeed 서비스 디렉토리를 생성 $ mkdir /var/service/clockspeed


서비스의 실행 스크립트를 생성 $ vi /var/service/clockspeed/run
#!/bin/sh
exec 2>&1
PATH="/usr/local/clockspeed/bin:/sbin:/usr/sbin:/bin:/usr/bin:$PATH"
exec clockspeed


run 스크립트를 실행 모드로 설정해 준다 $ chmod 755 /var/service/clockspeed/run


daemontools 서비스로 실행 $ ln -s /var/service/clockspeed /service


이와 같이 하면 항상 백그라운드로 clockspeed 를 띄워 둘 수 있다.
2005/07/04 12:15 2005/07/04 12:15

트랙백 주소 :: 이 글에는 트랙백을 보낼 수 없습니다