Computer >> 컴퓨터 >  >> 시스템 >> Windows Server

수정: 컴퓨터(서버) 재부팅 후 시간이 잘못된 값으로 초기화되는 문제 해결 방법

이 글에서는 노트북·PC·서버를 종료하거나 재시작하거나 최대 절전 모드에서 다시 시작한 후 시스템 시계에 잘못된 시간과 날짜가 표시되는 이유를 살펴봅니다. 부팅할 때마다 시간이 초기화되어 수동으로 다시 맞춰야 하는 상황이라면 아래 내용을 확인해 보세요. 가장 흔한 원인인 BIOS 배터리 방전부터, 한 대의 컴퓨터에 Windows와 Linux를 함께 설치한 듀얼 부트 환경의 시간 오류, 그리고 HPE ProLiant G9/G8 서버의 펌웨어 버그까지 다양한 사례를 다룹니다.

BIOS/CMOS 배터리 방전으로 인한 날짜·시간 저장 실패

"재부팅할 때마다 시간과 날짜가 초기화되는 이유는 무엇일까?"라는 질문에 대한 가장 전형적인 답은 BIOS(CMOS) 배터리 방전입니다. 이 배터리는 컴퓨터나 노트북의 전원이 꺼져 있을 때도 BIOS/UEFI 설정을 유지하고, 메인보드에 내장된 하드웨어 시계가 자율적으로 작동하도록 전원을 공급하는 역할을 합니다.

배터리가 방전되면 메인보드에 전원이 공급되지 않는 동안 BIOS가 설정값을 유지하지 못하고 모든 설정이 초기화되며, 현재 날짜와 시간도 함께 사라집니다. 컴퓨터 사용 기간이 상당히 오래되었다면 배터리가 수명을 다해 죽었을 가능성이 높으므로 교체할 것을 강력히 권장합니다. 교체 작업은 어렵지 않으며 특별한 기술도 필요하지 않습니다. 대부분의 가정용 및 기업용 장비에는 표준 3V CR2032 배터리가 사용됩니다.

수정: 컴퓨터(서버) 재부팅 후 시간이 잘못된 값으로 초기화되는 문제 해결 방법

배터리를 교체해도 문제가 해결되지 않았다면, BIOS 설정을 초기화하는 점퍼(배터리 소켓 근처에 있으며 CMOS / CLEAR / RESET으로 표시됨)의 상태를 확인하세요. 누군가 점퍼를 RESET 위치에 그대로 두었을 수 있습니다. 이 경우 메인보드에 전원이 들어올 때마다 BIOS 설정이 초기화되므로, 점퍼를 정상 위치로 옮기면 됩니다.

다음으로 고려할 수 있는 방법은 메인보드의 BIOS 펌웨어를 업데이트하는 것입니다. 하드웨어 제조사 웹사이트에서 업데이트 방법을 확인하세요. 새로운 펌웨어에는 여러 버그가 수정된 경우가 많습니다.

Windows: time.windows.com과 시계 동기화 설정

Windows에서 날짜/시간 설정이 계속 변경된다면 먼저 현재 시간대 설정과 외부 시간 서버와의 동기화 파라미터를 확인해야 합니다. Windows 10에서는 제어판 → 시계 및 국가 → 날짜 및 시간에서 현재 시간 설정을 확인할 수 있습니다. 아래 예시에서는 UTC+1 시간대가 지정되어 있고 서머타임(Daylight Saving Time)이 활성화되어 있는 것을 볼 수 있습니다.

수정: 컴퓨터(서버) 재부팅 후 시간이 잘못된 값으로 초기화되는 문제 해결 방법

: 명령 프롬프트의 tzutil 도구나 PowerShell을 사용하면 명령줄에서도 시간대를 지정할 수 있습니다.

컴퓨터가 AD 도메인에 가입되어 있지 않다면 외부 시간 소스(NTP 시간 서버)와의 동기화 설정을 점검하세요. 인터넷 시간 탭을 클릭하고 time.windows.com 서버와 자동 동기화하도록 설정되어 있는지 확인합니다.

수정: 컴퓨터(서버) 재부팅 후 시간이 잘못된 값으로 초기화되는 문제 해결 방법

AD 도메인 가입 컴퓨터의 시간 동기화 문제 해결

컴퓨터가 Active Directory 도메인의 일부라면 AD 도메인의 시간 동기화 아키텍처를 이해해야 합니다.

Active Directory 도메인에서는 다음과 같은 시간 동기화 체계가 사용됩니다.

  • PDC 에뮬레이터 FSMO 역할을 보유한 포리스트 루트 도메인 컨트롤러가 해당 도메인의 다른 모든 DC의 시간 소스 역할을 합니다.
  • 나머지 DC들은 PDC와 시간을 동기화합니다.
  • 일반 도메인 멤버(서버 및 워크스테이션)는 AD 토폴로지상 가장 가까운 도메인 컨트롤러와 시간을 동기화합니다.

루트 PDC는 외부 소스와 동기화할 수도 있고, 기본 설정대로 자기 자신과 동기화할 수도 있습니다.

PDC 역할을 가진 도메인 컨트롤러는 다음 명령으로 찾을 수 있습니다.

netdom /query fsmo

PDC에서 외부 NTP 서버와 시간 동기화를 구성하려면 다음 명령들을 사용합니다.

