Kiến thức Hữu ích 😍

Hướng Dẫn Đồng Bộ Thời Gian Ubuntu 20.04 Chi Tiết & Dễ Hiểu


Bạn đã bao giờ tự hỏi tại sao thời gian trên máy tính lại quan trọng đến vậy chưa? Đồng bộ hóa thời gian không chỉ đơn giản là hiển thị đúng giờ trên màn hình. Trong một hệ điều hành như Ubuntu, việc này là yếu tố cốt lõi để đảm bảo sự ổn định, bảo mật và hiệu suất của toàn bộ hệ thống. Thời gian chính xác giúp các bản ghi (log) được ghi lại một cách tuần tự, các tác vụ tự động (cron jobs) chạy đúng lịch, và các chứng chỉ bảo mật (SSL) hoạt động chính xác.

Khi thời gian trên máy chủ bị sai lệch, dù chỉ vài giây, hàng loạt vấn đề có thể phát sinh. Lỗi xác thực người dùng, xung đột dữ liệu trong các hệ thống phân tán, hay thậm chí là các lỗ hổng bảo mật có thể xuất hiện. Để giải quyết vấn đề này, Ubuntu 20.04 cung cấp các giải pháp mạnh mẽ như NTP và Chrony. Bài viết này sẽ hướng dẫn bạn chi tiết cách thiết lập, kiểm tra và duy trì một hệ thống đồng bộ thời gian ổn định, giúp máy chủ của bạn luôn hoạt động trơn tru.

Chuẩn bị và yêu cầu để thiết lập đồng bộ hóa thời gian trên Ubuntu 20.04

Trước khi bắt đầu, chúng ta cần đảm bảo có đủ các điều kiện cần thiết. Việc chuẩn bị kỹ lưỡng sẽ giúp quá trình cài đặt và cấu hình diễn ra suôn sẻ, tránh được những lỗi không đáng có.

Kiểm tra phiên bản hệ điều hành và quyền truy cập

Đầu tiên, hãy chắc chắn rằng bạn đang làm việc trên đúng phiên bản hệ điều hành. Hướng dẫn này được thiết kế riêng cho Ubuntu 20.04 (Focal Fossa). Bạn có thể kiểm tra phiên bản của mình bằng lệnh sau trong terminal:

lsb_release -a

Kết quả trả về sẽ hiển thị rõ thông tin phiên bản. Quan trọng hơn, bạn cần có quyền quản trị viên để thực hiện các thay đổi hệ thống. Điều này có nghĩa là bạn phải có quyền truy cập vào tài khoản root hoặc sử dụng lệnh sudo trước mỗi câu lệnh. Quyền này là bắt buộc để cài đặt phần mềm mới và chỉnh sửa các tệp cấu hình hệ thống.

Cập nhật hệ thống và cài đặt các công cụ cần thiết

Một hệ thống được cập nhật là nền tảng cho sự ổn định. Trước khi cài đặt bất kỳ gói phần mềm nào, bạn nên cập nhật danh sách gói và nâng cấp các phần mềm hiện có. Điều này giúp đảm bảo tính tương thích và vá các lỗ hổng bảo mật mới nhất. Hãy chạy các lệnh sau:

sudo apt update
sudo apt upgrade -y

Sau khi hệ thống đã được cập nhật, chúng ta sẽ cần đến các công cụ chuyên dụng cho việc đồng bộ thời gian. Trên Ubuntu, hai công cụ phổ biến nhất là NTP (Network Time Protocol) và Chrony. NTP là một giao thức truyền thống, trong khi Chrony là một giải pháp hiện đại hơn, linh hoạt và được khuyến nghị cho hầu hết các hệ thống ngày nay. Chúng ta sẽ tìm hiểu cách cài đặt và sử dụng cả hai trong các phần tiếp theo.

Hướng dẫn cấu hình đồng bộ thời gian sử dụng dịch vụ NTP

NTP (Network Time Protocol) là một giao thức lâu đời và rất đáng tin cậy để đồng bộ hóa thời gian qua mạng. Mặc dù Chrony đang dần trở nên phổ biến hơn, NTP vẫn là một lựa chọn vững chắc cho nhiều hệ thống, đặc biệt là các máy chủ luôn có kết nối mạng ổn định.

Cài đặt và kích hoạt dịch vụ NTP trên Ubuntu 20.04

Việc cài đặt dịch vụ NTP trên Ubuntu 20.04 rất đơn giản. Bạn chỉ cần mở terminal và chạy lệnh sau:

sudo apt install ntp

Hình minh họa

Sau khi cài đặt hoàn tất, dịch vụ NTP sẽ tự động khởi động. Tệp cấu hình chính của NTP nằm tại /etc/ntp.conf. Mặc định, tệp này đã được cấu hình để sử dụng các máy chủ thời gian (NTP servers) từ pool của Ubuntu.

