การซิงโครไนซ์เวลาของ Linux: NTP, Chrony และ systemd-timesyncd

การซิงโครไนซ์เวลาของ Linux: NTP, Chrony และ systemd-timesyncd
คนส่วนใหญ่ติดตามเวลา เราตื่นตรงเวลาเพื่อทำพิธีกรรมในตอนเช้าและไปทำงาน พักกลางวัน ทำตามกำหนดเวลาของโครงการ ฉลองวันเกิดและวันหยุด ขึ้นเครื่องบิน และอื่นๆ

นอกจากนี้ พวกเราบางคนหมกมุ่นอยู่กับเวลา นาฬิกาของฉันใช้พลังงานจากแสงอาทิตย์และได้รับการบอกเวลาที่แม่นยำจาก National Institute of Standards and Technology (NIST) ไปยัง Fort Collins, Colorado ผ่านวิทยุคลื่นยาว ดับเบิลยูดับเบิลยูบี. สัญญาณเวลาจะซิงโครไนซ์กับนาฬิกาอะตอมซึ่งอยู่ที่ Fort Collins เช่นกัน Fitbit ของฉันกำลังซิงค์กับโทรศัพท์ของฉันซึ่งกำลังซิงค์กับเซิร์ฟเวอร์ NTPซึ่งจะซิงโครไนซ์กับนาฬิกาอะตอมในที่สุด

อุปกรณ์ติดตามเวลาด้วย

มีหลายสาเหตุที่อุปกรณ์และคอมพิวเตอร์ของเราต้องการเวลาที่แม่นยำ ตัวอย่างเช่น ในการธนาคาร ตลาดหุ้น และธุรกิจการเงินอื่นๆ การทำธุรกรรมต้องดำเนินการตามลำดับที่เหมาะสม และลำดับเวลาที่แม่นยำมีความสำคัญต่อสิ่งนี้

โทรศัพท์ แท็บเล็ต รถยนต์ ระบบ GPS และคอมพิวเตอร์ของเราล้วนต้องการการตั้งค่าเวลาและวันที่ที่แม่นยำ ฉันต้องการให้นาฬิกาบนเดสก์ท็อปของคอมพิวเตอร์แสดงเวลาที่ถูกต้อง ฉันต้องการให้การแจ้งเตือนปรากฏในปฏิทินท้องถิ่นในเวลาที่เหมาะสม เวลาที่ถูกต้องยังช่วยให้แน่ใจว่างาน cron และ systemd ทำงานในเวลาที่ถูกต้อง

วันที่และเวลามีความสำคัญต่อการบันทึกด้วย ดังนั้นการค้นหาบันทึกตามวันที่และเวลาจึงง่ายกว่าเล็กน้อย ตัวอย่างเช่น ครั้งหนึ่งฉันเคยทำงานใน DevOps (ตอนนั้นยังไม่เรียกว่าแบบนั้น) และกำลังตั้งค่าระบบอีเมลในรัฐนอร์ทแคโรไลนา เราเคยประมวลผลอีเมลมากกว่า 20 ล้านฉบับต่อวัน การติดตามอีเมลผ่านชุดเซิร์ฟเวอร์ หรือกำหนดลำดับเหตุการณ์ที่แน่นอนโดยใช้ไฟล์บันทึกบนโฮสต์ที่กระจายตามพื้นที่ทางภูมิศาสตร์ สามารถทำได้ง่ายกว่ามากหากคอมพิวเตอร์ที่เกี่ยวข้องได้รับการซิงโครไนซ์ทันเวลา

ครั้งเดียว - หลายชั่วโมง

โฮสต์ Linux ต้องคำนึงถึงว่ามีเวลาของระบบและเวลา RTC RTC (นาฬิกาเรียลไทม์) เป็นชื่อที่แปลกเล็กน้อยและไม่ถูกต้องนักสำหรับนาฬิกาฮาร์ดแวร์

นาฬิกาของฮาร์ดแวร์จะทำงานอย่างต่อเนื่องแม้ในขณะที่ปิดคอมพิวเตอร์ โดยใช้แบตเตอรี่บนเมนบอร์ดของระบบ หน้าที่หลักของ RTC คือการจัดเก็บเวลาเมื่อไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์เวลาได้ ในสมัยที่ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์เวลาผ่านอินเทอร์เน็ตได้ คอมพิวเตอร์ทุกเครื่องต้องมีนาฬิกาภายในที่เที่ยงตรง ระบบปฏิบัติการต้องเข้าถึง RTC ขณะบู๊ต และผู้ใช้ต้องตั้งเวลาระบบด้วยตนเองโดยใช้อินเทอร์เฟซการกำหนดค่าฮาร์ดแวร์ BIOS เพื่อให้แน่ใจว่าถูกต้อง

นาฬิกาฮาร์ดแวร์ไม่เข้าใจแนวคิดของเขตเวลา RTC เก็บเฉพาะเวลา ไม่ใช่เขตเวลาหรือชดเชยจาก UTC (เวลาสากลเชิงพิกัด หรือที่เรียกว่า GMT หรือเวลามาตรฐานกรีนิช) คุณสามารถติดตั้ง RTC โดยใช้เครื่องมือที่เราจะกล่าวถึงในบทความนี้

