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 timedatectl
Trướ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.