Virtual Server/Bare Metal Server의 시간 동기화 구성

Virtual Server/Bare Metal Server의 시간 동기화 구성

개요

이 문서에서는 Samsung Cloud Platform(이하 SCP)의 Virtual Server 또는 Bare Metal Server에서 시간 동기화 설정 방법을 다룹니다. 시스템에서 운영되는 소프트웨어는 안정적이고 일관된 시스템 시간 정보를 유지하기 위해 정확한 시간 동기화가 필수적입니다. 특히, 다수의 서버로 구성된 업무 시스템에서는 모든 서버가 동일한 Network Time Protocol(이하 NTP) 서버를 통해 시간을 동기화해야 합니다. 이를 통해 시스템 로그에 정확한 타임스탬프가 기록되며, 이벤트 발생 시 시간대별 문제를 효율적으로 분석할 수 있습니다.

SCP는 Multi-AZ 또는 모든 리전에서 공통으로 사용 가능한 NTP 전용 서버를 제공합니다. 또한, SCP의 Virtual Server 또는 Bare Metal Server는 기본적으로 OS 이미지에 SCP의 시간 동기화 설정이 사전 구성되어 있습니다. 따라서 Compute 상품를 추가하고 OS를 시작하기만 하면 시간 동기화가 자동으로 활성화됩니다.

※ SCP는 시간 동기화를 위해 Public IP와 Private IP를 모두 지원합니다. SCP에서 제공하는 NTP 서버 정보는 사용자 매뉴얼에서 확인할 수 있습니다. NTP 서버 정보를 도메인 형태로 등록하려면 SCP DNS 설정이 필요합니다.

Linux 서버의 시간 동기화 구성

Linux 시간 동기화를 위한 기본 요소

NTP 서비스 프로그램 – chrony, ntpd

Linux 서버에 시간 동기화를 구성하기 위해서는 NTP 서비스를 위한 프로그램을 설치해야 합니다. NTP 프로그램은ntpd 와 chrony 의 두가지 프로그램을 사용할 수 있고 SCP 에서 사용할 수 있는 Linux 배포판(Redhat, Ubuntu, CentOS) 에서는 기본적으로 chrony를 사용합니다. 최신 버전의 Linux OS 에서는 더 향상된 기능을 사용하기 위해 ntpd 대신chrony를 사용하므로 본 문서에서는 chrony에 대해서만 가이드를 제공하고 있습니다.

NTP 통신을 위한 보안 설정

NTP는 기본적으로 UDP 123 포트를 통해 통신합니다. SCP의 NTP 서버를 사용할 경우, 별도의 보안 설정(Security Group)을 추가할 필요가 없습니다. 다만, SCP의 NTP 서버를 Public IP로 설정하는 경우에는 Internet Gateway를 추가하고, Firewall 및 Security Group 정책을 설정해야 합니다.

chrony를 사용하여 시간 동기화 구성

시간 동기화 설정을 하기전에 서버에 접속 하여 동기화 상태를 확인하고 chrony 패키지가 설치 안된 경우 chrony 패키지를 설치하여 구성합니다.

chrony 동기화 상태 확인

사용자는 필요시 SCP NTP IP 정보를 참고하여 직접 NTP 설정을 할 수 있습니다. 다음 명령으로 Chrony의 동기화 상태를 확인합니다.

chronyc sources -v

다음 그림과 같이 SCP NTP 서버 설정 정보가 없거나(빨간 박스 정보), 외부 NTP 서버로 동기화 설정을 할 경우 다음 단계를 진행합니다.

Check linux chrony sync status
그림. Check linux chrony sync status

chrony 설정

chrony 설치 및 확인

chrony 패키지가 설치되었는지 확인 하고 설치가 안되어 있다면 다음 명령을 사용해서 설치합니다. 만약 ntp 가 설치되어 있다면 ntp 패키지 삭제 또는 ntpd 데몬을 중지한 후 chrony를 설치합니다.

Redhat/CentOS

chrony 설치 여부 확인 및 yum으로 chrony 패키지 설치

rpm -qa | grep chrony
yum install chrony

부팅 시 데몬이 자동 가동되도록 chronyd.service enable

systemctl enable chronyd
Ubuntu

chrony 설치 여부 확인 및 apt로 chrony 패키지 설치

