我有一台运行 Oracle 数据库的 RHEL6 服务器。服务器构建时,未启用或配置 NTP。我的任务是在不影响数据库的情况下完成此操作。经过一番研究,我假设在 RHEL6 上启用 NTP 时,时间会漂移,直到同步为止。但是,当我在测试机器上执行此操作时,系统时钟立即跳转到 NTP 时间。在启用 NTP 之前,时间大约相差 2 分半钟。当我运行命令时ntpstat
,它暂时不同步,但现在已同步。
那么,我该如何启用 NTP 并让它漂移到正确的时间,而不是“强行”同步?谢谢你的帮助!
[root@host etc]# service ntpd status
ntpd is stopped
[root@host etc]#
[root@host etc]# ntpdate -q time.mydomain.com
server 1.1.1.1, stratum 2, offset 154.573234, delay 0.02890
2 May 15:47:59 ntpdate[21584]: step time server 1.1.1.1 offset 154.573234 sec
[root@host etc]#
[root@host etc]# service ntpd start
Starting ntpd: [ OK ]
[root@host etc]# ntpdate -q time.mydomain.com
server 1.1.1.1, stratum 2, offset -0.000118, delay 0.02876
2 May 15:50:47 ntpdate[21606]: adjust time server 1.1.1.1 offset -0.000118 sec
[root@host etc]# date
Tue May 2 15:51:01 EDT 2017
[root@host etc]# ntpstat
unsynchronised
polling server every 64 s
[root@host etc]# ntpstat
synchronised to NTP server (1.1.1.1) at stratum 3
time correct to within 80 ms
polling server every 1024 s
答案1
如果时钟关闭,NTPD 可以缓慢调整您的时钟,时钟会偏移。其背后的想法是缓慢的步骤不会导致软件计时器出现问题、日志文件和数据中出现奇怪的间隙等。
Unix 内核将可能的最大斜率限制为 500 百万分率 (PPM)。因此,时钟每超出可接受范围一秒,就需要花费 2000 秒的时间。
根据手册页,如果您的时钟偏差超过 1000 秒,ntpd 将无法工作。(尽管您可以使用-G缓慢地切换以补偿 1000 秒的偏移将花费超过 3 周的时间。)
其次,您在启动时观察到的时间跳跃ntpd
是由于 ntpd 默认行为导致的,即当偏移量大于 128 毫秒时,ntpd 会逐步调整时钟,而不是使时钟倾斜。当 ntpd 在启动时启动时,这种情况是合理的,但在运行中的系统中,这并不是您想要的。
您可以通过将-x
开关添加到 ntpd 的启动选项来防止这种情况。摘自手册:
-x
通常,如果偏移量小于步进阈值(默认为 128 毫秒),则时间会倾斜,如果高于阈值,则时间会倾斜。此选项将阈值设置为 600 秒,这完全在手动设置时钟的精度窗口内。注意:由于典型 Unix 内核的倾斜率限制为 0.5 毫秒/秒,因此每秒的调整需要 2000 秒的摊销间隔。因此,多达 600 秒的调整将需要近 14 天才能完成。此选项可与 -g 和 -q 选项一起使用
在 RHEL 系统中,需要/etc/sysconfig/ntpd
在启动 ntpd 服务之前调整配置文件:
# /etc/sysconfig/ntpd
# Drop root to id 'ntp:ntp' by default.
OPTIONS="-u ntp:ntp -p /var/run/ntpd.pid -g -x"