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 서버로 동기화 설정을 할 경우 다음 단계를 진행합니다.
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
| 옵션 | 설명 |
|---|---|
| server | NTP 소스 서버 정보 |
| iburst | server 지시자와 같이 사용하며, 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 6server [NTP Server IP #2] iburst minpoll 6 maxpoll 6 |
| slew 옵션 (점진적 동기화) | 시간 동기화 옵션이 Step 모드로 설정되어 시간차가 발생할 경우 한번에 시간을 맞추게 되어 시스템 시간이 역행하거나 급격히 증가되어 서비스에 영향을 줄 수 있음. DB 서비스 등의 중요한 서버는 다음과 같이 makestep 지시자는 주석처리 하고 leapsecmode slew 옵션을 추가 # makestep 1.0 3leapsecmode 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 서버 정보 및 동기화 상태를 상세하게 확인할 수 있습니다.
위 소스 정보의 각 열에 대한 설명은 다음과 같습니다.
| 항목 | 설명 |
|---|---|
| M | 소스의 모드를 나타내는 것 ^ 은 서버, = 는 피어, # 은 로컬에 연결된 NTP 소스 정보 |
| S | 소스의 상태 정보 * : chronyd 가 현재 동기화된 소스 + : 선택한 소스와 결합되는 허용 가능한 소스 - : 결합 알고리즘으로 제외되는 허용 가능한 소스 ? : 연결이 실패했거나 패킷이 모든 테스트를 통과하지 않은 소스 ~ : 시간이 다른 소스와 일치하지 않음 상태 등록한 NTP 서버 중 하나는 * 표시가 나와야 시간 동기화가 된 상태입니다. |
| Stratum | NTP 계층 구조를 나타내는 정보로 등록된 NTP 소스의 계층 정보입니다. SCP NTP 서버의 경우 Stratum 5, 11 로 계층이 다르게 보이지만, 실제로는 동일 계층입니다. |
| Poll | NTP 소스를 폴링하는 속도를 초 단위로 표시하고 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 할 수 있습니다.
| 항목 | 설명 |
|---|---|
| Reference ID | NTP 소스로 등록한 서버 중 현재 동기화된 NTP 서버 정보 Reference ID는 IPv4 주소와 혼동하지 않도록 16진수로 표시됩니다. |
| Stratum | 해당 시스템의 계층 정보로 나타내고 NTP 소스의 stratum -1 값이 해당 값으로 표시됩니다. |
| Ref Time (UTC) | Reference 소스의 마지막 측정이 처리된 시간(UTC) |
| System time | NTP 소스와의 시간 차이 |
| Last offset | 마지막 클럭 업데이트 시 예상 로컬 오프셋 |
| RMS offset | 오프셋 값의 Long-term 평균 |
| Frequency | chronyd가 수정하지 않을 경우 시스템의 시계가 잘못되는 비율을 나타낸 수치로 ppm(백만분율)으로 표시됩니다. 예시: 1ppm 값은 시스템의 시계가 1초 앞당겼다고 생각할 때 실제 시간에 비해 실제로 1.000001초 앞섰다는 것을 의미합니다. |
| Residual freq | 현재 선택된 참조 소스에 대한 “잔여 주파수"로 참조 소스의 측정값이 나타내는 주파수와 현재 사용 중인 주파수 간의 차이를 표시합니다. |
| Skew | Frequency 값의 예상 오류 범위 |
| Root delay | NTP 소스의Stratum-1 NTP까지의 총 네트워크 경로 지연 값으로, 루트 지연 값은 나노초로 계산됩니다. |
| Root dispersion | NTP가 궁극적으로 동기화되는 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값으로 지정합니다. |
| Type | NTP 소스 연결 방식 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.
주요 항목 설명
| 옵션 | 설명 |
|---|---|
| /manualpeerlist | NTP 소스를 설정하는 값으로 2개 이상인 경우에는 “ “로 묶어서 설정해야 합니다. NTP 소스마다 적용할 옵션을 지정하고 옵션은 비트연산을 사용하여 조합 가능합니다. 예) 0x09 - 0x01 SpecialInterval - 0x02 UseAsFallbackOnly - 0x04 SymmetricActive - 0x08 클라이언트 |
| /syncfromflags | NTP 소스의 타입을 설정 - 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 동기화를 재 수행합니다.