Tuy nhiên, để tối ưu hóa, bạn nên sử dụng các máy chủ gần với vị trí địa lý của mình. Ví dụ, nếu máy chủ của bạn đặt tại Việt Nam, bạn có thể chỉnh sửa tệp ntp.conf và thêm vào các máy chủ từ pool Việt Nam để giảm độ trễ:

pool vn.pool.ntp.org iburst

Sử dụng iburst giúp quá trình đồng bộ ban đầu diễn ra nhanh hơn. Sau khi chỉnh sửa, đừng quên khởi động lại dịch vụ để áp dụng thay đổi:

sudo systemctl restart ntp

Kiểm tra và xác nhận trạng thái dịch vụ NTP

Làm thế nào để biết NTP có đang hoạt động đúng cách không? Trước hết, hãy kiểm tra trạng thái của dịch vụ:

sudo systemctl status ntp

Nếu bạn thấy dòng chữ active (running), điều đó có nghĩa là dịch vụ đang hoạt động.

Hình minh họa

Tiếp theo, để xem chi tiết quá trình đồng bộ, hãy sử dụng lệnh ntpq -p. Lệnh này sẽ liệt kê các máy chủ thời gian mà hệ thống của bạn đang kết nối và trạng thái của chúng.

ntpq -p

Bạn sẽ thấy một bảng thông tin. Cột remote là tên máy chủ, st (stratum) cho biết cấp bậc của máy chủ, và offset cho thấy độ lệch thời gian (tính bằng mili giây) giữa máy của bạn và máy chủ. Khi giá trị offset nhỏ và có một dấu * ở đầu dòng của một máy chủ, điều đó có nghĩa là hệ thống của bạn đã đồng bộ thành công với máy chủ đó.

Cách thiết lập đồng bộ hóa thời gian với Chrony

Chrony là một triển khai hiện đại của giao thức NTP. Nó được thiết kế để hoạt động hiệu quả hơn NTP truyền thống, đặc biệt trên các hệ thống không có kết nối mạng liên tục hoặc thường xuyên thay đổi trạng thái như máy ảo hoặc laptop. Trên thực tế, Chrony là dịch vụ đồng bộ thời gian mặc định trên nhiều bản phân phối Linux mới, bao gồm cả Ubuntu 20.04.

Lợi ích của Chrony so với NTP truyền thống

Vậy tại sao bạn nên cân nhắc sử dụng Chrony?

  • Đồng bộ nhanh hơn: Chrony có thể đồng bộ đồng hồ nhanh và chính xác hơn, ngay cả với các kết nối mạng không ổn định hoặc bị tắc nghẽn.
  • Hiệu quả cho máy ảo: Nó hoạt động rất tốt trong môi trường ảo hóa, nơi đồng hồ hệ thống có thể bị trôi (drift) một cách khó lường.
  • Tiết kiệm tài nguyên: Chrony tiêu thụ ít bộ nhớ và tài nguyên CPU hơn so với NTP, lý tưởng cho các hệ thống nhúng hoặc có cấu hình thấp, tương tự như Embedded Linux.
  • Linh hoạt: Nó có thể tự động điều chỉnh tần suất thăm dò (polling) để tiết kiệm băng thông khi không cần thiết.

Nhìn chung, nếu bạn đang thiết lập một máy chủ mới trên Ubuntu 20.04, Chrony là lựa chọn được khuyến khích hàng đầu. Bạn chỉ nên dùng NTP truyền thống nếu có yêu cầu cụ thể từ một ứng dụng cũ hoặc chính sách của công ty.

Cài đặt và cấu hình Chrony trên Ubuntu 20.04

Thông thường, Chrony đã được cài đặt sẵn trên Ubuntu 20.04. Bạn có thể kiểm tra bằng lệnh chronyc. Nếu chưa có, bạn có thể cài đặt dễ dàng:

sudo apt install chrony

Hình minh họa

Nếu bạn đã cài đặt NTP trước đó, hệ thống có thể sẽ tự động gỡ bỏ ntp để tránh xung đột. Tệp cấu hình chính của Chrony nằm tại /etc/chrony/chrony.conf. Tương tự như NTP, bạn có thể tối ưu hóa bằng cách sử dụng các máy chủ thời gian gần vị trí của mình. Mở tệp và tìm các dòng bắt đầu bằng pool. Bạn có thể thay thế chúng bằng:

pool vn.pool.ntp.org iburst maxsources 2

Sau khi lưu tệp cấu hình, hãy khởi động lại dịch vụ Chrony:

sudo systemctl restart chrony

Để đảm bảo Chrony luôn khởi động cùng hệ thống, hãy kích hoạt nó:

