IT评测·应用市场-qidao123.com技术社区

标题: Linux中服务器时间同步 [打印本页]

作者: 怀念夏天    时间: 2025-4-21 06:12
标题: Linux中服务器时间同步
简单介绍

   在 redhat 8 之前,时间同步服务是利用 NTP(网络时间协议)来实现的,在 redhat 8 及之     后利用是 NTP 的实现工具 chrony 来实现时间同步。     在 redhat 8 及之后,默认情况下已经安装好 chrony 软件并已经开机启动 chronyd 服务。我     们可以利用 chronyc 下令来暂时修改时间同步,但更建议去修改 /etc/chony.conf 配置文件     来实现持久化的修改。   
  1. [root@nfs share]# rpm -ql chrony | grep chrony
  2. /etc/chrony.conf # 核心配置文件
  3. /etc/chrony.keys
  4. /etc/dhcp/dhclient.d/chrony.sh
  5. /etc/logrotate.d/chrony
  6. /etc/sysconfig/chronyd # chrony的守护进程配置文件
  7. /usr/bin/chronyc # chrony的客户端
  8. /usr/lib/NetworkManager/dispatcher.d/20-chrony-dhcp
  9. /usr/lib/NetworkManager/dispatcher.d/20-chrony-onoffline
  10. /usr/lib/systemd/ntp-units.d/50-chronyd.list
  11. /usr/lib/systemd/system/chrony-wait.service
  12. 检查同步
  13. /usr/lib/systemd/system/chronyd-restricted.service
  14. /usr/lib/systemd/system/chronyd.service # 用户管理chrony的服务
  15. /usr/lib/sysusers.d/chrony.conf
  16. /usr/sbin/chronyd # chrony的守护进程执行文件
  17. /usr/share/doc/chrony
  18. /usr/share/doc/chrony/FAQ
  19. /usr/share/doc/chrony/NEWS
  20. /usr/share/doc/chrony/README
  21. /usr/share/licenses/chrony
  22. /usr/share/licenses/chrony/COPYING
  23. /usr/share/man/man1/chronyc.1.gz
  24. /usr/share/man/man5/chrony.conf.5.gz
  25. /usr/share/man/man8/chronyd.8.gz
  26. /var/lib/chrony
  27. /var/lib/chrony/drift
  28. /var/lib/chrony/rtc
  29. /var/log/chrony # 日志文件
复制代码
检查同步

  1. [root@nfs share]# chronyc tracking
  2. Reference ID : A29FC801 (162.159.200.1)
  3. Stratum : 4
  4. Ref time (UTC) : Sat Apr 19 11:39:03 2025
  5. System time : 0.000000116 seconds slow of NTP time
  6. Last offset : -0.001120899 seconds
  7. RMS offset : 0.017774450 seconds
  8. Frequency : 38.105 ppm fast
  9. Residual freq : -0.045 ppm
  10. Skew : 45.345 ppm
  11. Root delay : 0.214364186 seconds
  12. Root dispersion : 0.265033543 seconds
  13. Update interval : 65.2 seconds
  14. Leap status : Normal