dpkg -l | grep chrony
apt-get install chrony

부팅 시 데몬이 자동 가동되도록 chrony.service enable

systemctl enable chrony

chrony 설정

chrony 설정 파일에 SCP NTP 서버 정보 및 주요 옵션을 추가합니다.

Redhat/CentOS

vi편집기로 chrony 설정 파일 수정

vi /etc/chrony.conf 

NTP 서버 등록 및 옵션 추가

server [NTP Server IP 1] iburst 
server [NTP Server IP 2] iburst 
#makestep 1.0 3                  <--------------- 주석처리
leapsecmode slew
Ubuntu

vi편집기로 chrony 설정 파일 수정

vi /etc/chrony/chrony.conf

NTP 서버 등록 및 옵션 추가

server [NTP Server IP 1] iburst 
server [NTP Server IP 2] iburst 
#makestep 1.0 3                  <--------------- 주석처리
leapsecmode slew
옵션설명
serverNTP 소스 서버 정보
iburstserver 지시자와 같이 사용하며, NTP 서버에 연결할 수 없는 경우 일반적인 하나의 패킷 대신 8개의 패킷을 전송해서 초기 NTP 서버와의 동기화 되는 시간을 최소화 하기 위한 옵션
minpoll
maxpoll
기본 폴링 간격을 변경하는 옵션으로 log2 초 단위로 설정하며 기본 minpoll 값은 6 (2^6) 으로 64초이고, maxpoll 의 기본값은 10 (2^10)으로 1024 초임.
폴링 값은 3~17 내의 값으로 설정할 수 있고 minpoll, maxpoll을 짧게 설정하여 클럭 정확도를 높일 수 있음
server [NTP Server IP #1] iburst minpoll 6 maxpoll 6
server [NTP Server IP #2] iburst minpoll 6 maxpoll 6
slew 옵션
(점진적 동기화)
시간 동기화 옵션이 Step 모드로 설정되어 시간차가 발생할 경우 한번에 시간을 맞추게 되어 시스템 시간이 역행하거나 급격히 증가되어 서비스에 영향을 줄 수 있음.
DB 서비스 등의 중요한 서버는 다음과 같이 makestep 지시자는 주석처리 하고 leapsecmode slew 옵션을 추가
# makestep 1.0 3
leapsecmode slew

chrony 데몬 가동 및 확인

Redhat/CentOS

chronyd 서비스 재시작

systemctl restart chronyd 

chronyd 서비스 상태 확인

systemctl status chronyd  
Ubuntu

chrony 서비스 재시작

systemctl restart chrony 

chrony 서비스 상태 확인

systemctl status chrony  

시간 동기화 확인

chrony 가 동기화 되었는지 chronyc 명령어의 tracking, sources, sourcestats 을 사용해 상세하게 확인할 수 있습니다.

chronyc sources

chronyd 가 액세스 중인 현재 NTP 서버 정보 및 동기화 상태를 상세하게 확인할 수 있습니다.

Check linux chrony sync status
Check linux chrony sync status

위 소스 정보의 각 열에 대한 설명은 다음과 같습니다.

항목설명
M소스의 모드를 나타내는 것
^ 은 서버, = 는 피어, # 은 로컬에 연결된 NTP 소스 정보
S소스의 상태 정보
* : chronyd 가 현재 동기화된 소스
+ : 선택한 소스와 결합되는 허용 가능한 소스
- : 결합 알고리즘으로 제외되는 허용 가능한 소스
? : 연결이 실패했거나 패킷이 모든 테스트를 통과하지 않은 소스
~ : 시간이 다른 소스와 일치하지 않음 상태

등록한 NTP 서버 중 하나는 * 표시가 나와야 시간 동기화가 된 상태입니다.
StratumNTP 계층 구조를 나타내는 정보로 등록된 NTP 소스의 계층 정보입니다.
SCP NTP 서버의 경우 Stratum 5, 11 로 계층이 다르게 보이지만, 실제로는 동일 계층입니다.
PollNTP 소스를 폴링하는 속도를 초 단위로 표시하고 6의 값은 64초마다 폴링이 수행됨을 나타냅니다..
minpoll, maxpoll 값을 지정하지 않은 경우 내부 알고리즘에 따라 폴링 속도가 자동으로 달라집니다.
Reach소스의 응답 레지스터 값을 8진수로 보여주고 8비트에는 정상 또는 실패된 패킷 값이 포함됩니다.
값이 377 일 경우 8개의 전송에 대해 모두 정상이라는 의미로 소스 서버 앞의 “*” 값과 377 로 출력된 경우 시간동기화가 정상 상태이므로 동기화 상태 확인 시 두가지 값을 모두 확인해야 합니다
LastRx최근 샘플이 소스에서 수신한 시간으로 일반적인 경우 초 단위이고 수신이 느린 경우 m,h,d 또는 y 는 분, 시간, 일 또는 연도로 표시되기도 합니다.
Last Sample마지막 측정에서 로컬 클럭과 소스 간 오프셋 표시
대괄호의 숫자는 실제 측정 오프셋을 보여주고 이 접미사는 ns (나노초), us (마이크로 표시), ms (초 단위 표시) 또는 s (초)로 붙일 수 있습니다.
대괄호 왼쪽의 숫자는 이후 로컬 시계에 적용되는 모든 슬리어를 허용하도록 조정된 원래 측정을 보여주고, +/- 표시기 이후의 숫자는 측정에서 오류 여백을 보여줌.
양수 오프셋은 로컬 시계가 소스보다 앞서 있음을 나타냅니다.

chronyc tracking

시간 동기화 상태를 좀더 상세하게 할 수 있는 방법으로 NTP 소스와 동기화 상태를 Tracking 할 수 있습니다.

Check linux chrony tracking status
그림. Check linux chrony tracking status
항목설명
Reference IDNTP 소스로 등록한 서버 중 현재 동기화된 NTP 서버 정보
Reference ID는 IPv4 주소와 혼동하지 않도록 16진수로 표시됩니다.
Stratum해당 시스템의 계층 정보로 나타내고 NTP 소스의 stratum -1 값이 해당 값으로 표시됩니다.
Ref Time (UTC)Reference 소스의 마지막 측정이 처리된 시간(UTC)
System timeNTP 소스와의 시간 차이
Last offset마지막 클럭 업데이트 시 예상 로컬 오프셋
RMS offset오프셋 값의 Long-term 평균
Frequencychronyd가 수정하지 않을 경우 시스템의 시계가 잘못되는 비율을 나타낸 수치로 ppm(백만분율)으로 표시됩니다.
예시: 1ppm 값은 시스템의 시계가 1초 앞당겼다고 생각할 때 실제 시간에 비해 실제로 1.000001초 앞섰다는 것을 의미합니다.
Residual freq현재 선택된 참조 소스에 대한 “잔여 주파수"로 참조 소스의 측정값이 나타내는 주파수와 현재 사용 중인 주파수 간의 차이를 표시합니다.
SkewFrequency 값의 예상 오류 범위
Root delayNTP 소스의Stratum-1 NTP까지의 총 네트워크 경로 지연 값으로, 루트 지연 값은 나노초로 계산됩니다.
Root dispersionNTP가 궁극적으로 동기화되는 Stratum-1 NTP 에서 모든 컴퓨터를 통해 누적된 총 분산 값으로 나노초로 계산됩니다.
Update interval폴링 주기로 minpoll/maxpoll 설정에 따른 주기
Leap status현재 상태를 Normal, Insert second, Delete second 또는 Not synchronized상태로 표시

chrony 운영관리

평상시 시간 동기화가 잘 운영되고 있는지 동기화 상태의 모니터링이 필요합니다. 또한 BM 서버의 경우 HW 부품 교체 등으로 장시간 시스템 다운 후 부팅이 되어 시간 차이가 많이 날 경우 chrony은 시간 동기화가 되지 않거나 slew 옵션으로 인해 동기화가 지연될 수 있습니다. 따라서 시스템 부팅시 1회 시간 동기화 후 chrony 데몬이 가동될 수 있도록 부팅 스크립트에 아래와 같이 설정합니다

vi 편집기로 Hardware 부팅 시 시간 동기화 스크립트 작성

vi /etc/rc.d/rc.local 

Hardware 부팅 시 시간 동기화 스크립트

systemctl stop chronyd
chronyd -t 6 -q "server xx.xx.xx.xx iburst" (ntp 서버 설정함)
hwclock -w 
systemctl start chronyd 

chrony 부팅 스크립트 실행 권한 부여

chmod +x /etc/rc.d/rc.local

Windows 시간 동기화 구성

Windows 서버에서 시간 동기화는 Active Directory(이하 AD))에서 Kerberos 인증 시 중요한 역할을 합니다. 클라이언트와 Domain Controller(이하 DC) 사이의 허용 시간 오차는 기본적으로 5분으로 제한되어 있어, 오차가 5분 이상인 경우 AD 인증 에러가 발생할 수 있습니다. 이로 인해 SQL이나 Failover Cluster와 같은 외부 서비스나 OS 내부 동작에도 영향을 미칩니다. 따라서, AD 멤버인 경우 Primary Domain Controller(이하 PDC)를 기준으로 시간을 동기화하도록 설정되어 있으며, PDC 서버나 독립적인 서버는 NTP 서버를 참조하여 시간 동기화를 수행합니다. 이를 통해 올바른 시간 동기화가 유지되어, 안정적인 서비스를 제공할 수 있습니다.

Windows 시간 동기화를 위한 구성요소

Windows Time Service (W32Time)

Windows 서버에서 시간 동기화를 구성하는 방법 중 하나는, Windows Time Service (이하 W32Time)를 사용하는 것입니다. 이 서비스는 OS에 기본적으로 설치되어 있으며, NTP를 위한 서비스로 사용됩니다. 또한, Windows Server 2016부터는 Precision Time Protocol(이하 PTP)를 이용한 시간 동기화 기능이 추가되어 정확한 시간 동기화를 제공합니다. SCP에서는 NTP 프로토콜 기반의 W32Time을 사용해서 시간 동기화를 합니다.

NTP 통신을 위한 보안 설정

NTP는 기본적으로 UDP 123 포트를 통해 통신합니다. SCP의 NTP 서버를 사용할 경우, 별도의 보안 설정(Security Group)을 추가할 필요가 없습니다. 다만, SCP의 NTP 서버를 Public IP로 설정하는 경우에는 Internet Gateway를 추가하고, Firewall 및 Security Group 정책을 설정해야 합니다.

W32Time를 사용하여 시간 동기화 구성

시간 동기화 설정을 하기전에 서버에 접속 하여 W32Time 서비스 기동 및 시간 동기화 상태를 확인하고 서비스가 중지되어 있으면 시작 합니다.

W32Time 설정 상태 확인

SCP 환경에서 Windows 서버는 기본적으로 시간 동기화가 설정되어 있지 않습니다. 다음과 같이 Leap Indicator 값이 3이거나 Referenceid 가 0x0000000 로 표시되면 W32Time을 설정하기 위해서 다음 단계로 진행합니다.

W32Time 현재 동기화 상태 확인
PS C:\> w32tm /query /status 
Leap Indicator: 3(not synchronized)
Stratum: 0 (unspecified)
Precision: -23 (119.209ns per tick)
Root Delay: 0.0000000s
Root Dispersion: 0.0000000s
ReferenceId: 0x00000000 (unspecified)
Last Successful Sync Time: unspecified
Source: Local CMOS Clock
Poll Interval: 6 (64s)

W32Time 설정

W32Time 서비스 기동 확인

W32Time 서비스가 시작되어 있는지 확인하고 실행중이 아닐 때는 서비스를 시작 합니다.

W32Time 서비스 실행 중인지 확인
PS C:\> get-service w32time

Status   Name               DisplayName
------   ----               -----------
Running  w32time            Windows Time
W32Time 서비스 실행 중이 아닐 때는 서비스를 시작 및 서비스 상태 확인
PS C:\> Start-Service W32Time
PS C:\> Get-Service W32Time

Status   Name               DisplayName
------   ----               -----------
Running  W32Time            Windows Time

W32Time 설정

W32Time은 w32tm 명령어를 사용해서 구성 정보를 확인하고 설정 할 수 있습니다.

W32Time 서비스 구성 정보 확인
PS C:\> w32tm /query /configuration
[구성]

EventLogFlags: 2 (로컬)
AnnounceFlags: 10 (로컬)
TimeJumpAuditOffset: 28800 (로컬)
MinPollInterval: 10 (로컬)
MaxPollInterval: 15 (로컬)
MaxNegPhaseCorrection: 4294967295 (로컬)
MaxPosPhaseCorrection: 4294967295 (로컬)
MaxAllowedPhaseOffset: 300 (로컬)

FrequencyCorrectRate: 4 (로컬)
PollAdjustFactor: 5 (로컬)
LargePhaseOffset: 50000000 (로컬)
SpikeWatchPeriod: 900 (로컬)
LocalClockDispersion: 10 (로컬)
HoldPeriod: 5 (로컬)
PhaseCorrectRate: 1 (로컬)
UpdateInterval: 30000 (로컬)


[시간 공급자]

NtpClient (로컬)
DllName: C:\WINDOWS\system32\w32time.dll (로컬)
Enabled: 1 (로컬)
InputProvider: 1 (로컬)
CrossSiteSyncFlags: 2 (로컬)
AllowNonstandardModeCombinations: 1 (로컬)
ResolvePeerBackoffMinutes: 15 (로컬)
ResolvePeerBackoffMaxTimes: 7 (로컬)
CompatibilityFlags: 2147483648 (로컬)
EventLogFlags: 1 (로컬)
LargeSampleSkew: 3 (로컬)
SpecialPollInterval: 3600 (로컬)
Type: NT5DS (로컬)

VMICTimeProvider (로컬)
DllName: C:\WINDOWS\System32\vmictimeprovider.dll (로컬)
Enabled: 1 (로컬)
InputProvider: 1 (로컬)

NtpServer (로컬)
DllName: C:\WINDOWS\system32\w32time.dll (로컬)
Enabled: 0 (로컬)
InputProvider: 0 (로컬)

주요 항목 설명

항목설명
MinPollInterval
MaxPollInterval
기본 폴링 간격을 변경하는 옵션으로 log2 초 단위로 설정하며 기본 minpoll 값은 6 (2 ^ 6) 으로 64초이고, maxpoll 의 기본값은 10 (2 ^ 10)으로 1024 초임.
폴링 값은 6~15 내의 값으로 설정할 수 있고 MinPollInterval, MaxPollInterval을 짧게 설정하여 클럭 정확도를 높일 수 있습니다.
MaxNegPhaseCorrection시간을 변경할 수 있는 최대의 음수 시간(초) 이 값을 넘어서면 시간 변경 없이 이벤트가 기록됩니다.
MaxPosPhaseCorrection시간을 변경할 수 있는 최대의 양수 시간(초) 이 값을 넘어서면 시간 변경 없이 이벤트가 기록됩니다.
MaxAllowedPhaseOffset시간을 Step모드로 즉시변경 할지 Slew모드로 변경할지 결정하는 값
도메인 멤버는 기본 300초이고 서버는 기본값이 1초입니다.
SpecialPollInterval폴링 간격을 MinPollInterval 과 MaxPollInterval 사이 SpecialPollInterval값으로 지정합니다.
TypeNTP 소스 연결 방식
Workgroup과 AD의 PDC는 NTP로 설정하여 NTP 서버를 지정하고 AD의 다른 DC와 멤버는 NT5DS로 설정하여 PDC와 동기화합니다.

W32Time 속성 변경

W32Time 서비스의 속성을 변경하기 위해서는 레지스트리 키를 변경하고 서비스 재시작을 하여야 합니다. 속성은 레지스트리HKLM\SYSTEM\CurrentControlSet\Services\W32Time 경로의 다음 하위 키에 저장합니다.

  • \Config
  • \Parameters
  • \TimeProviders\NtpClient
  • \TimeProviders\NtpServer
Config 항목

Config하위 키 항목은 HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Config에 있습니다.

항목설명
MinPollInterval
MaxPollInterval
기본 폴링 간격을 변경하는 옵션으로 log2 초 단위로 설정하며 기본 minpoll 값은 6 (2 ^ 6) 으로 64초이고, maxpoll 의 기본값은 10 (2 ^ 10)으로 1024 초임.
폴링 값은 6~15 내의 값으로 설정할 수 있고 MinPollInterval, MaxPollInterval을 짧게 설정하여 클럭 정확도를 높일 수 있습니다.
MaxNegPhaseCorrection시간을 변경할 수 있는 최대의 음수 시간(초) 이 값을 넘어서면 시간 변경 없이 이벤트가 기록됩니다.
MaxPosPhaseCorrection시간을 변경할 수 있는 최대의 양수 시간(초) 이 값을 넘어서면 시간 변경 없이 이벤트가 기록됩니다.
MaxAllowedPhaseOffset시간을 Step모드로 즉시변경 할지 Slew모드로 변경할지 결정하는 값
도메인 멤버는 기본 300초이고 서버는 기본값이 1초입니다.
설정 명령어

MInPollInterval을 6으로 설정

PS C:\> Set-ItemProperty -Path "HKLM:SYSTEM\CurrentControlSet\Services\W32Time\Config" -Name "MinPollInterval" -value 6 

MaxPollInterval을 6으로 설정

PS C:\> Set-ItemProperty -Path "HKLM:SYSTEM\CurrentControlSet\Services\W32Time\Config" -Name "MaxPollInterval" -value 6

MaxNegPhaseCorrection을 900으로 설정

PS C:\> Set-ItemProperty -Path "HKLM:SYSTEM\CurrentControlSet\Services\W32Time\Config" -Name "MaxPosPhaseCorrection" -value 900

MaxAllowedPhaseOffset을 1로 설정

PS C:\> Set-ItemProperty -Path "HKLM:SYSTEM\CurrentControlSet\Services\W32Time\Config" -Name "MaxAllowedPhaseOffset" -value 1

설정 값 확인

PS C:\>  Get-ItemProperty -Path "HKLM:SYSTEM\CurrentControlSet\Services\W32Time\Config" |select MinPollInterval,MaxPollInterval,MaxNegPhaseCorrection,MaxPosPhaseCorrection,MaxAllowedPhaseOffset |fl


MinPollInterval       : 6
MaxPollInterval       : 10
MaxNegPhaseCorrection : 900
MaxPosPhaseCorrection : 900
MaxAllowedPhaseOffset : 1 
Parameters 항목

Parameters 하위 키 항목은 HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters에 있습니다. 항목 설명 Type NTP 소스 연결 방식 Workgroup과 AD의 PDC는 NTP로 설정하여 NTP 서버를 지정하고 AD의 다른 DC와 맴버는 NT5DS로 설정하여 PDC와 동기화 함.

설정 명령어

AD PDC 또는 단독서버인 경우 Type을 NTP로 설정

PS C:\> Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\Parameters" -Name "Type" -value "NTP"

설정 값 확인

PS C:\>  Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\Parameters" -Name "Type"

Type         : NTP 

AD멤버인 경우 Type을 NT5DS로 설정

PS C:\> Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\Parameters" -Name "Type" -value "NT5DS"

설정 값 확인

PS C:\>  Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\Parameters" -Name "Type"

Type         : NT5DS 
NtpClient 항목

NtpClient 하위 키 항목은 HKLM\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient에 있습니다.

항목설명
SpecialPollInterval폴링 간격을 MinPollInterval 과 MaxPollInterval 사이 SpecialPollInterval값으로 지정
설정 값은 초 단위
설정 명령어

SpecicalPollInterval 값을 600초 (10분)로 설정

PS C:\> Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient" -Name "SpecialPollInterval" -value 600

설정 값 확인

PS C:\>  Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient" -Name "SpecialPollInterval"

SpecialPollInterval : 600 
W32Time 서비스 재시작

NTP 속성을 변경하면 서비스를 중지 및 시작하여 속성이 반영되게 합니다.

W32Time 서비스 속성 변경 후 서비스 재시작

PS C:\> Stop-Service W32Time
PS C:\> Start-Service W32Time
PS C:\> Get-Service W32Time

Status   Name               DisplayName
------   ----               -----------
Running  W32Time            Windows Time 

NTP 서버 변경

NTP 서버 변경

PS C:\> w32tm /config /manualpeerlist:"[NTP Server IP #1],0x09 [NTP Server IP #1],0x02" /syncfromflags:manual /update

The command completed successfully.

NTP 동기화 명령

PS C:\> w32tm /resync

Sending resync command to local computer
The command completed successfully.
주요 항목 설명
옵션설명
/manualpeerlistNTP 소스를 설정하는 값으로 2개 이상인 경우에는 “ “로 묶어서 설정해야 합니다. NTP 소스마다 적용할 옵션을 지정하고 옵션은 비트연산을 사용하여 조합 가능합니다. 예) 0x09
- 0x01 SpecialInterval
- 0x02 UseAsFallbackOnly
- 0x04 SymmetricActive
- 0x08 클라이언트
/syncfromflagsNTP 소스의 타입을 설정
- MANUAL: 수동 피어 목록의 피어를 포함
- DOMAIN: 도메인 계층의 DC(도메인 컨트롤러)에서 동기화
/update변경된 구성을 W32Time 서비스에 반영