เวลาของระบบคือเวลาที่ระบบปฏิบัติการแสดงบนนาฬิกา GUI บนเดสก์ท็อปของคุณ ในเอาต์พุตของคำสั่ง date ในการประทับเวลาของบันทึก นอกจากนี้ยังใช้กับเมื่อมีการสร้าง แก้ไข และเปิดไฟล์

บนหน้า ผู้ชายสำหรับ rtc มีคำอธิบายทั้งหมดของ RTC และนาฬิการะบบ

NTP คืออะไร?

คอมพิวเตอร์ทั่วโลกใช้ NTP (Network Time Protocol) เพื่อซิงโครไนซ์เวลากับนาฬิกาอ้างอิงมาตรฐานทางอินเทอร์เน็ตโดยใช้ลำดับชั้นของเซิร์ฟเวอร์ NTP เซิร์ฟเวอร์เวลาหลักอยู่ที่เลเยอร์ 1 และเชื่อมต่อโดยตรงกับบริการเวลาของประเทศต่างๆ ที่เลเยอร์ 0 ผ่านดาวเทียม วิทยุ หรือแม้แต่โมเด็มผ่านสายโทรศัพท์ บริการเวลาเลเยอร์ 0 สามารถเป็นนาฬิกาอะตอม เครื่องรับวิทยุที่ปรับสัญญาณที่ส่งโดยนาฬิกาอะตอม หรือเครื่องรับ GPS ที่ใช้สัญญาณนาฬิกาที่มีความแม่นยำสูงซึ่งส่งโดยดาวเทียม GPS

เซิร์ฟเวอร์อ้างอิงส่วนใหญ่มีเซิร์ฟเวอร์ NTP stratum 2 สาธารณะหลายพันเซิร์ฟเวอร์ที่เปิดให้สาธารณะ องค์กรและผู้ใช้จำนวนมาก (รวมถึงตัวฉันเอง) ที่มีโฮสต์จำนวนมากที่ต้องการเซิร์ฟเวอร์ NTP เลือกที่จะตั้งค่าเซิร์ฟเวอร์เวลาของตนเอง เพื่อให้โฮสต์ภายในเครื่องเดียวเท่านั้นที่เข้าถึงชั้น 2 หรือ 3 จากนั้นจึงกำหนดค่าโหนดที่เหลือบนเครือข่ายเพื่อใช้ในเครือข่าย เซิร์ฟเวอร์เวลา ในกรณีของเครือข่ายในบ้านของฉัน นี่คือเซิร์ฟเวอร์เลเยอร์ 3

การใช้งานต่างๆ ของ NTP

การใช้งานดั้งเดิมของ NTP คือ ntpd จากนั้นมันถูกรวมเข้าด้วยกันโดยสองอันที่ใหม่กว่า chronyd และ systemd-timesyncd ทั้งสามซิงโครไนซ์เวลาโฮสต์ท้องถิ่นกับเซิร์ฟเวอร์เวลา NTP บริการ systemd-timesyncd ไม่น่าเชื่อถือเท่า chronyd แต่ก็ดีพอสำหรับวัตถุประสงค์ส่วนใหญ่ หาก RTC ไม่ซิงค์ ก็จะค่อยๆ ปรับเวลาของระบบให้ซิงโครไนซ์กับเซิร์ฟเวอร์ NTP เมื่อเวลาของระบบโลคัลลดลงเล็กน้อย ไม่สามารถใช้บริการ systemd-timesync เป็นเซิร์ฟเวอร์เวลา

โครนี่ เป็นการใช้งาน NTP ที่มีสองโปรแกรม: chronyd daemon และอินเตอร์เฟสบรรทัดคำสั่งที่เรียกว่า chronyc Chrony มีคุณสมบัติบางอย่างที่ขาดไม่ได้ในหลายกรณี:

  • Chrony สามารถซิงโครไนซ์กับเซิร์ฟเวอร์เวลาได้เร็วกว่าบริการ ntpd แบบเก่า วิธีนี้เหมาะสำหรับแล็ปท็อปหรือเดสก์ท็อปที่ไม่ได้ทำงานตลอดเวลา
  • สามารถชดเชยความผันผวนของนาฬิกา เช่น เมื่อโฮสต์เข้าสู่โหมดสลีปหรือเข้าสู่โหมดสลีป หรือเมื่อนาฬิกาเปลี่ยนเนื่องจากการกระโดดความถี่ ซึ่งทำให้นาฬิกาทำงานช้าลงเมื่อโหลดต่ำ
  • ช่วยแก้ปัญหาด้านเวลาที่เกี่ยวข้องกับการเชื่อมต่อเครือข่ายที่ไม่เสถียรหรือความแออัดของเครือข่าย
  • ควบคุมความล่าช้าของเครือข่าย
  • หลังจากการซิงค์เวลาครั้งแรก Chrony จะไม่หยุดนาฬิกา ซึ่งให้ช่วงเวลาที่เสถียรและสม่ำเสมอสำหรับบริการระบบและแอปพลิเคชันต่างๆ
  • Chrony สามารถทำงานได้แม้ไม่มีการเชื่อมต่อเครือข่าย ในกรณีนี้ สามารถอัพเดตโลคัลโฮสต์หรือเซิร์ฟเวอร์ด้วยตนเองได้
  • Chrony สามารถทำหน้าที่เป็นเซิร์ฟเวอร์ NTP