复制代码
详细介绍
  1. chronyc tracking 命令用于查看 chrony 当前的时钟同步状态,以下是对输出中各字段的详细解释:
  2. Reference ID:值为 A29FC801 (162.159.200.1) ,指的是当前系统正在与之同步的远程 NTP 服务器的 IP 地址(括号内内容) ,十六进制形式 A29FC801 也是该服务器地址的另一种表示方式。它表明了当前系统获取时间同步的来源服务器。
  3. Stratum:值为 4 ,表示当前系统时钟在 NTP 层次结构中的级别。Stratum 1 服务器直接与原子钟或 GPS 时钟等高精度的时间源同步;Stratum 2 服务器与 Stratum 1 服务器同步,依此类推。这里系统时钟的 Stratum 为 4 ,意味着它是经过多层同步后与某个 Stratum 较低的服务器完成同步,数字越小说明越接近 NTP 服务器,时间同步的精度理论上相对越高。
  4. Ref time (UTC):值为 Sat Apr 19 11:39:03 2025 ,指的是上一次从远程 NTP 服务器接收到时间更新的时间,采用世界协调时(UTC)表示。这一时间记录了最近一次系统从 NTP 服务器获取准确时间的时刻。
  5. System time:值为 0.000000116 seconds slow of NTP time ,表示当前系统时间与 NTP 服务器时间的差异。这里表明系统时间比 NTP 时间慢了 0.000000116 秒 。如果显示为 “fast” ,则表示系统时间比 NTP 时钟快。
  6. Last offset:值为 -0.001120899 seconds ,指的是上一次时间同步时,系统时间与 NTP 服务器时间的偏移量。负数表示上一次同步时系统时间比 NTP 时间快了相应的秒数,正数则表示系统时间比 NTP 时间慢了相应的秒数。
  7. RMS offset:值为 0.017774450 seconds ,即时间偏移量的均方根,是一个衡量时间同步精度的指标。它反映了在最近一段时间内,系统时间与 NTP 服务器时间之间偏差的平均水平,数值越小说明时间同步的精度越高。
  8. Frequency:值为 38.105 ppm fast ,表示本地系统时钟的频率误差。“ppm” 是 “parts per million” 的缩写,意为每百万部分。这里表示系统时钟的速度相对于完美的时间源,每百万秒会快 38.105 秒 ,即系统时钟运行得比理想中的完美时钟要快。如果显示为 “slow” ,则表示系统时钟比完美时钟慢。
  9. Residual freq:值为 -0.045 ppm ,指的是在最后一次同步之后,已经观察到的本地时钟频率的改变。它反映了时钟频率在一段时间内的变化趋势,这里负号表示频率有降低的趋势。
  10. Skew:值为 45.345 ppm ,表示本地时钟频率估计的不确定性,即系统时钟频率的稳定性。该值越大,说明时钟频率的稳定性越差,也就是系统时钟的准确性可能会受到一定影响。
  11. Root delay:值为 0.214364186 seconds ,指的是从本地系统到 NTP 服务器的往返时间延迟。它反映了网络传输等因素对时间同步的影响,数值越小说明本地系统与 NTP 服务器之间的通信延迟越低。
  12. Root dispersion:值为 0.265033543 seconds ,表示本地时钟和 NTP 服务器时钟之间的最大可能误差。它综合考虑了各种因素导致的时间偏差,反映了时间同步的最大不确定范围。
  13. Update interval:值为 65.2 seconds ,指的是系统时钟与 NTP 服务器时钟之间进行连续两次同步更新的时间间隔。该时间间隔的设置会影响系统时间与 NTP 时间保持同步的及时性和稳定性。
  14. Leap status:值为 Normal ,表示 NTP 服务器的闰秒状态。“Normal” 说明当前不处于闰秒调整期间;如果出现 “Insert second” ,则表示需要插入闰秒(即增加一秒)来保持时间的准确性;“Delete second” 则表示需要删除闰秒(即减少一秒) 。闰秒调整是为了协调原子时与世界时之间的差异。
  15. 总体而言,如果系统时间与 NTP 时间的差异接近于 0 ,并且 “Leap status” 显示为 “Normal” ,通常可以认为时间同步状态是正常的。但还需要结合其他指标,如 RMS offset、Frequency 等来综合判断时间同步的质量和稳定性。
