Việc chấm công chính xác là không thể thiếu đối với việc triển khai phần mềm hiện đại. Không có nó, bạn có thể gặp phải hư hỏng dữ liệu, lỗi và các sự cố khác khó gỡ lỗi. Time synchronization (Đồng bộ hóa thời gian) có thể giúp đảm bảo nhật ký của bạn được ghi theo đúng thứ tự và các bản cập nhật cơ sở dữ liệu được áp dụng phù hợp.
May mắn thay, Ubuntu 20.04 được tích hợp time synchronization và được kích hoạt theo mặc định bằng cách sử dụng dịch vụ timesyncd của systemd. Trong bài viết này, bạn sẽ thực hành một số lệnh chung liên quan đến thời gian, xác minh rằng timesyncd đang hoạt động và cài đặt dịch vụ thời gian mạng thay thế.
Trước khi bắt đầu hướng dẫn này, bạn sẽ cần một máy chủ Ubuntu 20.04 với non-root user có hõ trợ sudo và tường lửa, như được mô tả trong Hướng dẫn thiết lập máy chủ Ubuntu 20.04 của chúng tôi.
Để xem thời gian trên máy chủ của bạn, bạn sẽ sử dụng lệnh date. Bất kỳ người dùng nào cũng có thể chạy lệnh này để in ngày và giờ:
- date
Thông thường, máy chủ của bạn sẽ tạo đầu ra với múi giờ UTC mặc định.
OutputThu Aug 5 15:55:20 UTC 2021
UTC là Coordinated Universal Time, thời gian ở kinh độ 0 độ. Mặc dù điều này có thể không phản ánh múi giờ hiện tại của bạn, nhưng việc sử dụng Giờ quốc tế (Universal Time) sẽ tránh nhầm lẫn khi cơ sở hạ tầng của bạn trải dài trên nhiều múi giờ.
Tuy nhiên, nếu bạn muốn thay đổi múi giờ của mình, bạn có thể sử dụng lệnh timedatectl.
Đầu tiên, hãy chạy lệnh này để tạo danh sách các múi giờ khả dụng:
- timedatectl list-timezones
Một danh sách các múi giờ sẽ in ra màn hình của bạn. Bạn có thể nhấn phím SPACE để xuống trang và b để lên trang. Khi bạn tìm thấy múi giờ chính xác, hãy ghi lại múi giờ đó rồi nhập q để thoát khỏi danh sách.
Tiếp theo, bạn có thể đặt múi giờ bằng timedatectl set-timezone bằng cách thay thế phần được đánh dấu bằng múi giờ bạn tìm thấy trong danh sách. Bạn sẽ cần sử dụng sudo với timedatectl để thực hiện thay đổi này:
- sudo timedatectl set-timezone America/New_York
Bạn có thể xác minh các thay đổi của mình bằng cách chạy lại date:
- date
OutputThu Aug 5 11:56:01 EDT 2021
Chữ viết tắt múi giờ sẽ phản ánh giá trị mới được chọn.
Bây giờ bạn đã thực hành kiểm tra đồng hồ và đặt múi giờ, bạn có thể xác nhận rằng thời gian của mình đang được đồng bộ hóa đúng cách trong phần tiếp theo.
timesyncd với timedatectlTrước đây, hầu hết đồng bộ hóa thời gian mạng được xử lý bởi daemon Network Time Protocol daemon hoặc ntpd. Dịch vụ này kết nối với một nhóm các máy chủ NTP khác cung cấp cho nó các bản cập nhật thời gian liên tục và chính xác.
Nhưng bây giờ với cài đặt mặc định của Ubuntu, bạn có thể sử dụng timesyncd thay vì ntpd. timesyncd hoạt động tương tự bằng cách kết nối với các máy chủ cùng thời gian, nhưng nhẹ hơn và được tích hợp chặt chẽ hơn với systemd trên Ubuntu.
Bạn có thể truy vấn trạng thái của timesyncd bằng cách chạy timedatectl không có đối số. Bạn không cần sử dụng sudo trong trường hợp này:
- timedatectl
Output Local time: Thu 2021-08-05 11:56:40 EDT
Universal time: Thu 2021-08-05 15:56:40 UTC
RTC time: Thu 2021-08-05 15:56:41
Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Lệnh này in ra giờ địa phương, giờ quốc tế (có thể giống với giờ địa phương, nếu bạn không chuyển từ múi giờ UTC) và một số thông tin trạng thái thời gian mạng. System clock synchronized: yes phản ánh rằng thời gian được đồng bộ hóa thành công và NTP service: active có nghĩa là timesyncd đang hoạt động.
Nếu đầu ra của bạn cho thấy dịch vụ NTP không hoạt động, hãy bật dịch vụ đó bằng timedatectl:
- sudo timedatectl set-ntp on
Sau đó, chạy lại timedatectl để xác nhận trạng thái thời gian của mạng. Có thể mất một phút để quá trình đồng bộ hóa diễn ra nhưng cuối cùng System clock synchronized: sẽ đọc yes và NTP service: sẽ hiển thị là active.
timesyncd sẽ hoạt động trong hầu hết các trường hợp. Tuy nhiên, có những trường hợp khi một ứng dụng có thể nhạy cảm với bất kỳ sự xáo trộn nào theo thời gian. Trong trường hợp này, ntpd là một dịch vụ thời gian mạng thay thế mà bạn có thể sử dụng. ntpd sử dụng các kỹ thuật tinh vi để liên tục và dần dần giữ cho thời gian của hệ thống đi đúng hướng.
Trước khi cài đặt ntpd, bạn cần tắt timesyncd để tránh 2 dịch vụ xung đột với nhau. Bạn có thể thực hiện việc này bằng cách tắt network time synchronization bằng lệnh sau:
- sudo timedatectl set-ntp no
Xác minh rằng time synchronization bị tắt:
- timedatectl
Kiểm tra xem đầu ra của bạn có ghi NTP service: inactive không. Điều này có nghĩa là timesyncd đã dừng. Bây giờ bạn đã sẵn sàng cài đặt gói ntp với apt.
Trước tiên, hãy chạy apt update để làm mới chỉ mục gói cục bộ của bạn:
- sudo apt update
Sau đó, chạy apt install ntp để cài đặt gói này:
- sudo apt install ntp
ntpd sẽ tự động bắt đầu sau khi quá trình cài đặt của bạn hoàn tất. Bạn có thể xác minh rằng mọi thứ đang hoạt động bình thường bằng cách truy vấn ntpd để biết thông tin trạng thái:
- ntpq -p
Output remote refid st t when poll reach delay offset jitter
==============================================================================
0.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
1.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
2.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
3.ubuntu.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.000
ntp.ubuntu.com .POOL. 16 p - 64 0 0.000 0.000 0.000
+t1.time.bf1.yah 129.6.15.28 2 u 16 64 1 61.766 -20.068 1.964
+puppet.kenyonra 80.72.67.48 3 u 16 64 1 2.622 -18.407 2.407
*ntp3.your.org .GPS. 1 u 15 64 1 50.303 -17.499 2.708
+time.cloudflare 10.4.1.175 3 u 15 64 1 1.488 -18.295 2.670
+mis.wci.com 216.218.254.202 2 u 15 64 1 21.527 -18.377 2.414
+ipv4.ntp1.rbaum 69.89.207.99 2 u 12 64 1 49.741 -17.897 3.417
+time.cloudflare 10.4.1.175 3 u 15 64 1 1.039 -16.692 3.378
+108.61.73.243 129.6.15.29 2 u 14 64 1 70.060 -16.993 3.363
+ny-time.gofile. 129.6.15.28 2 u 21 64 1 75.349 -18.333 2.763
golem.canonical 17.253.34.123 2 u 28 64 1 134.482 -21.655 0.000
ntp3.junkemailf 216.218.254.202 2 u 19 64 1 2.632 -16.330 4.387
clock.xmission. .XMIS. 1 u 18 64 1 24.927 -16.712 3.415
alphyn.canonica 142.3.100.2 2 u 26 64 1 73.612 -19.371 0.000
strongbad.voice 192.5.41.209 2 u 17 64 1 70.766 -18.159 3.481
chilipepper.can 17.253.34.123 2 u 25 64 1 134.982 -19.848 0.000
pugot.canonical 145.238.203.14 2 u 28 64 1 135.694 -21.075 0.000
ntpq là một công cụ truy vấn cho ntpd. Cờ -p yêu cầu thông tin về máy chủ NTP (hoặc ngang hàng) ntpd được kết nối. Đầu ra của bạn sẽ hơi khác một chút nhưng sẽ liệt kê các máy chủ nhóm Ubuntu mặc định cùng với một số máy chủ khác. Hãy nhớ rằng, có thể mất vài phút để ntpd thiết lập kết nối.
Trong bài viết này, bạn đã xem thành công thời gian hệ thống, thay đổi múi giờ, làm việc với dịch vụ timesyncd mặc định của Ubuntu và cài đặt ntpd. Nếu bạn có nhu cầu chấm công nâng cao, bạn có thể tham khảo tài liệu chính thức của NTP, đồng thời xem qua NTP Pool Project, một nhóm tình nguyện viên toàn cầu cung cấp phần lớn cơ sở hạ tầng NTP trên thế giới.