IBM®
Перейти к тексту
    в России и странах СНГ [изменить]    Условия использования
 
 
   
    Главная страница    Продукты    Услуги и решения    Поддержка и загрузка    Мой профиль    
Перейти к тексту

developerWorks Россия  >  Linux | Open source  >

Учебное пособие для экзамена LPI 102, тема 111: Задачи администрирования

Администрирование Linux для начинающих (LPIC-1) тема 111

developerWorks
На предыдущую страницуСтраница 7 из 10 На предыдущую страницу

Опции документа

Обсудить


Выскажите мнение об этом учебном пособии

Помогите нам улучшить содержание


Системное время

Этот раздел охватывает материал по теме 1.111.6 экзамена 102 Администрирование Linux для начинающих (LPIC-1). Рейтинг темы 4.

Из этого раздела вы узнаете, как:

  • Установить системную дату и время
  • Установить часы BIOS в соответствии со временем UTC
  • Настроить часовой пояс
  • Настроить сервис Network Time Protocol (NTP), включая корректировку временного отклонения

Установка системной даты и времени

В системе Linux системное время является крайне важным. Ранее вы видели, что cron и anacron выполняют действия в определенное время, поэтому для корректной работы им необходимо точное время. Большинство средств для резервного копирования и восстановления, которые обсуждались в предыдущем разделе, наряду со средствами разработки, такими как make, также зависят от надежного измерения времени. Большинство компьютеров, собранных примерно с 1980 года, включают некий набор механизмов часов и большинство созданных, начиная с 1984 года, имеет стабильный механизм часов, который поддерживает ход часов, даже если компьютер выключен.

Если вы проводили установку системы Linux в графическом режиме, вы, вероятно, настроили время и выбрали нужный часовой пояс. Можно выбрать, использовать ли для настройки часов Network Time Protocol (NTP), а также выбрать или не выбирать возможность поддержки системных часов с использованием Coordinated Universal Time (UTC). Если позже войти в настройку часов при помощи графических средств в Fedora, Red Hat или другой подобной системе, появится диалоговое окно, подобное изображенному на рисунке 3.


Рисунок 3. Обновление даты и времени
Обновление даты и времени

Сюрприз! В этом диалоге фактически невозможно настроить сами часы. Из этого раздела вы больше узнаете о различиях между локальными часами и NTP, а также о том, как настроить системное время.

Независимо от того, живете ли вы в Нью Йорке, Бухаресте, Находке, Улан-Баторе, Бангкоке или Канберре, в Linux большая часть вычислений, связанных со временем, привязана к Coordinated Universal Time (UTC). Если вы запускаете только систему Linux, принято настраивать аппаратные часы в соответствии с UTC, но если вы загружаете также и другую операционную систему, такую как Windows, может понадобиться настроить аппаратные часы на местное время. Поскольку рассматривается Linux, это не имеет значения, за исключением случаев, когда внутри Linux оказываются два различных метода хранения записи о часовых поясах и, если они не совпадают, можно уладить несоответствие, например, при помощи нескольких дополнительных меток времени в файловых системах FAT. В листинге 55 показано, как использовать команду date для просмотра текущей даты и времени. Даже если аппаратные часы поддерживают время UTC, всегда отображается локальное время.


Листинг 55. Отображение текущей даты и времени
                    
[root@lyrebird ~]# date;date -u
Mon Jul  9 22:40:01 EDT 2007

Команда date поддерживает большое разнообразие возможных форматов вывода, некоторые из которых вы уже видели в листинге 28. Если вы хотите больше узнать о различных форматах данных, обратитесь к странице man для команды date.

Если необходимо настроить дату, сделать это можно, передав дату и время в качестве аргумента. Требуемый формат сложился автоматически и в некоторой степени необычен даже для американцев и действительно необычен для остальной части мира. Необходимо указать как минимум месяц, день, час и минуту в формате MMDDhhmm, можно также добавить год в виде двух- или четырехзначного числа (CCYY или YY) и при желании точку и за ней двухзначное число для секунд. В листинге 56 показан пример, в котором системная дата изменена чуть больше чем на минуту.


