Συγχρονισμός ώρας Linux: NTP, Chrony και systemd-timesyncd

Συγχρονισμός ώρας Linux: NTP, Chrony και systemd-timesyncd
Οι περισσότεροι άνθρωποι παρακολουθούν τον χρόνο. Σηκωνόμαστε στην ώρα μας για να ολοκληρώσουμε τις πρωινές μας τελετουργίες και να πάμε στη δουλειά, να κάνουμε ένα μεσημεριανό διάλειμμα, να τηρήσουμε τις προθεσμίες του έργου, να γιορτάσουμε γενέθλια και αργίες, να επιβιβαστούμε σε αεροπλάνο και ούτω καθεξής.

Επιπλέον: κάποιοι από εμάς έχουμε εμμονή με τον χρόνο. Το ρολόι μου τροφοδοτείται από ηλιακή ενέργεια και λαμβάνει ακριβή ώρα από το Εθνικό Ινστιτούτο Προτύπων και Τεχνολογίας (NIST) στο Fort Collins του Κολοράντο μέσω ραδιοφώνου longwave WWVB. Τα σήματα ώρας συγχρονίζονται με το ατομικό ρολόι, που βρίσκεται επίσης στο Fort Collins. Το Fitbit μου συγχρονίζεται με το τηλέφωνό μου που συγχρονίζεται με τον διακομιστή NTP, το οποίο τελικά συγχρονίζεται με το ατομικό ρολόι.

Οι συσκευές παρακολουθούν επίσης το χρόνο

Υπάρχουν πολλοί λόγοι για τους οποίους οι συσκευές και οι υπολογιστές μας χρειάζονται ακριβή χρόνο. Για παράδειγμα, στις τράπεζες, τα χρηματιστήρια και άλλες χρηματοοικονομικές επιχειρήσεις, οι συναλλαγές πρέπει να πραγματοποιούνται με τη σωστή σειρά και οι ακριβείς χρονικές ακολουθίες είναι κρίσιμες για αυτό.

Τα τηλέφωνα, τα tablet, τα αυτοκίνητα, τα συστήματα GPS και οι υπολογιστές μας απαιτούν ακριβείς ρυθμίσεις ώρας και ημερομηνίας. Θέλω το ρολόι στην επιφάνεια εργασίας του υπολογιστή μου να δείχνει τη σωστή ώρα. Θέλω οι υπενθυμίσεις να εμφανίζονται στο τοπικό μου ημερολόγιο την κατάλληλη στιγμή. Η σωστή ώρα διασφαλίζει επίσης ότι οι εργασίες cron και systemd εκτελούνται τη σωστή στιγμή.

Η ημερομηνία και η ώρα είναι επίσης σημαντικές για την καταγραφή, επομένως είναι λίγο πιο εύκολο να βρείτε ορισμένα αρχεία καταγραφής με βάση την ημερομηνία και την ώρα. Για παράδειγμα, κάποτε δούλευα στο DevOps (δεν λεγόταν έτσι τότε) και έφτιαχνα ένα σύστημα ηλεκτρονικού ταχυδρομείου στην πολιτεία της Βόρειας Καρολίνας. Επεξεργαζόμασταν πάνω από 20 εκατομμύρια email την ημέρα. Η παρακολούθηση e-mail μέσω μιας σειράς διακομιστών ή ο προσδιορισμός της ακριβούς ακολουθίας γεγονότων χρησιμοποιώντας αρχεία καταγραφής σε γεωγραφικά διασκορπισμένους κεντρικούς υπολογιστές, μπορεί να είναι πολύ πιο εύκολη εάν οι αντίστοιχοι υπολογιστές συγχρονιστούν εγκαίρως.

Μία φορά - πολλές ώρες

Οι κεντρικοί υπολογιστές Linux πρέπει να λαμβάνουν υπόψη ότι υπάρχει μια ώρα συστήματος και μια ώρα RTC. Το RTC (Ρολόι πραγματικού χρόνου) είναι ένα ελαφρώς περίεργο και όχι πολύ ακριβές όνομα για ένα ρολόι υλικού.

