Buộc systemd timesyncd đồng bộ hóa thời gian với máy chủ NTP ngay lập tức


16

Tôi đã cấu hình timesyncd của systemd để lấy thời gian từ máy chủ NTP:

/etc/systemd/timesyncd.conf > NTP=ca.pool.ntp.org
systemctl restart systemd-timesyncd.service 
timedatectl set-ntp true

Tình trạng như sau:

$ timedatectl status
...
Network time on: yes
NTP synchronized: no

Như đầu ra ngụ ý, thời gian chưa được đồng bộ hóa. Ai đó có thể vui lòng giúp tôi với các câu hỏi sau đây?

  • Sẽ mất bao lâu để timesyncd đồng bộ hóa với NTP? Vào những khoảng thời gian nào nó làm điều đó, tôi có thể kiểm tra và thay đổi chúng ở đâu?
  • Trong trường hợp khẩn cấp: Tôi chỉ có thể đặt thời gian theo cách thủ công hoặc tôi có thể buộc timesyncd đồng bộ hóa ngay lập tức với máy chủ NTP không?

Câu trả lời:


10

Để sử dụng triển khai NTP thực tế, bạn cần cài đặt và định cấu hình một chronyhoặc có thể ntpd. Làm như vậy nếu bạn yêu cầu bất kỳ giám sát về hiệu suất thời gian. Tôi sẽ giả sử chrony.

Thêm iburstvào poolhoặc server dòng của bạn trong cấu hình của bạn để tăng tốc một vài gói ban đầu. Nó vẫn có thể mất một vài phút để ổn định, hãy kiên nhẫn.

chronyc trackingsẽ hiển thị phần bù hiện tại. Có một ý tưởng về những yêu cầu của bạn là gì, độ chính xác một giây có thể dễ dàng chịu đựng được hàng chục mili giây bù đắp.

chronyc makestepsẽ thực hiện điều chỉnh hiện tại ngay lập tức. Không cần thiết thường.


timesyncdlà một máy khách SNTP có thể đặt thời gian, nhưng không kỷ luật nó dần dần và liên tục, cũng không lọc máy chủ NTP từ xa dựa trên chất lượng . (Nó cũng không thể nói chuyện với phần cứng thời gian hoặc PTP, chỉ giao thức NTP.) Tốt hơn một chút so với lặp đi lặp lại ntpdate, ý tôi là đồng hồ không tốt lắm. Cá nhân, tôi thay thế nó trên hầu hết các máy chủ.

Về cách duy nhất để đặt thời gian với timesyncd là thủ công : timedatectl set-time "2019-01-15 00:40:16". Nó không có phương tiện mạnh mẽ để kỷ luật và giám sát đồng hồ. Số liệu thống kê NTP cơ bản thông qua timedatectl timesync-statuslà một điều tương đối mới, tôi không nghĩ rằng tùy chọn đó có sẵn trong Red Hat 7 hoặc Ubuntu 18.04.

systemd định nghĩa "syncronized" là nếu NTP đã từng được sử dụng để bảo Linux điều chỉnh đồng hồ. Cụ thể, nếu kỷ luật kernel, hãy gọi adjtimex () trả về mà không có lỗi và không phải là trạng thái ban đầu. Xem mã nguồn, systemd / src / basic / time-produc.c.


Cảm ơn câu trả lời của bạn, John. Vì vậy, trên thực tế tôi có thể vô hiệu hóa systemd-timesyncd và chỉ sử dụng chrony? Tôi không chắc chắn tôi hiểu tại sao systemd có tùy chọn NTP và được gọi là timeSYNCd nếu nó không thể đồng bộ hóa thời gian thực sự? Hệ thống của hệ thống định nghĩa "đồng bộ hóa" là nếu cuộc gọi kỷ luật hạt nhân NTP adjtimex () được trả về mà không có lỗi và không phải là trạng thái ban đầu, điều này không rõ ràng đối với tôi.
bản kê khai

1
@chevallier systemd-timesyncd rất đơn giản và đủ tốt cho các trường hợp phổ biến nhất, ví dụ: máy chủ có đồng hồ thời gian thực dự kiến ​​sẽ chạy và trên mạng 24x7. Bạn không phải là trường hợp phổ biến, vì vậy có lẽ bạn không nên sử dụng nó. chrony tốt hơn nhiều trong việc xử lý các gián đoạn kết nối mạng và bị tắt trong thời gian dài (ví dụ: máy tính xách tay) hoặc hoàn toàn không có RTC (ví dụ: thiết bị nhúng).
Michael Hampton

1
timesyncd là một máy khách SNTP, vì vậy nó đặt thời gian mà không xử lý kỷ luật đúng. Đó là tốt cho các yêu cầu chính xác thô. Nếu bạn muốn đo hiệu suất thời gian hoặc đợi cho đến khi được đồng bộ hóa, hãy sử dụng NTP đầy đủ như chrony hoặc ntpd.
John Mahowald

11

Không cần cài đặt thêm gói nào ... Tắt NTP, đặt thủ công thời gian đủ gần , bật lại NTP:

Đặt dịch vụ NTP không hoạt động

$ timedatectl set-ntp false

Đặt thời gian theo cách thủ công

Vâng, điều đó thật đáng buồn nhưng nó hoạt động và bạn không cần phải loay hoay cài đặt bất cứ thứ gì và làm cho nó hoạt động. Nhận thời gian LỘC gần đúng từ đồng hồ treo tường, điện thoại của bạn, Internet. Nó không cần phải hoàn hảo bởi vì chúng tôi sẽ bật lại ntp ngay lập tức ...

$ sudo timedatectl set-time "2019-06-22 13:41:00"

Đặt dịch vụ NTP hoạt động

$ sudo timedatectl set-ntp true

Chờ đợi

john@mybox:~$ timedatectl
               Local time: Sat 2019-06-22 13:49:53 AEST
           Universal time: Sat 2019-06-22 03:49:53 UTC
                 RTC time: Sat 2019-06-22 03:49:54
                Time zone: Australia/Sydney (AEST, +1000)
System clock synchronized: no
              NTP service: active
          RTC in local TZ: no

"Đồng hồ hệ thống được đồng bộ hóa: không" sẽ chuyển thành "có" khi nó đã được điều chỉnh đủ để được coi là "đồng bộ hóa".

Xử lý sự cố

$ cat /etc/systemd/timesyncd.conf
[Time]
NTP=pool.ntp.org

$ timedatectl timesync-status
       Server: 13.210.208.89 (au.pool.ntp.org)
Poll interval: 8min 32s (min: 32s; max 34min 8s)
 Packet count: 0

$ grep systemd-timesyncd /var/log/syslog | tail
Jun 22 14:13:09 meebox systemd-timesyncd[8333]: Timed out waiting for reply from 103.214.220.220:123 (au.pool.ntp.org).

Các gói ntp của tôi đã bị chặn bởi tường lửa của công ty.


Cài đặt dịch vụ đồng bộ hóa thời gian khác cũng là ý tưởng đầu tiên của tôi, nhưng đó chỉ là một cách giải quyết. Tôi đã tìm kiếm một sửa chữa thực sự. Đó là bạn trả lời. Nó hoạt động. Cảm ơn bạn :-)
Ingo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.