В январе 2000 года компьютерный мир ожидает небольшой апокалипсис.


ПРИЧИНЫ ВОЗНИКНОВЕНИЯ ПРОБЛЕМЫ 2000 ГОДА
ДАТЫ В ЖИЗНИ КОМПЬЮТЕРНЫХ СИСТЕМ
СИСТЕМНЫЕ ЧАСЫ
ОПЕРАЦИОННАЯ СИСТЕМА И ПРОБЛЕМА Y2K
ПРИЛОЖЕНИЯ И ПРОБЛЕМА Y2K
ЗАКЛЮЧЕНИЕ

Все боится времени, но даже время боится пирамид.

Арабская пословица.


Проблема 2000 года? Как же, слышали! Это что-то про мэйнфреймы и старые программы на языке COBOL. Нас это не касается. И не надо морочить людям головы, чтобы вытянуть у них деньги.

Так рассуждают многие специалисты в области информационных технологий. И именно так считал ваш покорный слуга. До тех пор пока сам не столкнулся с проблемой 2000 года. Один из моих коллег поменял в ПК дату на 2000 год, дабы посмотреть, как умная машина на это отреагирует. Ничего страшного не произошло, и мой коллега забыл, что живет в 2000 году. Однако вскоре обнаружилось, что письма его электронной почты, посланные с ПК, либо теряются, либо присоединяются к чужим письмам. Это подвигло нас более внимательно присмотреться к проблеме Y2K (так коротко называют проблему 2000 года). Результаты оказались весьма любопытными. Можно смело сказать, что в 2000 году нас ждут серьезные испытания. И они в той или иной мере затронут большинство компьютерных систем.

По опросам, проведенным в США, примерно 15% специалистов вообще не слышали про проблему 2000 года, а 60% слышали, но плохо представляют ее суть. Надо думать, в России положение еще хуже. Мы живем в сладком неведении относительно того, что нас ожидает.

В знаменитом фильме Стэнли Кубрика "Космическая одиссея 2001 года" компьютер HAL перестал подчиняться командам человека, и это чуть не привело к катастрофе. Причина такого загадочного поведения так и осталась неясной для зрителей. Рискну предположить, что в компьютере HAL было установлено программное обеспечение, некорректно работающее с датами после 2000 года.

Проблема Y2K становится центральной в компьютерной индустрии. Кратко ее можно охарактеризовать так. Большое количество программно-аппаратного обеспечения не предназначено для работы с датами после 2000 года. К чему это может привести? В самом лучшем случае приложения будут неправильно выдавать дату. А в самом худшем - вообще не будут работать.

ПРИЧИНЫ ВОЗНИКНОВЕНИЯ ПРОБЛЕМЫ 2000 ГОДА

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