Листинг 56. Настройка системной даты и времени
                    
[root@lyrebird ~]# date; date 0709221407;date
Mon Jul  9 23:12:37 EDT 2007
Mon Jul  9 22:14:00 EDT 2007
Mon Jul  9 22:14:00 EDT 2007



В начало


Настройка часов BIOS на временную зону UTC

Система Linux, как и большинство других современных операционных систем, фактически имеет двое часов. Первые часы — аппаратные, иногда называемые Real Time Clock, сокращенно (RTC), или часы BIOS, обычно они связаны с колеблющимся кварцевым кристаллом, имеющим точность хода до нескольких секунд в день. Точность зависит от различных колебаний, например, окружающей температуры. Вторые часы — внутренние программные часы, которые идут непрерывно, в том числе и при перерывах в работе системы. Они подвержены отклонениям, связанным с большой системной нагрузкой и задержкой прерываний. Однако система обычно считывает показания аппаратных часов при загрузке и потом использует системные часы. Команда date, о которой вы только что узнали, устанавливает не аппаратные, а системные часы.

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

Для просмотра текущих показаний аппаратных часов можно воспользоваться командой hwclock. В листинге 57 показаны текущие показания обоих часов, и системных, и аппаратных.


Листинг 57. Показания системных и аппаратных часов
                    
[root@lyrebird ~]# date;hwclock
Mon Jul  9 22:16:11 EDT 2007
Mon 09 Jul 2007 11:14:49 PM EDT  -0.071616 seconds

Обратите внимание, что значения различаются. Можно синхронизировать аппаратные часы с системными при помощи команды hwclock с опцией -w или --systohc и синхронизировать системные часы с аппаратными при помощи команды hwclock с опцией -s или --hctosys, как показано в листинге 58.


Листинг 58. Настройка соответствия системных часов в аппаратным
                    
[root@lyrebird ~]# date;hwclock;hwclock -s;date
Mon Jul  9 22:20:23 EDT 2007
Mon 09 Jul 2007 11:19:01 PM EDT  -0.414881 seconds
Mon Jul  9 23:19:02 EDT 2007

Можно указать опции --utc или --localtime, чтобы системные часы поддерживали UTC или местное время. Если значение не указано, оно берется из третьей строки файла /etc/adjtime.

Ядро Linux имеет режим, при котором каждые 11 минут системное время копируется в аппаратные часы. По умолчанию эта функция отключена, но она включается NTP. Запуск какой-либо команды, которая устанавливает время устаревшим способом, например, hwclock --hctosys, отключает ее, поэтому, если используется NTP, хорошей идеей будет просто позволить NTP выполнить эту работу. Чтобы узнать, как проверить, обновляются ли часы каждые 11 минут или нет, обратитесь к странице man команды adjtimex. Может возникнуть необходимость установить пакет adjtimex, если он не установлен по умолчанию.

Команда hwclock сохраняет изменения, сделанные в аппаратных часах, для того чтобы периодически компенсировать погрешность часов. Необходимые данные хранятся в /etc/adjtime, который является ASCII-файлом. Если NTP не используется, для компенсации отклонений часов можно использовать команду adjtimex. В противном случае аппаратные часы будут регулироваться приблизительно каждые 11 минут при помощи NTP. Кроме того, эта команда показывает, используют аппаратные часы местное время или время UTC, первое значение в /etc/adjtime показывает величину отклонения аппаратных часов за день (в секундах). В листинге 59 показаны два примера.


Листинг 59. /etc/adjtime показывает отклонение часов и какое время они показывают, локальное или UTC
                    
[root@lyrebird ~]# cat /etc/adjtime
0.000990 1184019960 0.000000
1184019960
LOCAL
root@pinguino:~# cat /etc/adjtime
-0.003247 1182889954 0.000000
1182889954
LOCAL

Обратите внимание, что в обеих этих системах на аппаратных часах используется местное время, но отклонения часов отличаются — 0.000990 на lyrebird и -0.003247 на pinguino.