Το ρολόι υλικού λειτουργεί συνεχώς ακόμα και όταν ο υπολογιστής είναι απενεργοποιημένος, χρησιμοποιώντας την μπαταρία στη μητρική πλακέτα συστήματος. Η κύρια λειτουργία του RTC είναι να αποθηκεύει χρόνο όταν δεν είναι διαθέσιμη σύνδεση σε διακομιστή ώρας. Στις μέρες που ήταν αδύνατη η σύνδεση σε διακομιστή ώρας μέσω Διαδικτύου, κάθε υπολογιστής έπρεπε να έχει ακριβές εσωτερικό ρολόι. Τα λειτουργικά συστήματα έπρεπε να έχουν πρόσβαση στο RTC κατά την εκκίνηση και ο χρήστης έπρεπε να ρυθμίσει με μη αυτόματο τρόπο την ώρα του συστήματος χρησιμοποιώντας τη διεπαφή διαμόρφωσης υλικού BIOS για να βεβαιωθεί ότι ήταν σωστή.

Τα ρολόγια υλικού δεν κατανοούν την έννοια των ζωνών ώρας. Το RTC αποθηκεύει μόνο την ώρα, όχι τη ζώνη ώρας ή τη μετατόπιση από την UTC (Συντονισμένη Παγκόσμια Ώρα, γνωστή και ως GMT ή Μέση ώρα Γκρίνουιτς). Μπορείτε να εγκαταστήσετε το RTC χρησιμοποιώντας ένα εργαλείο που θα καλύψω αργότερα σε αυτό το άρθρο.

Η ώρα συστήματος είναι η ώρα που εμφανίζεται το λειτουργικό σύστημα στο ρολόι GUI στην επιφάνεια εργασίας σας, στην έξοδο της εντολής ημερομηνίας, στις χρονικές σημάνσεις των αρχείων καταγραφής. Αυτό ισχύει επίσης όταν δημιουργούνται, τροποποιούνται και ανοίγονται αρχεία.

Στη σελίδα άνθρωπος για rtc υπάρχει μια πλήρης περιγραφή του RTC και του ρολογιού του συστήματος.

Τι συμβαίνει με το NTP;

Οι υπολογιστές σε όλο τον κόσμο χρησιμοποιούν NTP (Network Time Protocol) για να συγχρονίσουν την ώρα τους με τυπικά ρολόγια αναφοράς μέσω του Διαδικτύου χρησιμοποιώντας μια ιεραρχία διακομιστών NTP. Οι κύριοι διακομιστές ώρας βρίσκονται στο επίπεδο 1 και συνδέονται απευθείας με διάφορες εθνικές υπηρεσίες ώρας στο επίπεδο 0 μέσω δορυφόρου, ραδιοφώνου ή ακόμα και μόντεμ μέσω τηλεφωνικών γραμμών. Οι υπηρεσίες χρόνου επιπέδου 0 μπορεί να είναι ένα ατομικό ρολόι, ένας ραδιοφωνικός δέκτης που είναι συντονισμένος σε σήματα που μεταδίδονται από ατομικά ρολόγια ή ένας δέκτης GPS που χρησιμοποιεί σήματα ρολογιού υψηλής ακρίβειας που μεταδίδονται από δορυφόρους GPS.

Η συντριπτική πλειοψηφία των διακομιστών αναφοράς έχει αρκετές χιλιάδες δημόσιους διακομιστές NTP στρώματος 2 ανοιχτούς στο κοινό. Πολλοί οργανισμοί και χρήστες (συμπεριλαμβανομένου και του εαυτού μου) με πολλούς κεντρικούς υπολογιστές που χρειάζονται διακομιστή NTP επιλέγουν να ρυθμίσουν τους δικούς τους διακομιστές ώρας, ώστε μόνο ένας τοπικός κεντρικός υπολογιστής έχει πρόσβαση στο στρώμα 2 ή 3. Στη συνέχεια διαμορφώνουν τους υπόλοιπους κόμβους στο δίκτυο για να χρησιμοποιούν το τοπικό διακομιστής ώρας. Στην περίπτωση του οικιακού μου δικτύου, αυτός είναι ένας διακομιστής επιπέδου 3.

Διάφορες υλοποιήσεις NTP