sudo systemctl enable chrony

Bây giờ, hệ thống của bạn đã sẵn sàng để đồng bộ thời gian bằng Chrony.

Kiểm tra trạng thái và xác nhận đồng bộ hóa thời gian hoạt động

Sau khi đã cài đặt và cấu hình NTP hoặc Chrony, bước tiếp theo là xác minh rằng mọi thứ đang hoạt động như mong đợi. Việc kiểm tra định kỳ cũng là một thói quen tốt để duy trì sự ổn định của hệ thống.

Sử dụng lệnh timedatectl và chronyc

Công cụ chính để kiểm tra trạng thái thời gian trên các hệ thống Linux hiện đại là timedatectl. Lệnh này cung cấp một cái nhìn tổng quan và dễ hiểu về cài đặt thời gian của hệ thống.

timedatectl

Hình minh họa

Kết quả trả về sẽ cho bạn biết:

  • Local time: Thời gian địa phương.
  • Universal time (UTC): Thời gian quốc tế.
  • Time zone: Múi giờ của hệ thống.
  • System clock synchronized: Trạng thái đồng bộ. Nếu hiển thị yes, xin chúc mừng, hệ thống của bạn đã được đồng bộ.
  • NTP service: Dịch vụ NTP đang được sử dụng (ví dụ: active).

Đối với người dùng Chrony, bạn có hai lệnh rất hữu ích để kiểm tra sâu hơn. Lệnh chronyc sources sẽ hiển thị danh sách các máy chủ thời gian và trạng thái kết nối.

chronyc sources

Hình minh họa

Lệnh chronyc tracking cung cấp một bản tóm tắt về độ chính xác của đồng hồ hệ thống.

chronyc tracking

Lệnh này sẽ hiển thị các thông số quan trọng như Reference ID (máy chủ đang đồng bộ), Stratum, và System time (độ lệch so với máy chủ).

Xác minh hiệu quả đồng bộ và đồng bộ theo chuẩn máy chủ thời gian quốc tế

Làm sao để đánh giá hiệu quả của việc đồng bộ? Hãy chú ý đến thông số offset (trong ntpq) hoặc System time (trong chronyc tracking). Con số này cho biết độ lệch thời gian giữa máy của bạn và máy chủ thời gian chuẩn, thường được tính bằng mili giây hoặc micro giây. Một giá trị càng gần không càng tốt.

Bạn cũng sẽ thấy khái niệm “Stratum”. Đây là hệ thống phân cấp độ chính xác của các máy chủ thời gian. Stratum 0 là các thiết bị tham chiếu gốc như đồng hồ nguyên tử. Stratum 1 là các máy chủ được kết nối trực tiếp với Stratum 0. Máy chủ của bạn thường sẽ kết nối với các máy chủ Stratum 2 hoặc 3. Điều này đảm bảo rằng thời gian bạn nhận được có nguồn gốc rõ ràng và đáng tin cậy từ các chuẩn thời gian quốc tế.

Hình minh họa

Khắc phục sự cố thường gặp khi đồng bộ hóa thời gian

Dù đã cấu hình cẩn thận, đôi khi bạn vẫn có thể gặp phải sự cố. Đừng lo lắng, hầu hết các vấn đề đều có thể được giải quyết một cách tương đối đơn giản nếu bạn biết cách kiểm tra.

Dịch vụ NTP hoặc Chrony không khởi động hoặc lỗi kết nối

Đây là một trong những lỗi phổ biến nhất. Nếu dịch vụ không khởi động, nguyên nhân thường là:

  • Xung đột dịch vụ: Có một dịch vụ đồng bộ thời gian khác đang chạy. Ví dụ, cả ntpchrony không thể chạy cùng lúc. Hãy đảm bảo chỉ có một dịch vụ được kích hoạt. Bạn cũng nên kiểm tra và vô hiệu hóa systemd-timesyncd nếu đang dùng NTP hoặc Chrony: sudo timedatectl set-ntp false.
  • Firewall chặn kết nối: Giao thức NTP sử dụng cổng UDP 123. Nếu firewall (tường lửa) của bạn chặn cổng này, dịch vụ sẽ không thể kết nối với máy chủ thời gian. Hãy kiểm tra cấu hình firewall (ví dụ với ufw) và mở cổng nếu cần:
sudo ufw allow 123/udp

Hình minh họa

Để tìm nguyên nhân chính xác, hãy kiểm tra nhật ký hệ thống của dịch vụ. Ví dụ với Chrony:

journalctl -u chrony

Các thông báo lỗi trong nhật ký sẽ cho bạn gợi ý quan trọng để khắc phục.

Thời gian không đồng bộ dù dịch vụ đang chạy