В начало


Настройка часового пояса

Часовой пояс — критерий того, насколько местное время отличается от UTC. Информация о доступных часовых поясах, которые можно настроить, хранится в /usr/share/zoneinfo. По традиции /tec/localtime является линком на один из файлов часового пояса из этого дерева каталогов, например, /usr/share/zoneinfo/Eire или /usr/share/zoneinfo/Australia/Hobart. В современных системах с большой долей вероятности это будет копия соответствующего файла часового пояса, поскольку когда в процессе загрузки нужна информация о местном часовом поясе, файловая система /usr/share не может быть смонтирована.

Подобным образом другой файл, /etc/timezone, традиционно является линком /etc/default/init и используется для установки переменной окружения для часового пояса TZ и нескольких связанных с местоположением переменных окружения. Файл в системе может существовать, а может нет. Если он существует, он может содержать просто имя текущего часового пояса. Информацию о часовом поясе можно также найти в /etc/sysconfig/clock. В листинге 60 показаны эти файлы, взятые из систем Ubuntu 7.04 и Fedora 7.


Листинг 60. Информация о часовых поясах из /etc
                    
root@pinguino:~# cat /etc/timezone
America/New_York

[root@lyrebird ~]# cat /etc/sysconfig/clock
# The ZONE parameter is only evaluated by system-config-date.
# The timezone of the system is defined by the contents of /etc/localtime.
ZONE="America/New York"
UTC=false
ARC=false

В некоторых системах, например, Debian и Ubuntu, для установки часового пояса есть команда tzconfig. В других, например, в Fedora, для установки часового пояса и проверки, используют ли часы UTC или нет, используется команда system-config-date. Листинг 61 иллюстрирует использование команды tzconfig для просмотра текущего часового пояса.


Листинг 61. Просмотр настроек часового пояса при помощи tzconfig
                    
root@pinguino:~# tzconfig
Your current time zone is set to America/New_York
Do you want to change that? [n]:
Your time zone will not be changed



В начало


Настройка Network Time Protocol

Network Time Protocol (NTP) — протокол для синхронизации часов компьютера по сети. Обычно проводится синхронизация с UTC.

NTP версии 3 — Internet draft standard, описанный в RFC 1305. Текущая версия NTP версии 4, находящаяся в стадии разработки, еще не описана в RFC. RFC 4330 описывает Simple NTP (SNTP) версии 4.

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

В Интернете существует огромное количество компьютеров, поэтому серверы времени организованы в страты. Относительно маленький номер серверов страты 1 поддерживает очень точное время от источника, например, от атомных часов. Больший номер серверов страты 2 получает их время от сервисов страты 1 и делает его доступным для еще большего номера серверов страты 3 и так далее. Чтобы облегчить нагрузку на серверы времени, большое количество волонтеров отдает сервисы времени через pool.ntp.org (ссылку см. в разделе Ресурсы). Циклические (round robin) DNS-серверы достигают баланса нагрузки на NTP, распределяя запросы к NTP-серверу между группой доступных серверов.

Если используется графический интерфейс, можно настроить серверы времени NTP, используя диалог, подобный приведенному на рисунке 4. Тот факт, что эта система имеет возможность автоматически обновить время при помощи NTP является причиной того, что в диалоге, изображенном на рисунке 3, нельзя изменить дату и время.


Рисунок 4. Настройка серверов NTP
Настройка серверов NTP

Информация о конфигурации NTP хранится в файле /etc/ntp.conf, так что можно отредактировать файл, сохранить его и затем перезапустить демон ntpd. В листинге 62 показан пример файла /etc/ntp.conf, использующего серверы времени из рисунка 4.


Листинг 62. Файл /etc/ntp.conf
                    
[root@lyrebird ~]# cat /etc/ntp.conf
# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default kod nomodify notrap nopeer noquery

# Permit all access over the loopback interface.  This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
restrict 127.0.0.1

# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).