复制代码
查看当前时间的同步源

  1. [root@nginx ~]# chronyc sources
  2. MS Name/IP address         Stratum Poll Reach LastRx Last sample               
  3. ===============================================================================
  4. ^- ntp.wdc2.us.leaseweb.net      3   8   317    77  -2185us[-2185us] +/-  164ms
  5. ^- time.cloudflare.com           3   8   377    75    +37ms[  +37ms] +/-  158ms
  6. ^* time.neu.edu.cn               2   8   377   146  -6428us[-7654us] +/-   35ms
  7. ^- ntp6.flashdance.cx            2   8   377   205  -1828us[-3013us] +/-  136ms
  8. 详细解释:
  9. chronyc sources命令用于显示与本地系统连接的 NTP(网络时间协议)源的相关信息。它提供了以下有用的信息:
  10. NTP 服务器列表:显示了当前系统正在使用的 NTP 服务器的名称或 IP 地址,如ntp.wdc2.us.leaseweb.net、time.cloudflare.com、time.neu.edu.cn和ntp6.flashdance.cx。这有助于确认系统从哪些服务器获取时间同步。
  11. Stratum(层级):表示每个 NTP 服务器在 NTP 层次结构中的级别。较低的 Stratum 值通常意味着更接近权威时间源,时间同步的精度可能更高。例如,time.neu.edu.cn和ntp6.flashdance.cx的 Stratum 为 2,相对更接近时间源,而ntp.wdc2.us.leaseweb.net和time.cloudflare.com的 Stratum 为 3。
  12. Poll(轮询间隔):显示了系统与 NTP 服务器之间的轮询间隔。轮询间隔决定了系统多久向 NTP 服务器请求一次时间更新。这里的轮询间隔都是 8,说明系统按照一定的时间周期与这些服务器进行时间同步请求。
  13. Reach(可达性):表示系统与 NTP 服务器之间的连接状态。这个值反映了系统成功连接到 NTP 服务器的次数。数值越高,表示连接越稳定。例如,time.cloudflare.com、time.neu.edu.cn和ntp6.flashdance.cx的 Reach 值都为 377,说明与这些服务器的连接较为稳定,而ntp.wdc2.us.leaseweb.net的 Reach 值为 317,相对来说连接稳定性稍差一些。
  14. LastRx(上次接收时间):显示了从 NTP 服务器接收到最后一次时间更新的时间间隔(以秒为单位)。这个信息可以帮助判断服务器的响应及时性。例如,ntp.wdc2.us.leaseweb.net的 LastRx 为 77 秒,time.cloudflare.com的 LastRx 为 75 秒,说明系统在不久前从这些服务器接收到了时间更新。
  15. Last sample(上次样本):提供了上次从 NTP 服务器获取的时间样本与本地系统时间的差异。方括号内的值是实际的时间偏移量,而后面的+/-值表示估计的误差范围。例如,time.neu.edu.cn的时间偏移量为-7654us(微秒),误差范围为+/- 35ms(毫秒),说明本地系统时间比time.neu.edu.cn服务器的时间快了约 7654 微秒,且误差在 35 毫秒左右。
  16. 通过查看chronyc sources的输出,系统管理员可以了解当前系统的时间同步来源、服务器的状态以及时间同步的准确性和稳定性,以便及时发现和解决时间同步方面的问题。
复制代码
    也可以利用 -v 选项来查看更详细的信息      
  1. [root@nfs share]# chronyc sources -v
  2. .-- Source mode '^' = server, '=' = peer, '#' = local clock.
  3. / .- Source state '*' = current best, '+' = combined, '-' = not
  4. combined,
  5. | / 'x' = may be in error, '~' = too variable, '?' =
  6. unusable.
  7. || .- xxxx [ yyyy ]
  8. +/- zzzz
  9. || Reachability register (octal) -. | xxxx = adjusted
  10. offset,
  11. || Log2(Polling interval) --. | | yyyy = measured
  12. offset,
  13. || \ | | zzzz = estimated
  14. error.
  15. || | | \
  16. MS Name/IP address Stratum Poll Reach LastRx Last sample
  17. ======================================================================
  18. =========
  19. ^? 193.182.111.143 2 6 0 96m -22ms[ -22ms]
  20. +/- 150ms
  21. ^? 162.159.200.1 3 6 0 96m -10ms[ -11ms]
  22. +/- 108ms
  23. ^? 193.182.111.142 2 6 0 96m +8917us[+8917us]
  24. +/- 113ms
  25. ^? 193.182.111.12 2 6 0 96m -10ms[ -10ms]
  26. +/- 132ms
  27. [root@nfs share]#