시간 동기화 운영 관리

NTP 서버와 시간이 동기화 되고 있는지 모니터링 되어야 합니다. 또한 BM 서버는 재시작하는 과정에서 하드웨어 시간으로 OS가 부팅됩니다. 하드웨어 시간에 누적된 시간 오차 및 부품 교체로 인해서 잘 못된 시간으로 인해서 OS가900초 이상 시간이 차이가 있으면 W32TM은 시간 동기화를 하지 않습니다. 따라서 시스템 부팅 시 정상적으로 시간 동기화가 되고 있는지, NTP 서버와 시간 오차는 얼마인지 확인하여야 합니다.

시간 동기화 상태 확인

시간 동기화 상태 확인

PS C:\>  w32tm /query /status
Leap Indicator: 0(no warning)
Stratum: 6 (secondary reference - syncd by (S)NTP)
Precision: -23 (119.209ns per tick)
Root Delay: 0.0384860s
Root Dispersion: 7.8452150s
ReferenceId: 0xC6130135 (source IP:  [NTP Server IP #1] )
Last Successful Sync Time: 4/5/2023 6:46:59 PM
Source: [NTP Server IP #1] ,0x09
Poll Interval: 6 (64s)

Leap Indicator 값으로 동기화가 되고 있는지 확인 할 수 있습니다. 값이 3으로 출력되고 있으면 NTP 서버와 동기화 되지 않고 있습니다.

주요 항목 설명
항목설명
윤초 조정 (Leap Indicator)윤초의 유무를 표시하는 변수. 0~3인 범위값을 사용함.
- 0 (00) : 윤초 경고없음
- 1 (01) : 마지막 분이 61초
- 2 (10) : 마지막 분이 59초
- 3 (11) : 알람 상태. 시간이 동기화 되지 않음.
계층 (Stratum)해당 시스템의 계층 정보로 나타내고 NTP 소스의 stratum -1 값이 해당 값으로 표시됨
루트 지연 (Root Delay )NTP 소스의Stratum-1 NTP까지의 총 네트워크 경로 지연 값으로, 루트 지연 값
루트 분산 (Root Dispersion)NTP가 궁극적으로 동기화되는 Stratum-1 NTP 에서 모든 컴퓨터를 통해 누적된 총 분산 값
참조 ID (Reference ID)NTP 소스로 등록한 서버 중 현재 동기화된 NTP 서버 정보
Reference ID는 IPv4 주소와 혼동하지 않도록 16진수로 표시됨
마지막으로 동기화한 시간
(Last Successful Sync Time)
NTP 소스를 통해서 동기화한 마지막 시간
원본 (Source)NTP 소스
폴링 간격 (Poll Interval)NTP 소스를 폴링하는 간격으로 log2 초 단위로 표시됨.
예시로 10(1024s)는 2 ^ 10 (1024초)초로 폴링함

시간 오차 확인

PS C:\>  w32tm /stripchart /computer:NTP_ Server /dataonly /samples:1
Tracking NTP_server [111.222.333.444:123].
Collecting 1 samples.
The current time is 12/13/2023 7:27:32 PM.
19:27:32, -00.0000631s

W32tm 명령어로 NTP 서버와 시간 오차를 확인 할 수 있습니다. 시간이 900초 이상 차이가 난다면 동기화 되지 않습니다.

시간 수동 수정 및 NTP 서버와 동기화

시간 수동 수정

PS C:\>  Set-Date -Date "2023-12-12 07:40"

Tuesday, December 12, 2023 7:40:00 AM

NTP 동기화 명령

PS C:\> w32tm /resync

Sending resync command to local computer
The command completed successfully.

시간이 NTP 서버와 900이상 차이가 있어서 동기화 되지 않을 때는 수동으로 시간을 설정 후 다시 동기화 해야 합니다. Set-Date 명령으로 시간을 수동으로 수정할 수 있습니다. 시간을 최신 시간으로 수동으로 수정 후 NTP 동기화를 재 수행합니다.