อีกครั้ง NTP เป็นโปรโตคอลที่สามารถนำไปใช้บนโฮสต์ Linux โดยใช้ Chrony หรือ systemd-timesyncd

NTP, Chrony และ systemd-timesyncd RPM มีอยู่ในที่เก็บมาตรฐานของ Fedora systemd-udev RPM เป็นตัวจัดการเหตุการณ์เคอร์เนลที่ติดตั้งตามค่าเริ่มต้นบน Fedora แต่เป็นทางเลือก

คุณสามารถติดตั้งทั้งสามตัวและสลับไปมาระหว่างกันได้ แต่นี่จะทำให้ปวดหัวเป็นพิเศษ ดังนั้นจึงเป็นการดีกว่าที่จะไม่ Fedora, CentOS และ RHEL รุ่นใหม่ได้ย้ายไปที่ Chrony เป็นการใช้งานเริ่มต้น และยังมี systemd-timesyncd ฉันพบว่า Chrony ทำงานได้ดี มีอินเทอร์เฟซที่ดีกว่าบริการ NTP ให้ข้อมูลและการควบคุมที่มากกว่า ซึ่งผู้ดูแลระบบจะต้องเพลิดเพลินอย่างแน่นอน

ปิดใช้งานบริการ NTP

บริการ NTP อาจทำงานบนโฮสต์ของคุณอยู่แล้ว หากเป็นเช่นนั้น คุณต้องปิดการใช้งานก่อนที่จะเปลี่ยนไปใช้สิ่งอื่น ฉันเรียกใช้ chronyd ดังนั้นฉันจึงใช้คำสั่งต่อไปนี้เพื่อหยุดและปิดการใช้งาน รันคำสั่งที่เหมาะสมสำหรับ NTP daemon ที่คุณกำลังรันบนโฮสต์ของคุณ:

[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 คำสั่ง timesync-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 ในกรณีนี้ เวลาของระบบถูกตั้งค่าเป็นโซนเวลา America / New_York (TZ) RTC ถูกตั้งค่าเป็นเวลาในโซนเวลาท้องถิ่น และบริการ NTP ไม่ทำงาน เวลา RTC เริ่มคลาดเคลื่อนจากเวลาของระบบเล็กน้อย นี่เป็นเรื่องปกติสำหรับระบบที่นาฬิกาไม่ได้รับการซิงโครไนซ์ จำนวนออฟเซ็ตบนโฮสต์ขึ้นอยู่กับเวลาที่ผ่านไปตั้งแต่ระบบซิงโครไนซ์ครั้งล่าสุด

นอกจากนี้ เรายังได้รับคำเตือนเกี่ยวกับการใช้เวลาท้องถิ่นสำหรับ RTC ซึ่งใช้กับการเปลี่ยนแปลงโซนเวลาและการตั้งค่า DST หากคอมพิวเตอร์ปิดอยู่เมื่อจำเป็นต้องทำการเปลี่ยนแปลง 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 timesync daemon จัดเตรียมการใช้งาน NTP ที่ง่ายต่อการจัดการในบริบท systemd มันถูกติดตั้งโดยค่าเริ่มต้นบน 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 ตั้งเวลาของระบบตามเวลาประทับ การประทับเวลาจะดูแลโดย timesync daemon และสร้างขึ้นทุกครั้งที่ซิงค์สำเร็จ

คำสั่ง 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 ประกอบด้วยบริการจำนวนมาก หลายรายการเป็นทางเลือก คุณจึงสามารถปิดและใช้สิ่งอื่นแทนได้ นี่ไม่ใช่สัตว์ประหลาดขนาดใหญ่ คุณอาจไม่ชอบ systemd หรือบางส่วน แต่คุณควรตัดสินใจอย่างมีข้อมูล

ฉันชอบการใช้งาน NTP ของ systemd แต่ฉันชอบ Chrony มากกว่าเพราะมันเหมาะกับความต้องการของฉันมากกว่า มันคือ Linux ที่รัก -)

เป็นโฆษณา

VDSina ขอเสนอ เซิร์ฟเวอร์สำหรับงานใดๆระบบปฏิบัติการที่มีให้เลือกมากมายสำหรับการติดตั้งอัตโนมัติ สามารถติดตั้งระบบปฏิบัติการใดก็ได้จากของคุณเอง มาตรฐาน ISO, สะดวกสบาย แผงควบคุม การพัฒนาตัวเองและการชำระเงินรายวัน จำได้ว่าเรามีเซิร์ฟเวอร์นิรันดร์ที่ไร้กาลเวลาอย่างแน่นอน 😉

การซิงโครไนซ์เวลาของ Linux: NTP, Chrony และ systemd-timesyncd

ที่มา: will.com

เพิ่มความคิดเห็น