하도 짜증나서 쓰는 글이다.
SR 로 매번 열리는 것도 한계가 있고, 그런 반복되는 SR 따윈 하고싶지 않기에,
글로벌 굴지의 S 모그룹사에서 무한대로 쓰잘대기없이 파고드는 질문만 하는거
답변하기도 귀찮아서 글을 작성..
뭐 있든지 없든지 모르겠지만 일단 검색해도 잘 모르겠으니까 다들 물어보는거 아닐까?
Leap second ( 윤초 ) 라는 것은 일단 모든 시계는 사실상 아주 정확하게 기록되지 않는 다는 것을 기본 전제로,
원자시계와 현실시계가 1초이상 차이가 나게 될 경우, 그 1초를 더하거나 빼주어 보정하는 것을 의미한다.
올해 즉 2015년 6월 30일 (우리나라는 7월 1일) 에 발생하며, 양의 윤초다.
양의윤초는 뭥미? 에 대해서는 아래 나온다.
윤초시의 시간보정은 양의 윤초(+), 음의 윤초로(-) 나뉘어 지며 아래와 같다.
<양의윤초>
08:59:59.00201
08:59:59.20329
08:59.59.58291
08:59:59.89201
08:59:60.20392 <<<<< 60 초 라는 가상의 초가 삽입된다.
08:59.60.74829 <<<<<
09:00:00
<음의윤초>
08:59:59.00201
08:59:59.20329
08:59.59.58291
08:59:59.89201
08:59:59.10392 <<<<< 59 초 가 다시 반복된다.
08:59.59.74829 <<<<<
09:00:00
올해의 시간보정은 양의윤초의 타임테이블을 따르며, 시스템은 저렇게 시간을 표시하게 된다.
그럼 이 윤초는 단순한 시간보정인데 뭐가 이렇게 난리이냐?
이 윤초 적용을 통해 시간테이블이 늘어나면서 (쉽게 설명하자면) 커널 및 어플리케이션 일부의 Timer가
오동작하는 것이 실제 문제이다. 즉 Leap second effect 라고 하며, 두가지로 나뉠 수 있다.
바로 시스템 전체에 가져오는 문제와 어플리케이션끼리의 시간동기화 실패 문제이다.
1. 커널의 경우 Jitters 라는 커널 timer 가 값을 잘못 갖게 되면서
Panic 또는 Rebooting 을 발생시킬 수 있다.
아래는 윤초 보정이 대비되지 않아 커널 Freezing 등을 발생시킬 수 있는 커널을 나열하였다 :
RHEL4/OL4 : 2.6.9-89 이전
RHEL5/OL5 : 2.6.18-164 이전
RHEL6/OL6 : 2.6.32-279.5.2 이전
즉 자신의 시스템이 해당되는 커널 보다 낮은 버젼을 사용하고 있다면,
100% 확률로 윤초 보정으로 인한 Freeze 또는 리부팅이 발생할 수 있다는 것이다.
이 사태를 해결하기 위해서는 각 플랫폼(OS version) 별로,
기술된 커널 버젼 이상의 버젼으로 업그레이드 해야 한다.
2. 두번째 문제인 어플리케이션의 시간이 동일하게 동작해야만 하는 서비스 차원의 문제이다.
이런 경우 NTP daemon 을 통해 우리는 시스템의 시간을 동기화 하고 있다.
다만 이 NTP 의 시간동기화 방식에는 절대적인 값을 그대로 Counting 하는 방법과,
NTP server 가 되는 동기화 대상 서버의 Timer 와의 시간을 1000 (또는 500) PPM 범위 안에서
Offset 기반으로 유지시켜 동기화를 시키는 방법인데,
Leap second 의 해결을 위해서는 Offset 기반으로 하는 SLEW 모드를 사용하여 NTP 를 동작시켜야 한다.
방법은 다음과 같다 (RHEL/OL 기준):
# vi /etc/sysconfig/ntpd
OPTIONS="-x -u ntp:ntp -p /var/run/ntpd.pid" <<< -x option 추가.
# service ntpd restart
간단하게 이렇게 Slew 모드를 사용해 동작시키면 윤초 보정에 대한 걱정을 하지 않아도 된다.
하지만 RHEL6/OL6 의 ntp-4.2.6p5-1, ntp-4.2.6p5-2 버전을 사용시에는
Slew mode 로 동작하지 않는 버그가 있으므로, 그 이상의 NTP package 로 업데이트가 필요하다.
3. NTP 를 사용하지 않는 서버들의 경우에는 TZdata 라는 Timezone data 테이블을 업데이트 해주면 된다.
tzdata 라는 패키지를 통해 우리는 다른 모든 국가의 나라들을 쉽게 알 수 있고, 설정할 수 있다.
leapsecond 보정이 반영된 tzdata 의 버젼은 아래와 같다 :
tzdata-2015a-1
정리하자면, Leap second 보정으로 인해 발생할 수 있는 문제는 두가지로써,
커널의 Panic, Rebooting 과 어플리케이션들의 시간이 동기화되지 않는 문제이다.
1. 커널의 경우는 아래 조건들 이상의 커널로 업데이트가 필요하다 :
RHEL4/OL4 : 2.6.9-89 이상
RHEL5/OL5 : 2.6.18-164 이상
RHEL6/OL6 : 2.6.32-279.5.2 이상
2. NTP 를 사용하는 시스템의 경우 Slew mode 로 수행해야 하며,
ntpd daemon 을 -x 옵션과 함께 실행하면 해결된다.
다만 RHEL/OL 6 버젼에서 제공되는 ntp-4.2.6p5-1, ntp-4.2.6p5-2 이 두 버젼에서는
Slew mode 가 동작하지 않는 버그가 있으니 그 이상의 NTP 패키지로 업그레이드 한다.
3. NTP 를 사용하지 않는 시스템의 경우, tzdata 를 tzdata-2015a-1 이 후로 업그레이드 한다.
참고로 다음 표를 살펴 시스템에 대조해 보면 Leap seccond issue 에 Affected 된 시스템인지 쉽게 알 수 있다.
|
Kernel |
NTP 사용 | NTP 사용 안함 |
RHEL/OL 4 |
2,6,9-89 이하 |
-x 옵션 없음 | tzdata-2015a-1 이하 |
RHEL/OL 5 |
2.6.18-164 이하 |
-x 옵션 없음 | tzdata-2015a-1 이하 |
RHEL/OL 6 |
2.6.32-279.5.2 이하 |
ntp-4.2.6p5-1 ntp-4.2.6p5-2 | tzdata-2015a-1 이하 |
RHEL/OL 7 |
해당없음 |
-x 옵션 없음 | tzdata-2015a-1 이하 |
UEK 사용시 |
해당없음 |
-x 옵션 없음 | tzdata-2015a-1 이하 |
끝
'Skills > System' 카테고리의 다른 글
Kernel dump 분석 추가.. (0) | 2017.04.03 |
---|---|
User-space bootless patching - Ksplice (0) | 2016.12.01 |
Kernel dump analysis about the bug called as "devide by zero" (0) | 2014.01.06 |
타올라라 리눅스 성능카운터들이여 - Flame Graphs (0) | 2012.03.22 |
CPU Speed 조절을 통한 전력소비당 퍼포먼스 효율을 높여봅시다! (0) | 2012.03.20 |