Те наши клиенты, кто устанавливал пакеты управления Metrex Cisco Management Pack или Metrex APC Management Pack в операционной системе windows 2003 x64 столкнулись с неожиданным требованием инсталлера.

hotfix-req

Помимо стандартных требований – компоненты “SNMP Service” и “SNMP WMI provider”, Powershell v1.0, он требует установить hotfix под номером  942589. Эта заплатка устраняет проблемы с перенаправлением файловой системы в Windows x64.

Для начала,  я думаю, стоит объяснить, что такое – “перенаправление файловой системы”. Эта штука нужна  для обеспечения нормальной работы 32-битных приложений в 64-битной среде

Корень проблемы кроется в том, что большинство приложений  использует в своей работе системные компоненты и библиотеки windows, но вот корректно взаимодействовать многие 32-битные приложения могут только с 32-битными же библиотеками и компонентами. Поэтому, для обеспечения совместимести, во все операционные системы Windows x64 включены в том числе и сборки всех важных системных компонент (IIS, Powershell, SNMP и других) под 32 бита.

Работает перенаправление предельно просто. Когда 32-битное приложение пытается обратиться к файлу, находящемуся в папке C:\WINDOWS\System32, операционная система перехватывает запрос и перенаправляет его в специальную песочницу – папку C:\WINDOWS\SysWOW64.

Именно в папке  SysWOW64 и находятся специальные сборки, необходимые для обеспечения совместимости. Чего там только нет. Про IIS, Powershell и SNMP я уже упоминал, а ещё там есть msixec, mmc.exe, net.exe, cmd.exe. Там даже mspaint есть.

Однако, как быть, если 32-битному приложению нужно работать именно с 64-битными компонентами? Ведь некоторые компоненты не имеют 32-битных аналогов, к примеру, powershell командлеты для работы с System Center Operations Manager 2007 существуют только в x64 версии. Для таких случаев в 64-битных ОС есть специальный путь c:\windows\sysnative. Он позволяет 32-битному приложению обойти перенаправление файловой системы и попасть не в SysWOW64, а в System32.

Так вот, к сожалению, из-за бага в Windows 2003 x64,  который обещали поправить в SP3, путь c:\windows\sysnative не работает. Для устранения этого бага и нужно ставить hotfix 942589.

Так уж случилось, что модули лицензирования в наших пакетах управления изначально проектировались для работы в среде x86. В среде x64 они, впрочем, успешно работают, но активно используют путь sysnative для запуска 64-битной версии Powershell.

Поэтому, для тех, кто пока ещё не перевёл свои серверы на Windows 2008, но предпочитает 64-битные системы у меня есть две новости, плохая и хорошая.

Новость первая, плохая.

  • Придётся устанавливать хотфикс, да ещё и перезагружать сервер после установки.

Новость вторая, хорошая.

  • Наш модуль лицензирования работает только на сервере SCOM с ролью RMS. Поэтому устанавливать hotfix придётся только на него. А серверы SCOM с ролями MS, Gateway и Agent, используемые нашими пакетами управления как прокси, опрашивающие устройства по SNMP, в хотфиксе не нуждаются.