Приложение. Подготовка операционных систем AIX и VIOS

advertisement
Приложение. Подготовка операционных систем AIX и
VIOS в связи с ФЗ «Об исчислении времени» от июля
2014г.
Для системных администраторов и специалистов предлагаем технические детали настроек
временных зон в AIX, которые могут помочь при выполнении самостоятельных действий.
Описываемые в данном приложении действия являются только общими рекомендациями, не проверялись на отсутствие
ошибок, не гарантируют работоспособности приложений пользователя, не являются официальным руководством к действию со
стороны IBM. Для получения официальных руководств, а также помощи и услуг от IBM необходимо обратиться в службу
технической поддержки IBM.
Если Вы решили самостоятельно выполнить изменения настроек AIX, мы
предлагаем внимательно прочитать следующие рекомендации.
Каждый виртуальный раздел LPAR в системах POWER имеет собственные независимые
аппаратные часы, которые показывают свое время и идут синхронно с системными
часами. Поэтому корректировку времени необходимо выполнять в каждом
разделе LPAR.
Т.к. изменения временной зоны затрагивают общие для системы параметры и файлы,
исправления предлагается выполнять из под пользователя root.
Аппаратные часы в AIX должны показывать универсальное всемирное время UTC.
(я встречал случаи, когда администраторы утверждали, что у них в AIX timezone работает некорректно,
поэтому они вынуждены ставить нестандартную TZ. В большинстве случаев причина этого явления в том, что
у систем аппаратное время выставлено неверно. Оно должно всегда показывать UTC).
Пример, команда AIX показывает время UTC:
$ date -u
Fri Sep 5 13:34:20 UTC 2014
Пример, команда AIX показывает локальное время согласно TZ:
$ date
Fri Sep
5 17:34:21 UTC 2014
Как настроить переменную окружения TZ в формате POSIX.
В AIX переменная TZ для системы задается в файле /etc/environment/
Ниже приводятся выдержки из документации для TZ.
В стандарте POSIX переменная окружения TZ устанавливается в виде строки:
TZ=std offset [dst [offset]] [, rule , rule]
Std – название зоны для стандартного времени (обязательное поле).
Dst – название зоны для летнего времени (если есть)
Offset – смещение времени от UTC.
Rule – правило перехода на летнее время и обратно: Mm.n.
Пример: На сегодняшний день для временной зоны Москвы обычно используется TZ
вида:
TZ=MSK-4
и не учитывает переход на летнее или зимнее время.
Для того, чтобы система сама, автоматически перевела время на зимнее в
последнее воскресенье октября, согласно документации предлагается
выставить переменную TZ как
TZ=MSK-3MSK-4,M3.5.0,M10.5.0
Такой формат TZ имеет следующий смысл: cейчас действует летнее время MSK-4,
которое по правилу M10.5.0 перейдет на зимнее время MSK-3, т.е. в 2:00 ночи в
последнее воскресенье октября 26.10.2014 система начнет показывать время на 1 час
меньше - снова наступит 1:00 ночи. Это как раз то, что нужно !
Такие исправления с последующей перезагрузкой компьютера рекомендуется
выполнить заблаговременно до 26.10.
Проблема использования формата POSIX заключается в том, что в TZ кроме перехода на
зимнее, зашит и обратный переход на летнее время по правилу M3.5.0. Т.е. в последнее
воскресенье марта система переведет часы на 1 час вперед. К сожалению формат POSIX
не допускает указать только одно правило. Поэтому для того, чтобы исключить второй
переход в Марте 2015, потребуется еще раз исправить TZ:
TZ=MSK-3
и найти время до марта 2015 перегрузить приложения и операционную
систему AIX.
В приведенных выше примерах использовалась временная зона Московского региона
(Москва, Санкт Петербург и др.). Для регионов, находящихся в других временных
зонах, необходимо указывать свои локальные названия зоны и смещение относительно
UTC для текущего летнего и для нового зимнего времяисчисления.
В формате POSIX важным является указать смещение локальной зоны от UTC.
В приведенном примере попытаемся подобрать/проверить значение смещение от UTC для
работающей системы, в которой в настоящее время используется OLSON. В приведенных командах
все действия происходят в текущей сессии, не изменяя параметры всей системы.
# echo $TZ
Europe/Moscow
Текущее значение TZ, клиент использует формат OLSON. Попробуем подобрать для него
значение TZ в формате POSIX.
# date -u
Fri Sep 5 13:34:20 UTC 2014
Время и дата для UTC
# date
Fri Sep
5 17:34:21 MSK 2014
Время и дата для локальной зоны с текущим TZ
# TZ=MSK-5 date
Fri Sep 5 18:34:25 MSD 2014
Пробуем TZ в формате POSIX MSK-5 – неправильно, время отличается на 1 час.
# TZ=MSK-4 date
Fri Sep 5 17:34:28 MSD 2014
Пробуем TZ в формате POSIX MSK-4 – теперь правильно!
В результате, если вы решите перейти на формат POSIX, вы можете использовать найденное
значение TZ. Для приведенного примера сейчас часы показывают летнее время, для него TZ=MSK-4.
Для зимнего времени TZ будет TZ=MSK-3.
Таким образом до 26 октября 2014 включительно переменная TZ должна иметь значение
TZ=MSK-3MSK-4,M3.5.0,M10.5.0
После установки новой TZ в файле /etc/environment надо перегрузить систему.
После 26 октября 2014, но до 29 марта 2015 необходимо выставить TZ по-новому, т.е. на 1 час
меньше :
TZ=MSK-3
и вновь перегрузить систему.
Для других регионов проводятся аналогичные действия со своими названиями временных зон и
смещениями от UTC. Описание форматов временных зон для регионов можно найти на сайте:
http://www.ibm.com/developerworks/aix/library/au-aix-posix/index.html
Как самостоятельно изменить параметры TZ для формата Olson
Для AIX v7 формат OLSON реализован как во многих других UNIX/Linux системах, поэтому мы можем
использовать исходные файлы для временных зон, взятые из открытых источников и скомпилировать
их под свою операционную систему.
Алгоритм действий:
1. Выполнить изменения в существующем файле конфигурации самостоятельно или скачать из
доверенных источников исходные правила для формирования файлов timezone в формате
Olson, например с сайта http://www.iana.org/time-zones
Последняя версия файла:
http://www.iana.org/time-zones/repository/releases/tzdata2014g.tar.gz
(В последней версии tzdata2014g Российские изменения уже учтены).
Скачайте этот файл любым доступным образом во временную директорию в систему AIX
(например /tmp, главное, чтобы там хватило места).
(Например, для скачивания можно использовать wget для систем, подключенных к интернет,
или ftp, или напрямик в web browser и т.п.):
$ wget http://www.iana.org/time-zones/repository/releases/tzdata2014g.tar.gz
2. Перейдите в директорию, куды вы скачали файл и распакуйте полученный tar.gz:
$ gzip -dc tzdata2014g.tar.gz | tar -xvf 3. После успешной распаковки используйте имеющийся в AIX компилятор zic для создания
собственной timezone Olson, которая не переводит часы на зимнее/летнее время, см.
описание команды zic:
http://publib.boulder.ibm.com/infocenter/aix/v6r1/topic/com.ibm.aix.cmds/doc/aixcmds6/zic.htm
для этого в текущей директории создайте новую директорию, в которую будут помещаться
откомпилированные файлы (в примере компилируются временные зоны, находящиеся на
территории Europe и Asia, если Вам нужны другие территории, откомпилируйте их
дополнительной командой):
$ mkdir test-tz
$ /usr/sbin/zic -d test-tz europe
$ /usr/sbin/zic -d test-tz asia
В результате в директории ./test-tz команда zic создаст файлы Europe и Asia, в описаны
временные зоны городов этих территорий.
4. Теперь можно сравнить полученный результат с действующими правилами:
Команда zdump показывает свойства временной зоны. Если зону указать в виде относительного
пути (как она написана в TZ, например Europe/Moscow), команда покажет правила,
действующие в системе.
$ zdump -v Europe/Moscow
. . .
Europe/Moscow
Europe/Moscow
Europe/Moscow
Europe/Moscow
Sat
Sat
Mon
Tue
Mar
Mar
Jan
Jan
26
26
18
19
22:59:59
23:00:00
03:14:07
03:14:07
(относительный путь. Это то, что сейчас активно действует в
системе)
2011
2011
2038
2038
UTC
UTC
UTC
UTC
=
=
=
=
Sun
Sun
Mon
Tue
Mar
Mar
Jan
Jan
27
27
18
19
01:59:59
03:00:00
07:14:07
07:14:07
2011
2011
2038
2038
MSK
MSK
MSK
MSK
isdst=0
isdst=0
isdst=0
isdst=0
Как видно в последних строках выдачи (3-я снизу) - в 23:00:00 UTC локальное время будет
03:00:00 MSK
Теперь проверим, что у нас откомпилилось, для этого в команде zdump укажем полный путь к
новому полученному файлу временной зоны:
$ zdump -v `pwd`/test-tz/Europe/Moscow
/temp/test-tz/Europe/Moscow
(используем абслютный путь к откомпилированным файлам
и мы увидим новые параметры для временной зоны)
Sat Mar 26 22:59:59 2011 UTC = Sun Mar 27 01:59:59 2011 MSK isdst=0
/temp/test-tz/Europe/Moscow
/temp/test-tz/Europe/Moscow
/temp/test-tz/Europe/Moscow
/temp/test-tz/Europe/Moscow
/temp/test-tz/Europe/Moscow
Sat
Sat
Sat
Mon
Tue
Mar
Oct
Oct
Jan
Jan
26
25
25
18
19
23:00:00
21:59:59
22:00:00
03:14:07
03:14:07
2011
2014
2014
2038
2038
UTC
UTC
UTC
UTC
UTC
=
=
=
=
=
Sun
Sun
Sun
Mon
Tue
Mar
Oct
Oct
Jan
Jan
27
26
26
18
19
03:00:00
01:59:59
01:00:00
06:14:07
06:14:07
2011
2014
2014
2038
2038
MSK
MSK
MSK
MSK
MSK
isdst=0
isdst=0
isdst=0
isdst=0
isdst=0
Теперь мы видим, что 25.10 21:59:59 UTC = 26.10 01:59:59 MSK система покажет снова 01:00:00,
т.е. переведет часы на 1 час назад да так и останется (до 2038, когда истекут все часы UNIX
истем, но это - другая задача...)
5. Если вы считаете, что полученный файл вас удовлетворяет (Europe/Moscow или другой, напр.
Asia/Ekaterinburg), его необходимо скопировать в директорию по умолчанию для системы:
# cp -rp test-tz/Europe /usr/share/lib/zoneinfo
# _
(копируем новый файл в систему, обычно
/usr/share/lib/zoneinfo,
обратите
внимание - пользователь root.)
Примечание: описанный алгоритм изменений для формата Olson был опробован на системе AIX 7.1, SLES 10SP4.
Очевидно, его можно применять для систем класса Linux и AIX, начиная с версии 7.1.
AIX версии 6.1 имеет свой собственный формат файлов, и для него применимы либо подход POSIX, либо
установка patch от службы поддержки IBM.
Описываемые в данном приложении действия являются только общими рекомендациями, не проверялись на отсутствие
ошибок, не гарантируют работоспособности приложений пользователя, не являются официальным руководством к действию со
стороны IBM. Для получения официальных руководств, а также помощи и услуг от IBM необходимо обратиться в службу
технической поддержки IBM.
Download