% ntpq -c 'rv 0 leap'
Поддержка високосных секунд в FreeBSD
Этот перевод может быть устаревшим. Для того, чтобы помочь с переводом, пожалуйста, обратитесь к Сервер переводов FreeBSD.
Содержание
1. Введение
Секунда координации (високосная секунда) — это односекундная корректировка, вносимая в определённые моменты года в UTC для синхронизации атомных шкал времени с вариациями вращения Земли. В этой статье описано, как FreeBSD взаимодействует с секундами координации.
На момент написания следующая високосная секунда будет добавлена 2015-Jun-30 23:59:60 UTC. Эта високосная секунда выпадет на рабочий день для Северной и Южной Америки, а также для региона Азии/Тихоокеанского региона.
Секунды координации объявляются IERS в Бюллетене C.
Стандартное поведение високосной секунды описано в RFC 7164. Также см. time2posix(3).
2. Обработка високосных секунд по умолчанию в FreeBSD
Самый простой способ обработки високосных секунд — использование правил времени POSIX, которые FreeBSD использует по умолчанию, в сочетании с NTP. Когда ntpd(8) работает и время синхронизировано с вышестоящими серверами NTP, которые корректно обрабатывают високосные секунды, високосная секунда приведёт к автоматическому повтору последней секунды дня в системном времени. Другие корректировки не требуются.
Если вышестоящие серверы NTP не обрабатывают високосные секунды корректно, ntpd(8) изменит время на одну секунду после того, как ошибочный вышестоящий сервер заметит это и изменит своё время.
Если NTP не используется, после високосной секунды потребуется ручная корректировка системных часов.
3. Предупреждения
Високосные секунды добавляются одновременно по всему миру: в полночь по UTC. В Японии это середина утра, в Тихоокеанском регионе — середина дня, в Америке — поздний вечер, а в Европе — ночь.
Мы полагаем и ожидаем, что FreeBSD, при условии предоставления корректного и стабильного сервиса NTP, будет работать как задумано во время этой секунды координации, как это происходило во время предыдущих.
Однако мы предупреждаем, что практически ни одно приложение никогда не запрашивало у ядра информацию о високосных секундах. Наш опыт показывает, что, как и задумано, високосные секунды по сути являются повторением секунды, предшествующей високосной, и это становится неожиданностью для большинства программистов.
Другие операционные системы и компьютеры могут обрабатывать високосную секунду иначе, чем FreeBSD, а системы без корректной и стабильной службы NTP вообще не будут знать о високосных секундах.
Нередко компьютеры выходят из строя из-за високосных секунд, и опыт показал, что значительная часть всех публичных NTP-серверов может обрабатывать и объявлять високосную секунду неправильно.
Пожалуйста, постарайтесь убедиться, что из-за секунды координации не произойдет ничего ужасного.
4. Тестирование
Возможно проверить, будет ли использована секунда координации. Из-за особенностей NTP, проверка может работать до 24 часов до введения секунды координации. Некоторые крупные источники эталонных часов объявляют о секундах координации всего за час до события. Запрос к демону NTP:
Вывод, включающий leap_add_sec
, указывает на корректную поддержку секунды
координации. До 24 часов перед наступлением секунды координации или после её
прохождения будет отображаться leap_none
.
5. Заключение
На практике секунды координации обычно не представляют проблемы в FreeBSD. Мы надеемся, что этот обзор поможет прояснить, чего ожидать и как сделать обработку секунды координации более гладкой.
Изменено: 22 сентября 2025 г. by Vladlen Popolitov