Читаем Сетевые средства Linux полностью

Атомные часы, устройства приема радиосигналов и прочее оборудование принято называть эталонными временными серверами, или серверами уровня 0. Эти серверы не поддерживают сетевые соединения (они взаимодействуют с компьютерами через последовательные порты, и для обмена данными с ними требуются дополнительные устройства). Компьютеры, которые синхронизируют свои системные часы, используя такие устройства, называются серверами уровня 1. Может показаться, что на них поддерживается наиболее точное время в Internet, однако исследования показали, что приблизительно треть из них имеют погрешность в секунду и больше. Компьютеры, которые используют для синхронизации серверы уровня называются серверами уровня 2 и т.д.

Процедура синхронизации предполагает обмен клиента с сервером несколькими пакетами данных (как правило, каждые пять минут передаются как минимум пять пакетов). Клиент передает серверу пакет, содержащий текущие показания своих системных часов. В ответ сервер передает клиенту тот же пакет. Сравнивая время в момент передачи и в момент приема, клиент может оценить задержку, связанную с пересылкой данных по сети, и учесть ее при коррекции значения таймера. Клиент может быть настроен для работы с несколькими серверами. В этом случае, сравнивая показания времени, задержку, вызванную передачей данных, и другие факторы, он может выбрать из этих серверов наиболее пригодный для себя.

Полнофункциональный сервер NTP работает постоянно и время от времени опрашивает вышестоящий сервер (первоначально обращения осуществляются каждые 64 секунды, но при некоторых вариантах конфигурации системы интервал между обращениями может увеличиться до 1024 секунд). Сервер NTP корректирует показания часов компьютера, на котором он выполняется, различными способами. Большие расхождения во времени (порядка секунды или больше) сначала игнорируются — сервер считает, что они могут быть вызваны ошибками при обмене данными. Но если такая ситуация сохраняется в течение некоторого времени, NTP компенсирует ошибку; он либо непосредственно устанавливает требуемое значение времени, либо ускоряет или замедляет ход системных часов до тех пор, пока системное время и время внешнего сервера не сравняются. (Процедура ускорения и замедления хода называется подстройкой системных часов.) Сервер NTP также поддерживает специальный файл (обычно это /etc/ntp/drift, /var/state/ntp.drift или другой файл с подобным именем), в котором он хранит данные об ошибке или о "дрейфе" системного таймера. Информация в этом файле помогает серверу компенсировать ошибку системных часов в том случае, если компьютер на длительное время остается выключенным или если вышестоящий сервер NTP не доступен.

Совет

Если ошибка превышает 1000 секунд, сервер NTP прекращает свою работу, так как предполагает, что подобная ситуация требует непосредственного вмешательства системного администратора. Поэтому перед запуском сервера NTP необходимо установить хотя бы приблизительное значение системного времени. Для установки системных часов перед запуском сервера NTP можно также использовать программу ntpdate, работа которой будет рассмотрена далее в этой главе. В некоторых случаях вызов ntpdate предусматривают в сценарии запуска сервера NTP.

Перейти на страницу:

Похожие книги