Второй причиной можно назвать организационную. В американских стандартах, принятых Национальным институтом стандартов и технологии (http://www.nist.gov), год в представлении даты имеет только две цифры. Например, 13 апреля 1998 года обозначается 04/13/98, а 17 февраля 2001 года - 02/17/01. Нечто похожее принято в других странах, в том числе и России. Такой формат сам по себе вполне приемлем, но при компьютерной обработке может приводить к некорректному представлению дат. Программное обеспечение должно понимать разницу в датах при смене столетия. К сожалению, это пожелание далеко не всегда выполняется. Разработчики ПО повсеместно используют чужие API, что только добавляет трудностей.

Кстати, Международная организация по стандартам (International Organization for Standartization, ISO, http://www.iso.ch) рекомендует использовать следующую форму записи yyyy-mm-dd, т. е. 17 февраля 2001 года будет изображаться как 2001-02-17. Но такую форму практически ни в одной стране не употребляют.

С технической и организационной причинами тесно связаны и такие, как проблема унаследованных систем и недальновидность разработчиков. Кто мог предположить, что программы, написанные в 80-х, 70-х и даже 60-х годах, будут до сих пор активно применяться? Как сказал Булэ де ля Мерт при казни Дю д'Аньена: "C'est pire qu'un crime, c'est une faute" (франц. - "это больше чем преступление, это - просчет").

ДАТЫ В ЖИЗНИ КОМПЬЮТЕРНЫХ СИСТЕМ

По прогнозам Gartner Group, около 30% всех приложений не совместимы с 2000 годом. Устранение ошибок, связанных с проблемой Y2K, потребует фантастических затрат - от 300 до 600 млрд долларов. Неплохая цена за два байта! Сравните эту сумму с доходом Microsoft в 1997 году (11,4 млрд долларов). Можно привести и такую красноречивую цифру: только 7% (!) персональных компьютеров эта пресловутая проблема не грозит.

В настоящее время самыми высокооплачиваемыми специалистами в области информационных технологий (естественно, на Западе) оказались те, кто связан с устранением ошибок Y2K. Учитывая объем работы, их катастрофически не хватает. Кстати, сейчас иностранным специалистам в области Y2K (особенно знающим COBOL) достаточно просто получить работу в США. Решением проблемы Y2K занимается множество фирм, которые буквально завалены заказами. В Европе проблему обостряет переход стран ЕЭС на новую валюту.

Читатель вправе задать следующий вопрос: ну и ладно, пусть мой компьютер неверно показывает дату, что в этом страшного? Из-за чего, собственно, весь сыр-бор?

Ответ на этот вопрос получить не так-то просто, несмотря на большой объем информации в прессе. Значительная часть дискуссий в Internet посвящена общим вопросам проблемы Y2K, например принципам разработки корпоративных планов тестирования и перехода на новое ПО. Конкретного материала сравнительно немного. Тому есть несколько причин.

Во-первых, многие разработчики ПО скрывают или не всегда правдиво отражают состояние своих программных продуктов. Негативная информация может повредить их бизнесу. Если же разработчик уверен в своем продукте, он обязательно объявляет о совместимости с 2000-м годом.

Во-вторых, информация стоит денег. Консалтинговые и тестовые компании неохотно делятся результатами своих исследований (бесплатно).

В-третьих, за несколько десятилетий создано такое количество ПО, что проверить его на предмет наличия ошибок - задача очень непростая. Думается, еще долго после 2000 года специалисты по Y2K не останутся без работы.

Тем не менее имеющейся информации достаточно, чтобы хотя бы приблизительно отразить проблемы, с которыми столкнутся специалисты информационных технологий. Оставим в стороне унаследованные системы и их приложения, так как они не характерны для России. Основное внимание в статье будет уделяться сетевым технологиям, но в общем контексте информационных решений. Рассмотрим для начала, откуда возникает проблема Y2K на аппаратном и программном уровне персонального компьютера, так как в настоящее время это самая популярная не только клиентская, но и серверная платформа.

Следует учитывать одну тонкость. В Internet имеется несколько списков продуктов, совместимых с Y2K. Одни списки предоставляют разработчики программно-аппаратного обеспечения, а другие - независимые компании, занимающиеся тестированием продуктов. Списки независимых тестировщиков ценятся гораздо выше, поскольку в них нет лакировки действительности. Конечно, если производитель ПО заявляет о несовместимости своего продукта с Y2K, то верить ему можно. Однако порой производитель ограничивается сообщением, что продукт не тестировался или вообще ничего не упоминает по этому поводу. Тогда единственный путь - обратиться к спискам или самому заняться тестированием.

Со своей стороны мы можем порекомендовать несколько интересных серверов Web, содержащих полезную информацию по проблеме Y2K. Один из них (http://www.compinfo.co.uk/y2k/manufpos.htm#manufacturers) имеет многочисленные ссылки на различные списки продуктов, совместимых с Y2K, а также разного рода утилиты и комментарии. Сервер www.year2000.com также предоставляет достаточно любопытные сведения. Телеконференция comp.software.year-2000 специально посвящена дискуссии о проблеме 2000-го года, но она, на наш взгляд, недостаточно информативна.

СИСТЕМНЫЕ ЧАСЫ

В персональном компьютере время отсчитывают три вида часов: часы реального времени CMOS, часы BIOS и часы операционной системы. Каждые из них имеют свое функциональное назначение.

Часы CMOS питаются от собственного источника энергии (аккумулятора) и не зависят от работы остального оборудования. Основное их назначение - отслеживать время, когда компьютер отключен. Часы CMOS в персональных компьютерах появились не сразу и стали стандартной принадлежностью только начиная с IBM PC AT. До этого момента время и дата (в часах BIOS и DОS/Windows) устанавливались с помощью команд DATE и TIME (в MS-DOS). Обычно система обращается к часам CMOS только один раз, в момент загрузки компьютера. Время из них считывается в часы BIOS. Тем не менее ряд приложений, прежде всего связанных с поддержанием безопасности, используют часы CMOS напрямую, минуя другие системные часы. Общего стандарта на аппаратную реализацию часов реального времени CMOS не существует. В часах, где год записывается двумя цифрами, после 31 декабря 1999 года наступит 1 января 1900 года. На самом деле особой беды в этом нет, как будет показано ниже.

Задача часов BIOS состоит в отслеживании времени суток в процессе работы компьютера. Они работают, используя аппаратные прерывания IRQ8 центрального процессора. Данные хранятся в системной области BIOS. Большинство версий BIOS выпуска до 1995 г. неправильно обрабатывают смену тысячелетия. Но и сейчас некорректно работающие BIOS встречаются на практике на компьютерах сомнительной сборки. Основная проблема состоит в том, что в таких BIOS год хранится в виде двух цифр (отсчет в BIOS и DOS/Windows ведется с 1980 года). При смене столетия разные BIOS могут показывать разные даты - все зависит от конкретной версии. Чаще всего 1 января 2000 года они показывают как 04/01/80 (первое апреля 1980 года). Современные BIOS не только способны корректно отслеживать смену дат, но и могут правильно интерпретировать некорректные показания часов CMOS (так, если часы CMOS 1 января покажут 1900 год, то в часах BIOS будет 2000 год).

Операционная система имеет собственные часы, формат которых не совпадает с форматами часов CMOS и BIOS. Кроме того, средства ОС обычно позволяют напрямую менять время и дату во всех системных часах. Прикладные программы в большинстве своем используют часы ОС. Порядок установки времени в часах ОС зависит от конкретной операционной системы. DOS и Windows устанавливают время ОС по часам BIOS и далее постоянно синхронизируются с ними. Поэтому некорректно работающие часы BIOS провоцируют проблемы на часах ОС. Но и сама ОС должна быть совместима с 2000 годом, в противном случае время на ее часах будет неправильным. Некоторые ОС для установки своих системных часов могут напрямую использовать часы CMOS. В этом случае они должны корректно устранять проблемы часов CMOS.

Проблему Y2K на системном уровне можно сформулировать так: насколько правильно часы CMOS, BIOS и ОС отслеживают смену тысячелетия при выключенном и включенном состоянии компьютера. Результаты могут отличаться.

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

К сожалению, подобные программы достаточно дороги и стоят от ста долларов до нескольких тысяч долларов. Цена зависит от возможностей программы. Тем не менее имеющиеся бесплатные демо-версии с ограниченными возможностями позволяют хотя бы протестировать системные часы. Среди таких программ можно выделить SURVIVE 2000 компании ANKH Software (http://www.survive-2000.com), Test2000.Exe компании TighTime Clock (http://www.rightime.com) и ряд других.

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

Около 93% всех ПК имеют часы реального времени CMOS, некорректно обрабатывающие смену тысячелетия при включенном ПК. Но это обстоятельство не столь существенно, так как в процессе работы операционные системы не используют часы CMOS. Единственную неприятность могут доставить программы, напрямую обращающиеся к часам CMOS (сейчас они - большая редкость). Если же часы CMOS не прошли тесты при отключенном компьютере, то это говорит о более серьезных проблемах несовместимости.

Что касается часов BIOS, то большинство производителей объявляют о совместимости с 2000-м годом, если BIOS отслеживает смену тысячелетия при включенном компьютере. Если BIOS не прошел тесты, то настоятельно рекомендуется заменить микросхему BIOS на более новую версию, желательно BIOS с возможностью перепрограммирования (флэш-BIOS). Если компьютер не выдержал теста смены тысячелетия для часов BIOS в отключенном состоянии, то это значит, что часы BIOS не могут адекватно интерпретировать показания часов CMOS. Здесь также рекомендуется обновить BIOS. Не прошедшие этот тест машины обычно не удовлетворяют тестам для часов CMOS и ОС при выключенном состоянии. Начиная с 1995 года версии BIOS ведущих производителей (Award, AMIBIOS, Phoenix и др.) полностью совместимы с 2000-м годом.

Если часы ОС не прошли тесты для выключенного компьютера, это не означает, что операционная система не совместима с 2000-м годом. Надо сначала попытаться обновить BIOS. А вот если часы ОС не прошли тесты для включенного состояния ПК, это однозначно свидетельствует, что ОС не совместима с 2000-м годом, и надо переходить на новую версию операционной системы.

Если BIOS или ОС совместимы с 2000-м годом не полностью, то при смене тысячелетия многое будет зависеть от того, в каком состоянии оставили компьютер, включенном или выключенном.

Справедливости ради следует сказать, что в сетевой среде проблемы системных часов на клиентских местах не так уж и страшны. Это вызвано тем, что значения системных часов обычно устанавливаются и меняются автоматически при входе в сеть. Здесь более актуальна проблема совместимости с Y2K системных часов серверов. Правда, это только в том случае, если ПК никогда не используют вне сетевой среды. Главное, чтобы часы ОС клиентских ПК были совместимы с Y2K.

ОПЕРАЦИОННАЯ СИСТЕМА И ПРОБЛЕМА Y2K

Только корректностью смены тысячелетия проблема Y2K не ограничивается. Некоторые компьютеры неправильно определяют високосность годов в 21 веке.

Согласно григорианскому календарю, 2000 год является високосным, тогда как 2001 год - невисокосный. Конечно, последствия такой ошибки не столь критичны, хотя и могут вызвать неприятности.

Следует иметь в виду, что когда говорят о совместимости операционной системы с Y2K, то рассматриваются не только часы ОС, но и насколько утилиты, входящие в состав системы, безошибочно работают с датами. Например, если в состав ОС входит программа резервного копирования, не предназначенная для работы в 21 веке, то данная ОС не может считаться полностью совместимой с Y2K.

Большинство клиентских ПК оснащены операционными системами компании Microsoft. По заявлению Microsoft, все версии MS-DOS, до пятой включительно, не совместимы с Y2K. Windows 3.x правильно работает с 2000-м годом, но некоторые важные приложения ОС, в частности "Диспетчер файлов" (File Manager), неверно обрабатывают даты (существуют заплаты для решения этой проблемы).

ОС Windows 95 совместима с Y2K, если ее устанавливали с нуля, а не в качестве обновления для Windows 3.x. Тем не менее ряд независимых тестеров обнаружили проблемы. После 2000 года часть утилит может некорректно работать, например "Поиск" (Find). Существует ряд исправлений, которые пользователи могут списать с Web-сервера Microsoft. Windows 98 будет полностью избавлена от проблемы Y2K.

Windows NT совместима с Y2K только начиная с версии 4.0. В более ранних версиях обнаружены те или иные ошибки при обработке дат. Опять же, с помощью заплат часть проблем можно устранить.

Что касается ОС NetWare, то с версии 4 она полностью совместима с Y2K. В отношении более ранних версий Novell заявляет лишь то, что они не тестировались и корректность их работы после 2000 года компания не гарантирует. Novell настоятельно рекомендует пользователям NetWare 3.11 и 3.12 осуществить переход на NetWare 4.1x или хотя бы на NetWare 3.2, которая совместима с Y2K. Но за такое обновление придется платить деньги. Кто не хочет тратиться, тот на Web-сервере Novell может найти заплаты для NetWare 3.11 и 3.12.

В настоящее время на рынке операционных систем для ПК третье место (после продуктов Microsoft и Novell), оттеснив IBM OS/2, занимает Santa Cruz Operation. По сообщениям SCO, все ее системы совместимы с Y2K.

ПРИЛОЖЕНИЯ И ПРОБЛЕМА Y2K

В конце концов, именно некорректно написанные приложения могут сделать нашу жизнь после 2000 года невыносимой. Если операционная система не совместима с 2000-м годом, то все приложения, оперативно использующие даты, будут работать неверно: это календари, запускаемые по расписанию программы, и т. д. Но даже если ОС в полном порядке, это не значит, что используемые приложения совместимы с 2000-м годом. Часто все оказывается наоборот.

Дело в том, что очень многие программы хранят год в виде двух цифр. Проблема заключается в том, что программа эти цифры интерпретирует неправильно. Например, 2001 год здесь будет представлен как 1 год от Рождества Христова. Иногда приложения хранят год в виде четырех цифр, при этом год можно вводить в виде двух цифр, но недостающие цифры номера столетия могут подставляться некорректно (или не подставляться вовсе).

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

Как известно, самым продаваемым программным продуктом является Microsoft Office. Только Office 97 полностью совместим с 2000-м годом.

Программы Office 95 хранят год в виде 4 цифр, но некорректно обрабатывают год, заданный в виде 2 цифр.

В этой ситуации лучше всего поставить заплаты или обновить версию. Более старые версии Office имеют значительные ошибки, и даже календари здесь работают неправильно.

Такими же недостатками страдает множество старых версий офисных приложений других компаний. В частности, любимая в России СУБД Paradox не справляется со сменой дат в 2000 году до седьмой версии включительно, так же как и некоторые системные утилиты, в качестве примера можно назвать Norton AntiVirus 2.0 компании Symantec.

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

Но сетевых администраторов ждут гораздо более серьезные испытания. Ни одна версия Banyan VINES, имеющаяся в настоящее время на рынке, не поддерживает 2000 год. То же самое можно сказать про сервер удаленного доступа AccessBuilder компании 3Com. И этот список можно продолжать очень долго.

Такие же проблемы и с программами резервного копирования. Весьма популярной в мире для сетей NetWare и Windows NT является программа резервного копирования ARCserve компании Cheyenne (сейчас подразделение Computer Associates). Только начиная с версии 6.1 ARCserve for NetWare и с версии 6.0 ARCserve for Windows NT совместимы с 2000-м годом. К чему это может привести? Во-первых, некоторые расписания архивирования могут некорректно работать. Кроме того, в случае использования метода резервного копирования Differential Backup, учитывающего дату обновления, работа программы приведет к непредсказуемым последствиям.

Несовместимыми с 2000-м годом оказались и другие продукты Cheyenne, в частности системы иерархического хранения HSM for NetWare и HSM for UNIX. Более того, компания не собирается обновлять их. Такой замечательный продукт Cheyenne, как программный факс-сервер FAXserve, также не совместим с Y2K. Это может привести к неприятным последствиям для пользователей FAXserve. Если факс уйдет с датой 2 год н. э., то это еще полбеды, но вот отказы в работе расписания отсылки факсов сводят на нет все преимущества данной программы. В ближайшее время компания планирует выпустить заплату для FAXserve 5.

А работа источников бесперебойного питания? APC поставляет программы управления PowerChute, не совместимые с Y2K. Конечно, это не значит, что после 2000 года UPS не будут функционировать. Но вот корректно работать по расписанию - совсем другой вопрос. К сведению читателей, версия PowerChute for NetWare, совместимая с Y2K, выйдет только в четвертом квартале 1998 года.

Серьезное беспокойство вызывает и состояние программ управления сетью. Далеко не все они совместимы с Y2K. В частности, система Transend Network Manager компании 3Com принадлежит именно к таковым. Проблему обостряют некоторые MIB (базы управляющей информации), которые хранят время в урезанном формате. Эксперты предсказывают, что в 2000 году сетевые администраторы столкнутся с явлением, когда системы будут выдавать ничем не обоснованные сигналы тревоги (alarm) или, наоборот, игнорировать критические состояния сетевых компонентов.

В начале статьи автор уже приводил пример некорректной работы системы электронной почты. Здесь ситуация может оказаться еще более драматичной, поскольку при пересылке задействуются промежуточные системы, не входящие в непосредственное ведение конкретных администраторов. А ведь электронная почта - это самый важный компонент Internet для корпоративных клиентов.

2000-й год готовит большие испытания и для систем коллективной обработки информации, таких как Lotus Notes или Novell GroupWise. Сетевым администраторам стоит обратить пристальное внимание на их обновление уже сейчас. К счастью, ведущие производители уже представили продукты, избавленные от ошибки 2000 года.

Аналогичное состояние у систем управления базами данных и системы документооборота. Жизнь складывается так, что, независимо от желания, заказчикам придется модернизировать свои старые системы на новые версии. Очень неприятен и обременителен вопрос пересмотра и обновления своих наработок. Вот где могут поживиться консалтинговые фирмы.

Еще хуже положение у крупных промышленных и финансовых компаний, использующих сложные системы управления производством или ресурсами. Такие компании не могут себе позволить, чтобы технологические или другие бизнес-процессы перестали выполняться после 2000 года. А ведь сложные системы содержат и продукты независимых производителей ПО, что еще более усугубляет проблему. Между прочим, по данным той же Gartner Group, крупные компании затратят на решение проблемы Y2K значительно больше денег в пересчете на один компьютер, чем мелкие организации.

ЗАКЛЮЧЕНИЕ

В статье мы рассмотрели только верхушку айсберга под названием "Проблема 2000 года". Тема настолько сложна и многогранна, что требуется много усилий, чтобы разобраться в ней. Здесь же мы затронули только программно-аппаратное обеспечение, продаваемое на рынке. А сколько существует доморощенных наработок? Кто в них будет разбираться и тестировать? Ведь порой их разрабатывали люди, уже не работающие на предприятии, а исходные коды давно потеряны. К сожалению, вопросов больше, чем ответов на них.

До 2000 года остается еще полтора года. Это время надо потратить с умом, чтобы в первый рабочий день 2000 года не превратился в кошмар. Хорошо еще, что до 10 000 года далеко!


Константин Пьянзин - обозреватель LAN. С ним можно связаться по адресу: koka@osp.ru.


ПРОБЛЕМА 2000 ГОДА

Некоторые рекомендации по тестированию

Проверять совместимость ПК с Y2K, меняя вручную дату в DOS или Windows, не следует. Полученная информация будет неполна и малоинформативна из-за того, что в компьютере три вида системных часов, и изменение даты на одних часах не позволит проанализировать остальные. К тому же часы по-разному реагируют на смену тысячелетия в зависимости от того, в каком состоянии - включенном или выключенном - будет находиться в этот момент компьютер. Чем изобретать велосипед, лучше использовать бесплатные версии тестовых программ.

Ошибочно считать, что если ПК куплен недавно, то он полностью совместим с Y2K. Не следует полагаться и на известную марку brandname. Встречаются случаи, когда даже самые последние ПК очень известных производителей не совместимы с 2000-м годом.

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

Что касается тестирования программного обеспечения, то здесь рекомендуется воспользоваться серьезными тестовыми программами наподобие SURVIVE 2000. Затраты на приобретение таких программ с лихвой окупятся. Они содержат богатую базу информации по приложениям, позволяют быстро выявить несовместимые с Y2K версии и дают рекомендации по устранению проблемы. Более того, некоторые из них имеют хорошие сканеры программ и могут выявлять подозрительные места в программном обеспечении заказчика.

Конечно, работа тестовых программ ограничена только выявлением проблем. Однако это даст возможность заранее подготовить планы модернизации программно-аппаратного обеспечения.