외부 시간 소스를 지정합니다:

w32tm /config /manualpeerlist:"0.nl.pool.ntp.org,0x1 1.nl.pool.ntp.org,0x1 2.nl.pool.ntp.org,0x1 3.nl.pool.ntp.org,0x1"

이 DC를 클라이언트들이 신뢰할 수 있는 시간 소스로 만듭니다:

w32tm /config /reliable:yes

Windows Time 서비스를 재시작하여 DC 시간을 nl.pool.ntp.org 시간 서버와 동기화합니다:

net stop w32time && net start w32time

동기화 소스와 상태를 확인할 수 있습니다:

w32tm /query /peers

수동 모드로 동기화를 시작합니다:

w32tm /resync /rediscover

Windows·Linux 듀얼 부트 시 시간이 다르게 표시되는 문제

한 대의 컴퓨터에 Windows와 Linux 두 운영체제를 듀얼 부트로 설치한 경우는 별도로 살펴볼 필요가 있습니다. 한쪽 시스템에서 다른 쪽으로 부팅을 전환하면(예: Windows에서 Linux로 부팅) 실제 시간보다 몇 시간 앞서거나 늦게 표시되는 문제를 겪을 수 있습니다.

Windows와 Linux는 BIOS 시간을 서로 다르게 처리합니다. 두 운영체제가 UTClocaltime이라는 서로 다른 시간 형식을 사용하기 때문입니다.

GNU/Linux 계열 운영체제(Mac OS X 포함)는 BIOS에 저장된 시간이 UTC(GMT) 형식이라고 가정합니다. 따라서 부팅 시 Linux는 사용자가 선택한 현재 시간대의 오프셋을 더하거나 빼서 UTC 시간을 변환합니다. 예를 들어 아테네 시간대(UTC+2)의 현지 시간을 얻으려면 Linux는 2시간을 더합니다.

반면 Windows는 BIOS에 시간이 localtime 형식으로 저장되어 있다고 간주합니다. 새로운 시간대를 지정하거나 외부 소스와 시간을 동기화하면 Windows는 BIOS의 로컬 시간에 그에 맞는 변경을 가합니다. 그런데 Linux(필자의 경우 Ubuntu)는 BIOS 시간이 UTC 형식이라고 생각하고 추가로 시간대 오프셋을 더합니다. 바로 이 차이 때문에 Linux에서 Windows로, 또는 그 반대로 전환할 때 시간이 틀어지게 됩니다.

이 문제를 해결하려면 Windows가 하드웨어 시계를 UTC 형식으로 사용하도록 RealTimeIsUniversal 레지스트리 값을 설정해야 합니다.

reg add "HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /t REG_DWORD /d 1 /f

수정: 컴퓨터(서버) 재부팅 후 시간이 잘못된 값으로 초기화되는 문제 해결 방법

: 64비트 Windows 버전에서는 DWORD 대신 QWORD 타입의 값을 생성해야 합니다:

reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_QWORD /d 1

또한 Windows에서 인터넷 시간 동기화를 비활성화해야 합니다. 시간을 업데이트할 때마다 Windows가 UTC 시간을 로컬 시간으로 되돌리기 때문입니다.

sc config w32time start= disabled

설정 후 Windows를 재시작합니다.

또는 반대로 Linux가 로컬 시간을 사용하도록 만들 수도 있습니다. Ubuntu 15.04 이상에서는 timedatectl 도구를 사용합니다:

timedatectl set-local-rtc 1

수정: 컴퓨터(서버) 재부팅 후 시간이 잘못된 값으로 초기화되는 문제 해결 방법

HPE 서버 + Windows Server: 재시작 후 시스템 시간 오프셋 발생

한 원격 고객이 Windows Server 2008 R2 / 2012 R2가 실행 중인 HPE DL/ML Gen9 서버에서 시간대를 변경한 후 흥미로운 문제를 겪었습니다. 조사 결과 HP ProLiant Gen9 서버(및 일부 HP ProLiant DL580 Gen8 서버)에서 시스템 시간이나 시간대를 변경하면 해당 값이 저장되지 않고 재시작 후 이전 값으로 되돌아가는 것으로 밝혀졌습니다. 이 문제는 Windows Server가 Legacy 모드로 부팅된 서버에서만 발생했으며, 네이티브 UEFI 부팅을 사용하는 서버에서는 시간 변경 문제가 없었습니다.

시스템 로그에는 다음 이벤트가 기록되었습니다:
The system time has changed to ‎2019‎-‎01‎-‎29T12:12:28.500000000Z from ‎2019-‎01‎-‎29T13:12:27.923115700Z.
Change Reason: System time synchronized with the hardware clock.

이 문제에 대한 해결책으로 HP는 ROM 버전을 최소 1.5 이상으로 업데이트할 것을 권장합니다. 이 버전의 ROM-Based Setup Utility(RBSU)에는 시간 초기화 버그가 없습니다.

또는 임시 해결책으로, BIOS가 Windows에 UTC 시스템 시간을 제공하도록(로컬 시간 대신) 설정할 수 있습니다. 앞서 설명한 것처럼 HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation 레지스트리 키에 이름이 RealTimeIsUniversal이고 값이 1인 파라미터를 생성하면 됩니다.