--- description: 'Краткое описание обработки високосных секунд (секунд координации) в FreeBSD' tags: ["Leap Seconds", "Support", "Verification", "FreeBSD"] title: 'Поддержка високосных секунд в FreeBSD' --- = Поддержка високосных секунд в FreeBSD :doctype: article :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :source-highlighter: rouge :experimental: :images-path: articles/leap-seconds/ ifdef::env-beastie[] ifdef::backend-html5[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] :imagesdir: ../../../images/{images-path} endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] include::../../../../../shared/asciidoctor.adoc[] endif::[] ''' toc::[] [[leapseconds-definition]] == Введение _Секунда координации_ (високосная секунда) — это односекундная корректировка, вносимая в определённые моменты года в UTC для синхронизации атомных шкал времени с вариациями вращения Земли. В этой статье описано, как FreeBSD взаимодействует с секундами координации. На момент написания следующая високосная секунда будет добавлена 2015-Jun-30 23:59:60 UTC. Эта високосная секунда выпадет на рабочий день для Северной и Южной Америки, а также для региона Азии/Тихоокеанского региона. Секунды координации объявляются https://www.iers.org/IERS/EN/Home/home_node.html[IERS] в https://datacenter.iers.org/data/latestVersion/16_BULLETIN_C16.txt[Бюллетене C]. Стандартное поведение високосной секунды описано в https://datatracker.ietf.org/doc/html/rfc7164#section-3[RFC 7164]. Также см. man:time2posix[3]. [[leapseconds-posix]] == Обработка високосных секунд по умолчанию в FreeBSD Самый простой способ обработки високосных секунд — использование правил времени POSIX, которые FreeBSD использует по умолчанию, в сочетании с extref:{handbook}[NTP, network-ntp]. Когда man:ntpd[8] работает и время синхронизировано с вышестоящими серверами NTP, которые корректно обрабатывают високосные секунды, високосная секунда приведёт к автоматическому повтору последней секунды дня в системном времени. Другие корректировки не требуются. Если вышестоящие серверы NTP не обрабатывают високосные секунды корректно, man:ntpd[8] изменит время на одну секунду после того, как ошибочный вышестоящий сервер заметит это и изменит своё время. Если NTP не используется, после високосной секунды потребуется ручная корректировка системных часов. [[leapseconds-cautions]] == Предупреждения Високосные секунды добавляются одновременно по всему миру: в полночь по UTC. В Японии это середина утра, в Тихоокеанском регионе — середина дня, в Америке — поздний вечер, а в Европе — ночь. Мы полагаем и ожидаем, что FreeBSD, при условии предоставления корректного и стабильного сервиса NTP, будет работать как задумано во время этой секунды координации, как это происходило во время предыдущих. Однако мы предупреждаем, что практически ни одно приложение никогда не запрашивало у ядра информацию о високосных секундах. Наш опыт показывает, что, как и задумано, високосные секунды по сути являются повторением секунды, предшествующей високосной, и это становится неожиданностью для большинства программистов. Другие операционные системы и компьютеры могут обрабатывать високосную секунду иначе, чем FreeBSD, а системы без корректной и стабильной службы NTP вообще не будут знать о високосных секундах. Нередко компьютеры выходят из строя из-за високосных секунд, и опыт показал, что значительная часть всех публичных NTP-серверов может обрабатывать и объявлять високосную секунду неправильно. Пожалуйста, постарайтесь убедиться, что из-за секунды координации не произойдет ничего ужасного. [[leapseconds-testing]] == Тестирование Возможно проверить, будет ли использована секунда координации. Из-за особенностей NTP, проверка может работать до 24 часов до введения секунды координации. Некоторые крупные источники эталонных часов объявляют о секундах координации всего за час до события. Запрос к демону NTP: [source, shell] .... % ntpq -c 'rv 0 leap' .... Вывод, включающий `leap_add_sec`, указывает на корректную поддержку секунды координации. До 24 часов перед наступлением секунды координации или после её прохождения будет отображаться `leap_none`. [[leapseconds-conclusion]] == Заключение На практике секунды координации обычно не представляют проблемы в FreeBSD. Мы надеемся, что этот обзор поможет прояснить, чего ожидать и как сделать обработку секунды координации более гладкой.