复制代码
  sourcestats 下令显示现在被 chronyd 检查的每个源的偏移率和误差估算过程的信息。
  
  1. [root@nginx ~]# chronyc sourcestats
  2. Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
  3. ==============================================================================
  4. ntp.wdc2.us.leaseweb.net   24  15   40m     -1.812      7.011  +1676us  6100us
  5. time.cloudflare.com        27  14   40m     -2.573     14.953  -1417us    14ms
  6. time.neu.edu.cn            25  18   36m     +0.114      5.950    +28us  5104us
  7. ntp6.flashdance.cx         27  14   42m     -3.281     14.473  +5709us    13ms
  8. [root@nginx ~]# chronyc sourcestats -v
  9.                              .- Number of sample points in measurement set.
  10.                             /    .- Number of residual runs with same sign.
  11.                            |    /    .- Length of measurement set (time).
  12.                            |   |    /      .- Est. clock freq error (ppm).
  13.                            |   |   |      /           .- Est. error in freq.
  14.                            |   |   |     |           /         .- Est. offset.
  15.                            |   |   |     |          |          |   On the -.
  16.                            |   |   |     |          |          |   samples. \
  17.                            |   |   |     |          |          |             |
  18. Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev
  19. ==============================================================================
  20. ntp.wdc2.us.leaseweb.net   24  15   40m     -2.014      7.011  +1309us  6100us
  21. time.cloudflare.com        27  14   40m     -2.775     14.953  -1827us    14ms
  22. time.neu.edu.cn            26  18   41m     +0.046      5.404  +1906ns  5029us
  23. ntp6.flashdance.cx         27  14   42m     -3.483     14.473  +5261us    13ms