Η αρχική υλοποίηση του NTP είναι ntpd. Στη συνέχεια ενώθηκε με δύο νεότερα, το chronyd και το systemd-timesyncd. Και οι τρεις συγχρονίζουν την τοπική ώρα υποδοχής με έναν διακομιστή ώρας NTP. Η υπηρεσία systemd-timesyncd δεν είναι τόσο αξιόπιστη όσο η chronyd, αλλά είναι αρκετά καλή για τους περισσότερους σκοπούς. Εάν το RTC είναι εκτός συγχρονισμού, μπορεί σταδιακά να προσαρμόσει την ώρα του συστήματος για να συγχρονιστεί με τον διακομιστή NTP όταν η ώρα του τοπικού συστήματος μετατοπίζεται ελαφρά. Η υπηρεσία systemd-timesync δεν μπορεί να χρησιμοποιηθεί ως διακομιστής ώρας.

Chrony είναι μια υλοποίηση του NTP που περιέχει δύο προγράμματα: τον chronyd daemon και μια διεπαφή γραμμής εντολών που ονομάζεται chronyc. Το Chrony έχει ορισμένα χαρακτηριστικά που είναι απαραίτητα σε πολλές περιπτώσεις:

  • Το Chrony μπορεί να συγχρονιστεί με έναν διακομιστή ώρας πολύ πιο γρήγορα από την παλιά υπηρεσία ntpd. Αυτό είναι καλό για φορητούς υπολογιστές ή επιτραπέζιους υπολογιστές που δεν λειτουργούν συνεχώς.
  • Μπορεί να αντισταθμίσει τις διακυμάνσεις του ρολογιού, όπως όταν ο κεντρικός υπολογιστής πηγαίνει για ύπνο ή μπαίνει σε κατάσταση αναστολής λειτουργίας ή όταν το ρολόι αλλάζει λόγω μεταπήδησης συχνότητας, το οποίο επιβραδύνει τα ρολόγια σε χαμηλά φορτία.
  • Επιλύει χρονικά προβλήματα που σχετίζονται με ασταθή σύνδεση δικτύου ή συμφόρηση δικτύου.
  • Ρυθμίζει τις καθυστερήσεις δικτύου.
  • Μετά τον αρχικό συγχρονισμό ώρας, ο Chrony δεν σταματά ποτέ το ρολόι. Αυτό παρέχει σταθερές και συνεπείς χρονοθυρίδες για πολλές υπηρεσίες και εφαρμογές συστήματος.
  • Το Chrony μπορεί να λειτουργήσει ακόμη και χωρίς σύνδεση δικτύου. Σε αυτήν την περίπτωση, ο τοπικός κεντρικός υπολογιστής ή διακομιστής μπορεί να ενημερωθεί με μη αυτόματο τρόπο.
  • Το Chrony μπορεί να λειτουργήσει ως διακομιστής NTP.

Για άλλη μια φορά, το NTP είναι ένα πρωτόκολλο που μπορεί να εφαρμοστεί σε έναν κεντρικό υπολογιστή Linux χρησιμοποιώντας Chrony ή systemd-timesyncd.

Τα RPM NTP, Chrony και systemd-timesyncd είναι διαθέσιμα στα τυπικά αποθετήρια Fedora. Το systemd-udev RPM είναι ένας διαχειριστής συμβάντων πυρήνα που εγκαθίσταται από προεπιλογή στο Fedora, αλλά είναι προαιρετικός.

Μπορείτε να εγκαταστήσετε και τα τρία και να κάνετε εναλλαγή μεταξύ τους, αλλά αυτό θα δημιουργήσει έναν επιπλέον πονοκέφαλο. Οπότε καλύτερα να μην το κάνεις. Οι σύγχρονες εκδόσεις των Fedora, CentOS και RHEL έχουν μεταφερθεί στο Chrony ως η προεπιλεγμένη υλοποίηση και έχουν επίσης systemd-timesyncd. Θεωρώ ότι το Chrony λειτουργεί καλά, παρέχει καλύτερη διεπαφή από την υπηρεσία NTP, παρέχει πολύ περισσότερες πληροφορίες και έλεγχο, κάτι που σίγουρα θα απολαύσουν οι διαχειριστές του συστήματος.

Απενεργοποίηση υπηρεσιών NTP

Η υπηρεσία NTP ενδέχεται να εκτελείται ήδη στον κεντρικό υπολογιστή σας. Εάν ναι, πρέπει να το απενεργοποιήσετε πριν μεταβείτε σε κάτι άλλο. Είχα το chronyd running οπότε χρησιμοποίησα τις παρακάτω εντολές για να το σταματήσω και να το απενεργοποιήσω. Εκτελέστε τις κατάλληλες εντολές για κάθε δαίμονα NTP που εκτελείτε στον κεντρικό υπολογιστή σας:

