Системное время в Windows Server может сбрасываться после перезагрузки или выключения по нескольким причинам: от аппаратных неисправностей, таких как севшая батарейка BIOS, до программных конфликтов в конфигурациях с двойной загрузкой (Dual Boot) или ошибок в прошивке серверов, например, HPE ProLiant Gen9/Gen8. В этой статье мы подробно разберем каждую причину и предложим проверенные решения для устранения проблемы.
Севшая батарейка BIOS
Одна из самых распространенных причин сброса времени — разряженная батарейка BIOS (CR2032, 3 В), которая отвечает за сохранение настроек BIOS/UEFI и работу аппаратных часов при отключении питания. Если питание материнской платы отсутствует, а батарейка разряжена, настройки, включая дату и время, сбрасываются на значения по умолчанию.
Для решения проблемы выполните следующие шаги:
1. Выключите устройство и отсоедините его от сети.
2. Найдите батарейку на материнской плате (обычно это круглая батарейка CR2032).
3. Замените батарейку на новую, убедившись, что она правильно установлена.
4. Включите устройство и настройте время в BIOS.
Если замена батарейки не помогла, проверьте перемычку сброса настроек BIOS (джампер, обычно обозначенный как CCMOS, CLEAR или RESET). Если джампер установлен в положение сброса, настройки BIOS обнуляются при каждом включении. Верните его в стандартное положение.
Дополнительно рекомендуется обновить прошивку BIOS до последней версии, доступной на сайте производителя материнской платы. Новые версии прошивки часто устраняют баги, связанные с управлением временем.
Неверные настройки часового пояса и синхронизации времени
Если время в Windows Server сбивается даже при исправной батарейке, проверьте настройки часового пояса и синхронизации времени. В русскоязычной версии Windows настройки времени доступны через:
— Панель управления -> Часы и регион -> Дата и время (Control Panel -> Clock and Region -> Date and Time).
Убедитесь, что выбран правильный часовой пояс (например, UTC+03:00 для Москвы) и отключен автоматический переход на летнее/зимнее время, если он не требуется.
Для управления часовым поясом через командную строку используйте утилиту tzutil. Например:
tzutil /s "Russian Standard Time"
Если сервер не входит в домен Active Directory, проверьте настройки синхронизации времени с внешним сервером времени (NTP). Для этого:
1. Перейдите во вкладку «Время по Интернету» (Internet Time).
2. Убедитесь, что включена автоматическая синхронизация с сервером time.windows.com.
3. Нажмите «Обновить сейчас» для проверки связи с сервером.
Синхронизация времени в домене Active Directory
В доменной среде Active Directory синхронизация времени осуществляется через контроллер домена, который выступает в роли сервера времени. Если время сбивается, проверьте:
1. Настройки NTP на контроллере домена (обычно он синхронизируется с внешним сервером времени).
2. Корректность групповых политик, управляющих синхронизацией времени.
3. Журналы событий на клиенте и сервере (раздел «Система») для выявления ошибок синхронизации.
Подробные инструкции по настройке времени в домене доступны в документации Microsoft.
Проблемы с двойной загрузкой Windows и Linux
При использовании двойной загрузки (Dual Boot) с Windows и Linux время может смещаться на несколько часов при переключении между системами. Это связано с различиями в обработке аппаратного времени:
— Linux (и macOS) считает, что время в BIOS хранится в формате UTC, и добавляет смещение часового пояса для получения локального времени.
— Windows предполагает, что время в BIOS — это локальное время (localtime), и изменяет его при синхронизации или смене часового пояса.
В результате Linux может добавить смещение к уже измененному Windows времени, что приводит к ошибке. Например, для часового пояса UTC+03:00 время может сместиться на 3 часа.
Решение для Windows
Чтобы Windows использовала время в формате UTC, настройте параметр реестра RealTimeIsUniversal:
1. Откройте редактор реестра (regedit).
2. Перейдите в раздел: Конфигурация компьютера -> Система -> Текущий набор управления -> Управление часовым поясом (HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation).
3. Создайте параметр RealTimeIsUniversal типа DWORD (для 32-битных систем) или QWORD (для 64-битных) со значением 1.
Команда для командной строки:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /t REG_QWORD /d 1 /f
Дополнительно отключите автоматическую синхронизацию времени в Windows, чтобы избежать сброса UTC на локальное время:
sc config w32time start= disabled
Перезагрузите сервер после внесения изменений.
Решение для Linux
Альтернативно, настройте Linux на использование локального времени. В Ubuntu 15.04 и выше или CentOS выполните:
timedatectl set-local-rtc 1
Это заставит Linux интерпретировать время BIOS как локальное.
Проблема с серверами HPE ProLiant Gen9/Gen8
На серверах HPE ProLiant Gen9 и некоторых Gen8 (например, DL580) с Windows Server 2008 R2/2012 R2 время может сбрасываться после изменения часового пояса или системного времени, если сервер загружается в режиме Legacy (не UEFI). При этом в журнале событий появляется сообщение:
The system time has changed to 2018-04-29T12:12:28.500000000Z from 2018-04-29T13:12:27.923115700Z. Change Reason: System time synchronized with the hardware clock.
Решение от HPE
1. Обновите прошивку ROM до версии 1.50 или выше через утилиту ROM-Based Setup Utility (RBSU). Эта версия устраняет баг сброса времени.
2. Если обновление невозможно, настройте Windows на использование времени BIOS в формате UTC, как описано выше, с помощью параметра RealTimeIsUniversal:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /t REG_QWORD /d 1 /f
Сброс времени в Windows Server может быть вызван аппаратными (севшая батарейка, сбой прошивки) или программными (конфликты в Dual Boot, неверные настройки синхронизации) причинами. Проверьте батарейку BIOS, настройки часового пояса, параметры синхронизации и, при необходимости, обновите прошивку или измените конфигурацию реестра. Эти шаги помогут стабилизировать системное время.