전혀.

전혀.

RedHat은 경고합니다.홈페이지:

윤초 이벤트는 2016년 12월 31일 23:59:60 UTC에 발생합니다.

느낌표가 앞에 붙고 다음과 같습니다.중요한. 윤초는 시스템에 어떤 해를 끼치나요? 우리는 이 문제를 어떻게 처리해야 합니까?

답변1

전혀.

윤초는 1972년부터 발생해 왔으며, 유닉스 시스템에서도 윤초가 발생하고 있습니다.상처 없는항상.

RedHat은 이번에 고객 지원 WWW 사이트 상단에 Amber Alert 메시지를 표시하기로 결정했는데, 이는 사람들에게 다소 잘못된 인상을 주었고 사람들이 이것이 제로 데이 바이러스 경고와 유사하다고 생각하고 다양한 방식으로 대응하도록 유도했습니다. 예를 들어 다음에서 볼 수 있습니다.Leap Second 버그 2016년 12월 31일"윤초 오류"에 대해 이야기하십시오.

윤초실수가 아니다, Unix 시스템은 이를 완벽하게 처리합니다. 수십 년 동안 C 라이브러리는 tm_sec도메인이 다음을 tm수행할 수 있다는 아이디어를 장려해 왔습니다.때때로 값은 60입니다..

실제로 유일한 실제 문제는 Unix와 Linux 시스템이 선호도에 따라 다양한 방식으로 작업을 처리한다는 것입니다. 따라서 어떤 조치가 필요한지 알기 위해서는 어떤 설정을 선택했는지 알아야 합니다.

RedHat 페이지는 광범위한 맥락에서 이를 숨기고 TAI-10 시스템에 대해 잘못된 가정을 하며 Unices 및 Linux 운영 체제에 대한 일반적인 질문에 대한 답변이 아닙니다.RedHat Linux 전용).

기본적으로 무엇을 해야 하는지 알기 위해서는 세 가지 질문에 대답해야 합니다.

  • 커널 시계가 UTC로 실행됩니까? 아니면 TAI-10에서?
  • 컴퓨터의 시계를 다른 시스템과 동기화하기 위해 무엇을 사용합니까?
  • 다른 시스템은 윤초를 어떻게 처리합니까?

해야 할 일에 대한 몇 가지 예

커널 시계는 TAI-10이고 시스템은 TAI 인식 도구를 사용하여 TAI-10 서버와 동기화 중입니다.

Daniel J. Bernstein의 것과 유사한 동기화 도구taiclock, 로랑 베르코의s6-taiclock, 또는 OpenBSD의 rdate기본 TAI-10 모드.

이 경우 윤초 시계가 최신인지 확인하는 것 외에는 아무것도 할 필요가 없습니다. 코어 시계는 초당 1SI초씩 계속해서 움직이고(오실레이터 드리프트 수정 등 허용) 도약 스톱워치는 TAI-10에서 UTC로의 조정을 처리합니다.

최신 상태로 유지해야 하는 두 가지 테이블 세트가 있습니다.

  • 시간대 파일의 파일은 right/시스템에 시간대 파일 패키지의 최신 버전이 있는지 확인하여 최신 상태로 유지됩니다.
  • Bernstein과 다른 사람들이 사용하는 도구 세트는 다음 위치에 있습니다./etc/leapsecs.dat

    번스타인 씨는 아직 업데이트하지 않았습니다leapsecs.datcr.yp.to, 하지만 이미 게시했습니다.업데이트됨leapsecs.dat여기에는 단일 패키지에 포함된 2016-12-31 23:59:60 UTC 윤초가 포함됩니다 leapsecs.

동기화하는 서버도 TAI-10을 사용하므로 게시하는 초도 항상 1SI초 길이로 설계되었습니다. TAI-10을 사용하는 서버에서는 스테핑, 회전 또는 테일링이 발생하지 않습니다. 모든 사람은 일정한 길이의 SI 초로 선택되며 윤초는 C 라이브러리의 아티팩트로만 표시됩니다.

커널 시계는 TAI-10이고 시스템은 TAI 인식 도구를 사용하여 UTC 서버와 동기화됩니다.

rdate동기화 도구는 OpenBSD의 UTC 모드 입니다 .

이 경우에도 이전 경우처럼 윤초 시계가 최신 상태인지 확인하는 것 외에는 아무것도 할 필요가 없습니다. 코어 클럭은 다시 초당 1SI초로 계속해서 똑딱거립니다.

문제는 서버가 없다는 것입니다.

  • 만약 그들이도말 표본윤초가 지나면 그들은 한 해의 마지막 날의 대부분 동안 시간이 약간 느려진다고 보고합니다. 시간 동기화 도구는 잘못된 UTC와 동기화를 유지하기 위해 TAI-10을 불필요하게 조정하여 윤초가 도달하면 TAI-10이 1초 뒤처지게 됩니다. 윤초 후에 동기화 도구는 SI 초보다 긴 UTC ​​초로 동기화할 때 누락된 추가 TAI-10 클럭 주기를 따라잡기 위해 더 빠르게 클럭해야 하며 시스템 클럭 초는 보상을 위해 SI 초보다 짧아집니다.
  • 만약 그들이대학살윤초가 지나면 새해 첫날에 약간 더 이른 시간을 보고하게 됩니다. 시간 동기화 도구는 이 잘못된 UTC와 동기화를 유지하기 위해 TAI-10을 불필요하게 조정합니다. 아이러니한 점은 윤초에 TAI-10에서 즉시 정확하게 시작하고 다음 날에는 점차 올바른 것에서 벗어나 시간 서버가 점차 UTC로 느려지고 동기화 도구가 다시 돌아온다는 것입니다. 또한 TAI-10의 ​​속도를 잘못된 UTC 시간으로 높이려고 합니다.
  • 만약 그들이단계윤초의 경우 단조롭게 증가하는 시간을 전혀 보고하지 않지만 동기화 도구에 의해 수행된 윤초 삽입은 실제로 올바르게 계산되어야 합니다. 단, 윤초 순간에 서버의 UTC 보고서는 다음과 같습니다. 모호한. 그러나 최소한 초당 1SI초의 틱을 표시하며 TAI-10은 전후 며칠 동안 정확하며 TAI-10을 UTC 시간과 동기화하려는 불필요한 시도가 없습니다. .