复制代码
  配置时间同步服务*

   1、编写/etc/chrony.conf文件

  
  1. [root@nfs share]# vim /etc/chrony.conf
  2. 2 # Please consider joining the pool
  3. (https://www.pool.ntp.org/join.ht ml).
  4. 3 server ntp.aliyun.com iburst
  5. 25 # Allow NTP client access from local network.
  6. 26 allow 192.168.0.0/16
  7. 28 # Serve time even if not synchronized to a time source.
  8. 29 local stratum 10
  9. 第 2 行:是一条注释,提示用户考虑加入 NTP 池(https://www.pool.ntp.org/join.html),这里提供了加入 NTP 池的相关链接信息,NTP 池是由许多志愿者维护的 NTP 服务器集合,可用于获取准确的时间同步。
  10. 第 3 行:指定了一个 NTP 服务器为ntp.aliyun.com,并使用了iburst选项。iburst的作用是在初始同步时,以较快的速率发送 NTP 请求,以便更快地与服务器进行时间同步。这行配置表示将阿里云的 NTP 服务器ntp.aliyun.com作为时间源,并且采用iburst方式进行同步。
  11. 第 25 - 26 行:配置了允许从本地网络192.168.0.0/16中的 NTP 客户端访问该服务器。192.168.0.0/16是一个 CIDR 表示法的网络地址,它表示一个包含192.168.0.0到192.168.255.255范围内所有 IP 地址的网络。这意味着在这个网络中的设备可以向该chrony服务器发起 NTP 请求以获取时间同步服务。
  12. 第 28 - 29 行:配置了即使没有与时间源同步,也提供时间服务,并且将本地层(stratum)设置为 10。通常,stratum用于表示设备在 NTP 层次结构中的位置,数值越大表示离权威时间源越远。这里将本地stratum设置为 10,表明即使在未与外部精确时间源同步的情况下,该服务器也可以为其他设备提供相对不太精确的时间服务。
复制代码
  2、重启chronyd服务

         
  1. [root@nfs share]# systemctl restart chronyd
复制代码
   3、验证是否同步

   
  1. [root@nginx ~]# chronyc sources -v
  2.   .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
  3. / .- Source state '*' = current best, '+' = combined, '-' = not combined,
  4. | /             'x' = may be in error, '~' = too variable, '?' = unusable.
  5. ||                                                 .- xxxx [ yyyy ] +/- zzzz
  6. ||      Reachability register (octal) -.           |  xxxx = adjusted offset,
  7. ||      Log2(Polling interval) --.      |          |  yyyy = measured offset,
  8. ||                                \     |          |  zzzz = estimated error.
  9. ||                                 |    |           \
  10. MS Name/IP address         Stratum Poll Reach LastRx Last sample               
  11. ===============================================================================
  12. ^* 203.107.6.88                  2   6    37     8   -301us[-4829us] +/-   46ms
复制代码
   4、其他服务同步

   
  1. [root@nginx www]# vim /etc/chrony.conf
  2. # Please consider joining the pool
  3. (https://www.pool.ntp.org/join.html).
  4. server 192.168.72.133 iburs
复制代码
   5、你选择的这个虚拟机ip必要举行肯定的配置,配置为ntp服务器

   
  1. vim /etc/chrony.conf
  2. # 注释掉默认的服务器配置,添加可靠的外部时间源
  3. # pool 2.debian.pool.ntp.org offline iburst
  4. server ntp.aliyun.com iburst
  5. server time.google.com iburst
  6. # 允许哪些客户端可以访问该 NTP 服务器
  7. # 允许 192.168.0.0/16 网段的客户端访问   看你自己的网段
  8. allow 192.168.0.0/16
  9. # 即使没有与外部时间源同步,也可以提供时间服务
  10. local stratum 10
  11. 修改完配置文件要重启服务
复制代码
   6、原本虚拟机重启服务然后验证服务是否同步

   
  1. [root@nginx www]# chronyc sources -v
  2. .-- Source mode '^' = server, '=' = peer, '#' = local clock.
  3. / .- Source state '*' = current best, '+' = combined, '-' = not
  4. combined,
  5. | / 'x' = may be in error, '~' = too variable, '?' =
  6. unusable.
  7. || .- xxxx [ yyyy ]
  8. +/- zzzz
  9. || Reachability register (octal) -. | xxxx = adjusted
  10. offset,
  11. || Log2(Polling interval) --. | | yyyy = measured
  12. offset,
  13. || \ | | zzzz = estimated
  14. error.
  15. || | | \
  16. MS Name/IP address Stratum Poll Reach LastRx Last sample
  17. ======================================================================
  18. =========
  19. ^* 192.168.72.133 10 6 17 7 -7921ns[ -14us]
  20. +/- 467us
复制代码
   7、结果分析

   
  1. ^* 192.168.72.133 10 6 17 7 -7921ns[ -14us]
  2. MS 列符号
  3. Source mode 符号
  4. ^:表示该时间源是一个 NTP 服务器。
  5. =:表示该时间源是一个对等体(peer),对等体之间可以相互同步时间。
  6. #:表示该时间源是本地时钟,即使用本地系统的时钟作为时间参考。
  7. Source state 符号
  8. *:表示该时间源是当前最佳的时间源,chrony 会优先使用它进行时间同步。
  9. +:表示该时间源与其他时间源组合使用,用于提高时间同步的准确性。
  10. -:表示该时间源未被用于组合,可能是因为其质量不够好或者其他原因。
  11. x:表示该时间源可能存在错误,可能是服务器故障、网络问题或时间数据不合理等。
  12. ~:表示该时间源的时间数据变化过大,不稳定,不适合用于精确的时间同步。
  13. ?:表示该时间源不可用,如前面分析的那样,可能是网络连接、服务器配置等问题导致。
  14. 结果后面全部为0说明根本没有同步上,一般前面的符号为?,这里设置多个ntp可能会出一些问题,建议用一个检测就行,可能你刚开始是?,可以多刷新几次,看结果是否变化。
复制代码
   

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4