[root@testvm1 ~]# systemctl disable chronyd ; systemctl stop chronyd
Removed /etc/systemd/system/multi-user.target.wants/chronyd.service.
[root@testvm1 ~]#

Ελέγξτε ότι η υπηρεσία έχει διακοπεί και είναι απενεργοποιημένη:

[root@testvm1 ~]# systemctl status chronyd
● chronyd.service - NTP client/server
     Loaded: loaded (/usr/lib/systemd/system/chronyd.service; disabled; vendor preset: enabled)
     Active: inactive (dead)
       Docs: man:chronyd(8)
             man:chrony.conf(5)
[root@testvm1 ~]#

Έλεγχος κατάστασης πριν από την εκκίνηση

Η κατάσταση συγχρονισμού ρολογιού συστήματος σάς επιτρέπει να προσδιορίσετε εάν εκτελείται η υπηρεσία NTP. Εφόσον δεν έχετε ξεκινήσει ακόμα το NTP, η εντολή timeync-status θα υποδηλώνει αυτό:

[root@testvm1 ~]# timedatectl timesync-status
Failed to query server: Could not activate remote peer.

Ένα άμεσο αίτημα κατάστασης παρέχει σημαντικές πληροφορίες. Για παράδειγμα, η εντολή timedatectl χωρίς όρισμα ή επιλογές εκτελεί την υποεντολή κατάστασης από προεπιλογή:

[root@testvm1 ~]# timedatectl status
           Local time: Fri 2020-05-15 08:43:10 EDT  
           Universal time: Fri 2020-05-15 12:43:10 UTC  
                 RTC time: Fri 2020-05-15 08:43:08      
                Time zone: America/New_York (EDT, -0400)
System clock synchronized: no                          
              NTP service: inactive                    
          RTC in local TZ: yes                    

Warning: The system is configured to read the RTC time in the local time zone.
         This mode cannot be fully supported. It will create various problems
         with time zone changes and daylight saving time adjustments. The RTC
         time is never updated, it relies on external facilities to maintain it.
         If at all possible, use RTC in UTC by calling
         'timedatectl set-local-rtc 0'.
[root@testvm1 ~]#

Αυτό θα σας δώσει την τοπική ώρα για τον οικοδεσπότη σας, την ώρα UTC και την ώρα RTC. Σε αυτήν την περίπτωση, η ώρα του συστήματος ρυθμίζεται στη ζώνη ώρας Αμερικής / Νέας Υόρκης (TZ), το RTC ορίζεται στην ώρα στην τοπική ζώνη ώρας και η υπηρεσία NTP δεν είναι ενεργή. Η ώρα RTC έχει αρχίσει να αποκλίνει ελαφρώς από την ώρα συστήματος. Αυτό είναι φυσιολογικό για συστήματα των οποίων τα ρολόγια δεν έχουν συγχρονιστεί. Το ποσό της μετατόπισης στον κεντρικό υπολογιστή εξαρτάται από το χρόνο που έχει περάσει από τον τελευταίο συγχρονισμό του συστήματος.

Λάβαμε επίσης μια προειδοποίηση σχετικά με τη χρήση της τοπικής ώρας για RTC - αυτό ισχύει για αλλαγές ζώνης ώρας και ρυθμίσεις θερινής ώρας. Εάν ο υπολογιστής είναι απενεργοποιημένος όταν πρέπει να γίνουν αλλαγές, το RTC δεν θα αλλάξει. Αλλά για διακομιστές ή άλλους κεντρικούς υπολογιστές που λειτουργούν όλο το εικοσιτετράωρο, αυτό δεν είναι καθόλου πρόβλημα. Επιπλέον, οποιαδήποτε υπηρεσία παρέχει συγχρονισμό ώρας NTP θα προσαρμόσει την ώρα του κεντρικού υπολογιστή κατά την αρχική φάση εκκίνησης, επομένως η ώρα θα είναι ξανά σωστή μετά την ολοκλήρωση της εκκίνησης.

Ρύθμιση της ζώνης ώρας