따라서 TAI-10을 실행하는 경우 UTC 시간 서버를 선호하는 경향이 있습니다.단계다른 옵션을 사용하면 실제로 TAI-10 시간이 가속화되거나 느려진 UTC와 불필요하게 동기화되고 초당 1SI초 특성이 손실되기 때문에 윤초가 발생합니다.

커널 시계는 UTC이고 컴퓨터는 UTC 도구를 사용하여 UTC 서버와 동기화하고 있습니다.

이 상황은 동기화하려는 시간 서버의 기능에 따라 분류됩니다.

  • 만약 그들이도말 표본윤초가 지나면 그들은 한 해의 마지막 날의 대부분 동안 시간이 약간 느려진다고 보고합니다. 시간 동기화 도구가 해당 도구와 동기화되고 시계가 시간보다 하루 늦어집니다.
  • 만약 그들이대학살윤초가 지나면 새해 첫날에 약간 더 이른 시간을 보고하게 됩니다. 시간 동기화 도구가 동기화되고 시계가 하루 중 일부씩 앞당겨집니다.
  • 만약 그들이단계윤초를 사용하면 단조롭게 증가하는 시간이 전혀 보고되지 않으며 동기화 도구의 경우 시스템 시계가 갑자기 1초씩 느려지므로 수정해야 합니다. 반응 방식은 동기화 도구 구성 방법에 따라 다릅니다.
    • 그들은 단순히단계시스템 시계도 마찬가지입니다. 이 경우 애플리케이션에서는 시간이 1초 전으로 되돌아가는 것을 보게 됩니다.
    • 그들은 가능성이 더 높다대학살그러나 시스템 시계는 실제 SI 초보다 더 긴 시간 동안 작동하며 하루보다 훨씬 빠릅니다.
  • 만약 그들이발표하다윤초는 단계가 다가오고 있다는 경고일 뿐이며 동기화 도구에 수행할 작업에 대한 결정을 전달합니다.
    • 그들은 단순히단계시스템 시계도 마찬가지입니다. 이 경우 애플리케이션에서는 시간이 1초 전으로 되돌아가는 것을 보게 됩니다.
    • 그들은 가능성이 더 높다대학살또는도말 표본그러나 이 경우 시스템 시계는 해당 날짜 전후의 실제 SI 초보다 몇 초 더 길게 작동합니다.

결과

귀하의 컴퓨터 시간은 UTC 서버 + UTC 컴퓨터의 경우에만 정확합니다. 이 경우 응용 프로그램은 시간이 거꾸로 가는 것을 보게 되는데, 이는 Unix 응용 프로그램이 보고 싶어하지 않는 것입니다. 다른 모든 UTC 서버 + UTC 시스템의 경우 시스템 시간은 최대 하루 동안 정확하지 않습니다.

TAI-10-servers+TAI-10-machine의 경우 시스템 시간이 항상 정확합니다. UTC 서버 중 하나 + TAI-10 머신의 경우 서버가속도모호한 UTC 시간에 폴링하지 않는 한 컴퓨터의 시간도 항상 정확합니다.

잘못된 시스템 시간으로 인한 결과는 애플리케이션 수준에서 발생합니다. 운영 체제는 이에 만족합니다. (대중적인 믿음과는 달리 POSIX는 실제로 의도적으로 시스템 시계가 잘못된 것을 허용합니다.) 예를 들어 사람들에게 초 단위로 요금을 청구하는 것과 같은 작업을 수행하면 1초가 얼마나 긴지, 1초가 얼마나 긴지 전혀 알 수 없습니다. 그 때 떠오르는 아이디어, 고객과 다른 아이디어가 이틀이 걸릴 수도 있습니다. 귀하의 고객과 귀하는 동일한 설정을 선택하지 않았을 수 있습니다.

혼합된 시간 서버 세트와 동기화하도록 선택하면 문제가 발생할 수 있습니다. 그 중 일부는대학살UTC(일부)단계UTC(일부)도말 표본UTC. 이 경우 동기화 도구를 엉망으로 만들면 재미있는 일이 많이 일어날 수 있습니다. 아이러니한 부분도 많습니다. "멍청한" 동기화 도구는 어떤 시간 소스가 정확한 시간을 알려주는지 알아내려고 하는 "스마트" 동기화 도구보다 동기화되지 않은 시간 소스를 더 잘 처리합니다. 이 특별한 경우에는스테퍼만이 정확한 시간을 알 수 있습니다. 그러나 살인범과 비방범은 무엇이 무엇인지에 대해 상충되는 생각을 가지고 있습니다.잘못된UTC 시간은 다음과 같습니다.

마지막이자 불명예스러운 언급은 RedHat 페이지에서 논의된 Linux 커널입니다. 동기화 도구는 시간 자체를 단계별로 선택하거나 커널에 그렇게 하도록 지시할 수 있습니다. RedHat이 보고한 바와 같이 커널의 내부 타이밍 메커니즘이 제대로 작동하지 않는 것부터 시스템 정지에 이르기까지 이와 관련된 문제는 오랫동안 존재해 왔습니다.

추가 읽기

관련 정보