Nhiều người trong chúng ta đã thỉnh thoảng gặp sự cố với máy tính và các thiết bị khác của mình khi giữ lại cài đặt thời gian chính xác, nhưng đồng bộ hóa nhanh với máy chủ NTP sẽ làm cho tất cả trở lại. Nhưng nếu thiết bị của chúng ta có thể mất độ chính xác, thì làm cách nào để máy chủ NTP quản lý để luôn chính xác?
Phiên Hỏi & Đáp hôm nay đến với chúng tôi với sự hỗ trợ của SuperUser — một phần của Stack Exchange, một nhóm các trang web Hỏi & Đáp do cộng đồng điều hành.
Ảnh lịch sự của LEOL30 (Flickr) .
Câu hỏi
Người đọc SuperUser Frank Thornton muốn biết làm thế nào các máy chủ NTP có thể duy trì độ chính xác như vậy:
Tôi nhận thấy rằng trên các máy chủ của mình và các máy khác, đồng hồ luôn trôi đi do đó chúng phải đồng bộ hóa để duy trì độ chính xác. Làm cách nào để đồng hồ máy chủ NTP không bị trôi và luôn chính xác như vậy?
Làm cách nào để các máy chủ NTP luôn chính xác?
Câu trả lời
Người đóng góp cho SuperUser, Michael Kjorling có câu trả lời cho chúng tôi:
Máy chủ NTP dựa vào đồng hồ có độ chính xác cao để chấm công chính xác. Nguồn thời gian phổ biến cho các máy chủ NTP trung tâm là đồng hồ nguyên tử hoặc máy thu GPS (hãy nhớ rằng vệ tinh GPS có đồng hồ nguyên tử trên bo mạch). Những đồng hồ này được xác định là chính xác vì chúng cung cấp tham chiếu thời gian chính xác cao.
Không có gì kỳ diệu về GPS hoặc đồng hồ nguyên tử khiến chúng cho bạn biết chính xác thời gian. Bởi vì đồng hồ nguyên tử hoạt động như thế nào, đơn giản là chúng rất giỏi, đã từng được biết mấy giờ rồi, duy trì thời gian chính xác (kể từ thứ hai được định nghĩa về hiệu ứng nguyên tử ). Trên thực tế, điều đáng chú ý là Giờ GPS khác với UTC mà chúng ta đã quen với việc nhìn thấy hơn. Các đồng hồ nguyên tử này lần lượt được đồng bộ hóa với Giờ nguyên tử quốc tế hoặc TAI để không chỉ cho biết chính xác thời gian mà còn các thời gian.
Khi bạn có thời gian chính xác trên một hệ thống được kết nối với mạng như Internet, thì vấn đề kỹ thuật giao thức cho phép chuyển thời gian chính xác giữa các máy chủ qua một mạng không đáng tin cậy. Về mặt này, máy chủ NTP ở Tầng 2 (hoặc xa hơn so với nguồn thời gian thực) không khác gì hệ thống máy tính để bàn của bạn đồng bộ hóa với một tập hợp các máy chủ NTP.
Vào thời điểm bạn có một vài thời điểm chính xác (lấy từ máy chủ NTP hoặc nơi khác) và biết tốc độ tiến bộ của đồng hồ cục bộ (rất dễ xác định), bạn có thể tính toán tốc độ trôi của đồng hồ cục bộ của mình so với mức "được tin là chính xác " thời gian trôi qua. Sau khi được khóa, giá trị này sau đó có thể được sử dụng để liên tục điều chỉnh đồng hồ cục bộ để làm cho đồng hồ báo cáo các giá trị rất gần với thời gian trôi qua chính xác, ngay cả khi bản thân đồng hồ thời gian thực cục bộ có độ chính xác cao. Miễn là đồng hồ địa phương của bạn không cao thất thường , điều này sẽ cho phép giữ thời gian chính xác trong một thời gian ngay cả khi nguồn thời gian ngược dòng của bạn không khả dụng vì bất kỳ lý do gì.
Một số triển khai ứng dụng khách NTP (có thể là hầu hết các triển khai trình nền ntpd hoặc dịch vụ hệ thống) thực hiện điều này và những triển khai khác (như ntpdate đồng hành của ntpd chỉ đặt đồng hồ một lần) thì không. Điều này thường được gọi là tập tin trôi dạt bởi vì nó liên tục lưu trữ số đo về độ trôi của đồng hồ, nhưng nói đúng ra thì nó không cần phải được lưu trữ dưới dạng một tệp cụ thể trên đĩa.
Trong NTP, Địa tầng 0 theo định nghĩa là một nguồn thời gian chính xác. Stratum 1 là một hệ thống sử dụng nguồn thời gian Stratum 0 làm nguồn thời gian của nó (và do đó, độ chính xác kém hơn một chút so với nguồn thời gian Stratum 0). Stratum 2 một lần nữa kém chính xác hơn một chút so với Stratum 1 vì nó đang đồng bộ hóa thời gian của mình với nguồn Stratum 1, v.v. Trong thực tế, sự mất độ chính xác này rất nhỏ nên hoàn toàn không đáng kể trong tất cả các trường hợp, trừ trường hợp cực đoan nhất.
Có điều gì đó để thêm vào lời giải thích? Tắt âm thanh trong các ý kiến. Bạn muốn đọc thêm câu trả lời từ những người dùng Stack Exchange am hiểu công nghệ khác? Kiểm tra toàn bộ chuỗi thảo luận tại đây .