Συνήθως, καθορίζετε τη ζώνη ώρας κατά τη διαδικασία εγκατάστασης και δεν έχετε το καθήκον να την αλλάξετε αργότερα. Ωστόσο, υπάρχουν φορές που πρέπει να αλλάξετε τη ζώνη ώρας. Υπάρχουν πολλά εργαλεία που μπορούν να βοηθήσουν. Το Linux χρησιμοποιεί αρχεία ζώνης ώρας για να προσδιορίσει την τοπική ζώνη ώρας ενός κεντρικού υπολογιστή. Αυτά τα αρχεία βρίσκονται στον κατάλογο /usr/share/zoneinfo. Από προεπιλογή, για τη ζώνη ώρας μου, το σύστημα ορίζει αυτό: /etc/localtime -> ../usr/share/zoneinfo/America/New_York. Αλλά δεν χρειάζεται να γνωρίζετε τέτοιες λεπτότητες για να αλλάξετε τη ζώνη ώρας.

Το κύριο πράγμα είναι να γνωρίζετε το επίσημο όνομα ζώνης ώρας για την τοποθεσία σας και την αντίστοιχη εντολή. Ας υποθέσουμε ότι θέλετε να αλλάξετε τη ζώνη ώρας σε Λος Άντζελες:


[root@testvm2 ~]# timedatectl list-timezones | column
<SNIP>
America/La_Paz                  Europe/Budapest
America/Lima                    Europe/Chisinau
America/Los_Angeles             Europe/Copenhagen
America/Maceio                  Europe/Dublin
America/Managua                 Europe/Gibraltar
America/Manaus                  Europe/Helsinki
<SNIP>

Τώρα μπορείτε να ορίσετε τη ζώνη ώρας. Χρησιμοποίησα την εντολή date για να ελέγξω για αλλαγές, αλλά μπορείτε επίσης να χρησιμοποιήσετε το timedatectl:

[root@testvm2 ~]# date
Tue 19 May 2020 04:47:49 PM EDT
[root@testvm2 ~]# timedatectl set-timezone America/Los_Angeles
[root@testvm2 ~]# date
Tue 19 May 2020 01:48:23 PM PDT
[root@testvm2 ~]#

Τώρα μπορείτε να αλλάξετε τη ζώνη ώρας του οικοδεσπότη σας σε τοπική ώρα.

systemd-timesyncd

Ο δαίμονας systemd timeync παρέχει μια υλοποίηση NTP που είναι εύκολο να διαχειριστεί στο πλαίσιο του συστήματος. Είναι εγκατεστημένο από προεπιλογή σε Fedora και Ubuntu. Ωστόσο, ξεκινά μόνο από προεπιλογή στο Ubuntu. Δεν είμαι σίγουρος για άλλες διανομές. Μπορείτε να ελέγξετε μόνοι σας:

[root@testvm1 ~]# systemctl status systemd-timesyncd

Διαμόρφωση systemd-timesyncd

Το αρχείο ρυθμίσεων για το systemd-timesyncd είναι /etc/systemd/timesyncd.conf. Αυτό είναι ένα απλό αρχείο με λιγότερες επιλογές ενεργοποιημένες από τις παλιές υπηρεσίες NTP και chronyd. Εδώ είναι τα περιεχόμενα αυτού του αρχείου (χωρίς περαιτέρω τροποποιήσεις) στο Fedora VM μου:

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See timesyncd.conf(5) for details.

[Time]
#NTP=
#FallbackNTP=0.fedora.pool.ntp.org 1.fedora.pool.ntp.org 2.fedora.pool.ntp.org 3.fedora.pool.ntp.org
#RootDistanceMaxSec=5
#PollIntervalMinSec=32
#PollIntervalMaxSec=2048

Η μόνη ενότητα που περιέχει, εκτός από σχόλια, είναι η [Ώρα]. Όλες οι άλλες γραμμές σχολιάζονται. Αυτές είναι οι προεπιλεγμένες τιμές και δεν πρέπει να αλλάξουν (εκτός αν έχετε λόγο). Εάν δεν έχετε ορίσει διακομιστή ώρας NTP στη γραμμή NTP=, το Fedora ορίζει από προεπιλογή έναν εναλλακτικό διακομιστή ώρας Fedora. Συνήθως προσθέτω τον διακομιστή ώρας μου:

NTP=myntpserver

Εκτέλεση χρόνου συγχρονισμού