Đôi khi, dịch vụ vẫn chạy nhưng trạng thái đồng bộ (timedatectl) lại báo no. Nguyên nhân có thể là:

  • Sai cấu hình máy chủ: Kiểm tra lại tệp cấu hình (/etc/ntp.conf hoặc /etc/chrony/chrony.conf) để chắc chắn rằng địa chỉ các máy chủ NTP là chính xác và không có lỗi cú pháp.
  • Vấn đề về mạng: Máy chủ của bạn có thể không kết nối được với các máy chủ NTP do sự cố mạng. Hãy thử dùng lệnh ping hoặc traceroute để kiểm tra kết nối tới địa chỉ máy chủ NTP.
ping vn.pool.ntp.org
  • DNS không phân giải được: Nếu máy chủ không thể phân giải tên miền của pool NTP, kết nối sẽ thất bại. Hãy đảm bảo cấu hình DNS của bạn là chính xác.

Kiên nhẫn kiểm tra từng bước một, từ firewall, cấu hình dịch vụ, đến kết nối mạng, bạn sẽ sớm tìm ra và giải quyết được vấn đề.

Lời khuyên để duy trì hệ thống đồng bộ thời gian ổn định

Thiết lập đồng bộ thời gian chỉ là bước khởi đầu. Để hệ thống luôn hoạt động chính xác và ổn định trong dài hạn, bạn cần áp dụng một vài thói quen quản trị tốt. Dưới đây là những lời khuyên hữu ích từ AZWEB.

Hình minh họa

  • Thường xuyên cập nhật hệ thống: Luôn giữ cho hệ điều hành Ubuntu và các gói phần mềm liên quan (NTP, Chrony) được cập nhật lên phiên bản mới nhất. Các bản cập nhật không chỉ mang lại tính năng mới mà còn vá các lỗi bảo mật và cải thiện hiệu suất, tương tự như cập nhật Linux.
  • Lựa chọn máy chủ NTP uy tín: Hãy ưu tiên sử dụng các pool NTP công cộng và uy tín như pool.ntp.org. Nếu có thể, hãy chọn các pool theo khu vực địa lý (ví dụ: vn.pool.ntp.org) để giảm độ trễ mạng và tăng độ chính xác.
  • Theo dõi định kỳ trạng thái đồng bộ: Đừng chỉ “cài rồi quên”. Hãy tạo thói quen kiểm tra trạng thái đồng bộ bằng lệnh timedatectl hoặc chronyc tracking ít nhất mỗi tuần một lần. Trong môi trường sản xuất, bạn nên tích hợp việc giám sát này vào các hệ thống cảnh báo tự động như Zabbix, Nagios, hoặc Prometheus.
  • Tránh chỉnh thời gian bằng tay: Trong một hệ thống đang chạy dịch vụ đồng bộ tự động, việc sử dụng lệnh date để thay đổi thời gian bằng tay có thể gây ra xung đột và làm sai lệch quá trình đồng bộ. Hãy để NTP hoặc Chrony tự động quản lý thời gian.

Bằng cách tuân thủ những nguyên tắc này, bạn sẽ xây dựng được một hệ thống không chỉ chính xác về mặt thời gian mà còn bền vững và dễ dàng bảo trì.

Kết luận

Đồng bộ hóa thời gian là một khía cạnh nền tảng nhưng thường bị bỏ qua trong quản trị hệ thống. Việc đảm bảo thời gian chính xác trên Ubuntu 20.04 không chỉ giúp các ứng dụng hoạt động đúng cách mà còn là yếu tố quan trọng cho việc ghi log, gỡ lỗi và tăng cường bảo mật. Thông qua bài viết này, chúng ta đã cùng nhau tìm hiểu tầm quan trọng của việc đồng bộ thời gian và đi sâu vào hai phương pháp phổ biến: sử dụng NTP truyền thống và Chrony hiện đại.

Chúng tôi đã hướng dẫn bạn từ khâu chuẩn bị, cài đặt, cấu hình chi tiết cho đến cách kiểm tra, khắc phục sự cố và các lời khuyên để duy trì hệ thống ổn định. Với Chrony là lựa chọn mặc định và được khuyến khích, việc thiết lập một hệ thống đồng bộ thời gian hiệu quả trên Ubuntu 20.04 đã trở nên đơn giản và mạnh mẽ hơn bao giờ hết. AZWEB khuyến khích bạn áp dụng ngay những kiến thức này để nâng cao hiệu suất và độ tin cậy cho máy chủ của mình. Bước tiếp theo, hãy thử tìm hiểu về các công cụ giám sát chuyên sâu để tự động theo dõi độ lệch thời gian và nhận cảnh báo sớm khi có sự cố.

Hình minh họa

Đánh giá