#broadcast 192.168.1.255 key 42         # broadcast server
#broadcastclient        # broadcast client
#broadcast 224.0.1.1 key 42             # multicast server
#multicastclient 224.0.1.1              # multicast client
#manycastserver 239.255.254.254         # manycast server
#manycastclient 239.255.254.254 key 42  # manycast client

# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.
#server 127.127.1.0  # local clock
#fudge 127.127.1.0 stratum 10

# Drift file.  Put this in a directory which the daemon can write to.
# No symbolic links allowed, either, since the daemon updates the file
# by creating a temporary in the same directory and then rename()'ing
# it to the file.
driftfile /var/lib/ntp/drift

# Key file containing the keys and key identifiers used when operating
# with symmetric key cryptography.
keys /etc/ntp/keys

# Specify the key identifiers which are trusted.
#trustedkey 4 8 42

# Specify the key identifier to use with the ntpdc utility.
#requestkey 8

# Specify the key identifier to use with the ntpq utility.
#controlkey 8
server 0.us.pool.ntp.org
restrict 0.us.pool.ntp.org mask 255.255.255.255 nomodify notrap noquery
server 1.us.pool.ntp.org
restrict 1.us.pool.ntp.org mask 255.255.255.255 nomodify notrap noquery
server 2.us.pool.ntp.org
restrict 2.us.pool.ntp.org mask 255.255.255.255 nomodify notrap noquery

Если используются серверы времени pool.ntp.org, они могут размещаться в мире где угодно. Обычно вы будете получать лучшее время, накаладывая на серверы ограничения, как в этом примере, где используется us.pool.ntp.org, в результате чего были выбраны только серверы, находящиеся в США. Ссылки на дополнительную информацию о проекте pool.ntp.org см. в разделе Ресурсы.

Команды NTP

Для настройки системного времени с сервера времени NTP можно использовать команду ntpdate, как показано в листинге 63.


Листинг 63. Настройка системного времени с сервера времени NTP при помощи ntpdate
                    
[root@lyrebird ~]# ntpdate 0.us.pool.ntp.org
10 Jul 10:27:39 ntpdate[15308]: adjust time server 66.199.242.154 offset -0.007271 sec

Поскольку серверы работают в циклическом режиме, в следующий раз при запуске этой команды вы, возможно, увидите другой сервер. В листинге 64 показаны первые несколько DNS-ответов для 0.us.pool.ntp.org несколькими моментами позже запуска описанной выше команды ntpdate.


Листинг 64. Циклический NTP-сервер pool
                    
[root@lyrebird ~]# dig 0.pool.ntp.org +noall +answer | head -n 5
0.pool.ntp.org.  1062   IN      A       217.116.227.3
0.pool.ntp.org.  1062   IN      A       24.215.0.24
0.pool.ntp.org.  1062   IN      A       62.66.254.154
0.pool.ntp.org.  1062   IN      A       76.168.30.201
0.pool.ntp.org.  1062   IN      A       81.169.139.140

Команда ntpdate сейчас признана устаревшей, поскольку то же самое действие можно выполнить при помощи команды ntpq с опцией -q, как показано в листинге 65.


Листинг 65. Настройка системного времени при помощи ntpd -q
                    
[root@lyrebird ~]# ntpd -q
ntpd: time slew -0.014406s

Обратите внимание, что команда ntpd использует информацию о сервере времени из конфигурационного файла /etc/ntp.conf. Подробнее о команде ntpd и ее опциях см. в страницах руководства man. Кроме того, следует осознавать, что если запущен демон ntpd, ntpd -q завершит его исполнение, оставив в /var/log/messages сообщение о неудаче.

Другая связанная команда — ntpq, которая позволяет запросить демон NTP. Подробности см. в страницах руководства man.

Это учебное пособие подошло к концу. Мы рассмотрели материалы, касающиеся системного администрирования. Не забудьте высказать мнение об этом учебном пособии.



В начало



На предыдущую страницуСтраница 7 из 10 На предыдущую страницу
    IBM в России Конфиденциальность Контакты