Μπορείτε να ξεκινήσετε και να ενεργοποιήσετε το systemd-timesyncd ως εξής:

[root@testvm2 ~]# systemctl enable systemd-timesyncd.service
Created symlink /etc/systemd/system/dbus-org.freedesktop.timesync1.service → /usr/lib/systemd/system/systemd-timesyncd.service.
Created symlink /etc/systemd/system/sysinit.target.wants/systemd-timesyncd.service → /usr/lib/systemd/system/systemd-timesyncd.service.
[root@testvm2 ~]# systemctl start systemd-timesyncd.service
[root@testvm2 ~]#

Ρύθμιση του ρολογιού υλικού

Δείτε πώς φαίνεται η κατάσταση μετά την εκτέλεση του timesyncd:

[root@testvm2 systemd]# timedatectl
               Local time: Sat 2020-05-16 14:34:54 EDT  
           Universal time: Sat 2020-05-16 18:34:54 UTC  
                 RTC time: Sat 2020-05-16 14:34:53      
                Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes                          
              NTP service: active                      
          RTC in local TZ: no    

Αρχικά, η διαφορά μεταξύ RTC και τοπικής ώρας (EDT) είναι μικρότερη από ένα δευτερόλεπτο και η απόκλιση αυξάνεται κατά άλλα δύο δευτερόλεπτα τις επόμενες ημέρες. Δεδομένου ότι δεν υπάρχει έννοια των ζωνών ώρας στο RTC, η εντολή timedatectl πρέπει να εκτελέσει μια σύγκριση για να καθορίσει τη σωστή ζώνη ώρας. Εάν η ώρα RTC δεν ταιριάζει ακριβώς με την τοπική ώρα, τότε δεν ταιριάζει ούτε με την τοπική ζώνη ώρας.

Αναζητώντας περισσότερες πληροφορίες, έλεγξα την κατάσταση του systemd-timesync και βρήκα αυτό:

[root@testvm2 systemd]# systemctl status systemd-timesyncd.service
● systemd-timesyncd.service - Network Time Synchronization
     Loaded: loaded (/usr/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: disabled)
     Active: active (running) since Sat 2020-05-16 13:56:53 EDT; 18h ago
       Docs: man:systemd-timesyncd.service(8)
   Main PID: 822 (systemd-timesyn)
     Status: "Initial synchronization to time server 163.237.218.19:123 (2.fedora.pool.ntp.org)."
      Tasks: 2 (limit: 10365)
     Memory: 2.8M
        CPU: 476ms
     CGroup: /system.slice/systemd-timesyncd.service
             └─822 /usr/lib/systemd/systemd-timesyncd

May 16 09:57:24 testvm2.both.org systemd[1]: Starting Network Time Synchronization...
May 16 09:57:24 testvm2.both.org systemd-timesyncd[822]: System clock time unset or jumped backwards, restoring from recorded timestamp: Sat 2020-05-16 13:56:53 EDT
May 16 13:56:53 testvm2.both.org systemd[1]: Started Network Time Synchronization.
May 16 13:57:56 testvm2.both.org systemd-timesyncd[822]: Initial synchronization to time server 163.237.218.19:123 (2.fedora.pool.ntp.org).
[root@testvm2 systemd]#

Παρατηρήστε το μήνυμα καταγραφής που λέει ότι η ώρα του συστήματος δεν έχει ρυθμιστεί ή έχει γίνει επαναφορά. Η υπηρεσία Timesync ορίζει την ώρα του συστήματος με βάση τη χρονική σήμανση. Οι χρονικές σημάνσεις διατηρούνται από τον δαίμονα timeync και δημιουργούνται σε κάθε επιτυχημένο συγχρονισμό.

Η εντολή timedatectl δεν μπορεί να πάρει την τιμή του ρολογιού υλικού από το ρολόι του συστήματος. Μπορεί να ορίσει μόνο την ώρα και την ημερομηνία από την τιμή που έχει εισαχθεί στη γραμμή εντολών. Μπορείτε να ορίσετε το RTC στην ίδια τιμή με την ώρα συστήματος χρησιμοποιώντας την εντολή hwclock:

[root@testvm2 ~]# /sbin/hwclock --systohc --localtime
[root@testvm2 ~]# timedatectl
               Local time: Mon 2020-05-18 13:56:46 EDT  
           Universal time: Mon 2020-05-18 17:56:46 UTC  
                 RTC time: Mon 2020-05-18 13:56:46      
                Time zone: America/New_York (EDT, -0400)
System clock synchronized: yes                          
              NTP service: active                      
          RTC in local TZ: yes

Η επιλογή --localtime λέει στο ρολόι υλικού να δείχνει τοπική ώρα και όχι UTC.

Γιατί χρειάζεστε καθόλου το RTC;

Οποιαδήποτε εφαρμογή του NTP θα ρυθμίσει το ρολόι του συστήματος κατά την ώρα εκκίνησης. Και γιατί τότε RTC; Αυτό δεν είναι απολύτως αληθές: αυτό θα συμβεί μόνο εάν έχετε σύνδεση δικτύου με τον διακομιστή ώρας. Ωστόσο, πολλά συστήματα δεν έχουν πάντα πρόσβαση σε σύνδεση δικτύου, επομένως ένα ρολόι υλικού είναι χρήσιμο για το Linux για να ρυθμίσει την ώρα του συστήματος. Αυτό είναι καλύτερο από τη μη αυτόματη ρύθμιση της ώρας, παρόλο που μπορεί να αποκλίνει από τον πραγματικό χρόνο.

Συμπέρασμα

Αυτό το άρθρο έχει εξετάσει ορισμένα εργαλεία για τον χειρισμό της ημερομηνίας, της ώρας και των ζωνών ώρας. Το εργαλείο systemd-timesyncd παρέχει έναν πελάτη NTP που μπορεί να συγχρονίσει την ώρα στον τοπικό κεντρικό υπολογιστή με έναν διακομιστή NTP. Ωστόσο, το systemd-timesyncd δεν παρέχει υπηρεσία διακομιστή, επομένως εάν χρειάζεστε διακομιστή NTP στο δίκτυό σας, πρέπει να χρησιμοποιήσετε κάτι άλλο, όπως το Chrony, για να λειτουργήσετε ως διακομιστής.

Προτιμώ να έχω μια ενιαία υλοποίηση για οποιαδήποτε υπηρεσία στο δίκτυό μου, γι' αυτό χρησιμοποιώ το Chrony. Εάν δεν χρειάζεστε έναν τοπικό διακομιστή NTP ή εάν δεν σας πειράζει να χρησιμοποιήσετε το Chrony ως διακομιστή και το systemd-timesyncd ως πελάτη SNTP. Εξάλλου, δεν χρειάζεται να χρησιμοποιήσετε τις πρόσθετες δυνατότητες του Chrony ως πελάτη εάν είστε ικανοποιημένοι με τη λειτουργικότητα του systemd-timesyncd.

Μια άλλη σημείωση: δεν απαιτείται να χρησιμοποιήσετε τα εργαλεία systemd για την υλοποίηση του NTP. Μπορείτε να χρησιμοποιήσετε μια παλαιότερη έκδοση ntpd, Chrony ή άλλη υλοποίηση NTP. Εξάλλου, το systemd αποτελείται από μεγάλο αριθμό υπηρεσιών. Πολλά από αυτά είναι προαιρετικά, επομένως μπορείτε να τα απενεργοποιήσετε και να χρησιμοποιήσετε κάτι άλλο. Αυτό δεν είναι ένα τεράστιο μονολιθικό τέρας. Μπορεί να μην σας αρέσει το σύστημα ή μέρη του, αλλά θα πρέπει να πάρετε μια τεκμηριωμένη απόφαση.

Μου αρέσει η υλοποίηση του NTP από το systemd, αλλά προτιμώ το Chrony γιατί ταιριάζει καλύτερα στις ανάγκες μου. Είναι Linux, μωρό μου -)

Σχετικά με τα Δικαιώματα Διαφήμισης

Η VDSina προσφέρει διακομιστές για οποιαδήποτε εργασία, μια τεράστια συλλογή λειτουργικών συστημάτων για αυτόματη εγκατάσταση, είναι δυνατή η εγκατάσταση οποιουδήποτε λειτουργικού συστήματος από το δικό σας ISO, άνετο панель управления δική ανάπτυξη και καθημερινή πληρωμή. Θυμηθείτε ότι έχουμε αιώνιους διακομιστές που είναι σίγουρα διαχρονικοί 😉

Συγχρονισμός ώρας Linux: NTP, Chrony και systemd-timesyncd

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο