1. ntp启动参数-g什么意思?为什么误差超过1000s ntpd会异常退出?-x参数又是什么意思?
  2. 如何缓慢调整ntp?
  3. 机器本地如何守时? 如果ntp校准不回来怎么办?
  4. adjtimex修改tick值用法举例
  5. chrony和ntp区别?
  6. adjtimex和时钟的几个概念tick,freq,ppm?
  7. Linux上夏时令是什么?夏时令到了我们需要做什么吗?
  8. NTP问题排查常见工具?

1,ntp启动参数-g是什么意思?为什么误差超过1000s ntpd会异常退出? -x参数又是什么意思?

Normally, ntpd exits with a message to the system log if the  offset  exceeds the panic threshold, which is 1000 s by default. This option allows the time to be set to any value without restriction;  however,  this  can happen only once. If the threshold is exceeded    after that, ntpd will exit with a message to the system log.  This  option can be used with the -q and -x options. See the tinker command for other options.

这是对-g参数的说明:

通常,如果偏移量超过了紧急阈值ntpd会退出并发送消息系统日志,阈值默认情况下为1000秒。 此选项允许将时间设置为任何值而不受限制; 然而,这只会发生一次。 如果超过阈值,则ntpd将退出并发送消息到系统日志。 该选项可以与-q和-x选项一起使用。 有关其他选项,请参阅tinker命令。

当偏移量超过1000s的时候ntp自动退出,这是由时钟纪律算法决定的,超过1000s的时候它会崩溃退出。

-q选项在手册里这么解释的:

Exit the ntpd just after the first time the clock is set. This behavior mimics that of the ntpdate program, which is to be retired. The -g and -x options can be used with this option. Note: The kernel time discipline is disabled with this option.

在第一次设置时钟后退出ntpd。 这种行为模仿ntpdate程序的行为,该程序将被退休。 -g和-x选项可以与此选项一起使用。 注意:使用此选项禁用内核时间规则。

也就是说开启了这个选项等同于使用ntpdate一样同步完就退出。

-x参数是代表的是开启ntp的slew同步模式,即缓慢,有序的微调模式。

2,如何缓慢调整ntp?

缓慢调整ntp就是开启slew模式,即启动ntpd服务之前手动同步一次,然后开启-x选项,最后开启ntpd服务即可。

3,机器本地如何守时? 如果ntp校准不回来怎么办?

本地是随着硬件时钟同步的,硬件时钟是由计算机的电子控制的晶体振荡器觉得的。如果ntp校准不会来的话可以人工进行干预,手动同步,缩小偏移量之后再进行自动同步。

4,adjtimex修改tick值用法举例

http://www.turbolinux.com.cn/turbo/wiki/doku.php?id=system:adjtimex%E7%AE%80%E4%BB%8B

这是turbolinux官网对adjtimex的解释。我决定这个描述比adjtimex手册的描述更能让人理解。

linux系统有两个时钟:一个是由主板电池驱动的“Real Time Clock”也叫做RTC或者叫CMOS时钟,硬件时钟。当操作系统关机的时候,用这个来记录时间,但是对于运行的系统是不用这个时间的。另一个时间是 “System clock”也叫内核时钟或者软件时钟,是由软件根据时间中断来进行计数的,内核时钟在系统关机的情况下是不存在的,所以,当操作系统启动的时候,内核时钟是要读取RTC时间来进行时间同步(有些情况下,内核时钟也可以通过ntp服务器来读取时间) 这两个时钟通常会有一些误差,所以长时间可以导致这两个时钟偏离的比较多,最简单的保持两个时间同步的方法是用软件测出他们之间的误差率,然后用软件进行修正。在每次重新启动系统的时候,系统都会用hwclock命令对时间进行同步。如果内核时钟在每一个时间中断都快或者慢的话,可以用adjtimex命令进行调整,使得RTC和内核时间走的快慢一致。 adjtimex 允许用户来调整内核的时间参数,因此可以改变内核时间的速度,可以用hwclock命令来比较出内核时间和RTC时间的偏移率,然后利用adjtimex 命令根据偏移率来对内核时间进行校正,使得内核时间走的快些或者慢些,当经过调整的内核时间跟RTC时间走的同样快的时候,可以把这个命令行写到启动脚本里面,让每次机器启动的时候都可以把内核的时间参数调整正确。

adjtimex 的参数

  • -p, –print 输出内核时间变量的值
  • -t, –tick val 设置内核时钟计数间隔(微秒)
  • -f, –frequency newfreq 设置系统时钟偏移量
  • -c, –compare[=count] 比较系统时钟和CMOS时钟
  • -i, –interval tim 设置时钟比较间隔时间 (sec)
  • -l, –log[=file] 将当前时间记录到文件中
  • –host timeserver 查询时间服务器
  • -u, –utc 将CMOS时钟设置成UTC

有了-c这个参数就好说了。

adjtimex -c  可以比较系统时钟和CMOS时钟

前面的tick/freq字段表示内核的tick和freq值,后面的tick/freq表示系统对tick和freq的推荐值,用这个值可以对系统时间进行校正。针对上面的误差可以不需要校正,若需要修正可使用adjtimex –t或adjtimex –f指令进行修正。

注意,这里系统会连续测试出好几个连续的差别,一般可以参考平均值

于是我这里采用的是平均值

我这儿设置完之后并没有看到什么变化,估计是本地虚拟机的原因吧

5,chrony和ntp的区别?

关于chrony我的了解不多,只知道chrony是centos7支持的一个据说比ntp更高效的时间同步工具。

6,adjtimex和时钟的几个概念tick,freq,ppm?

tick 代表的是内核时钟计数间隔(微秒)

freq 系统时钟偏移量

ppm 查阅相关文档解释的是parts-per-million(PPM),即每百万分之1

7,Linux上夏令时是什么?夏令时到了我们需要做什么吗?

下面来一段夏令时的历史背景:

1986年4月,中央有关部门发出“在全国范围内实行夏时制的通知”,具体作法是:每年从四月中旬第一个星期日的凌晨2时整(北京时间),将时钟拨快一小时,即将表针由2时拨至3时,夏令时开始;到九月中旬第一个星期日的凌晨2时整(北京夏令时),再将时钟拨回一小时,即将表针由2时拨至1时,夏令时结束。从1986年到1991年的六个年度,除1986年因是实行夏时制的第一年,从5月4日开始到9月14日结束外,其它年份均按规定的时段施行。在夏令时开始和结束前几天,新闻媒体均刊登有关部门的通告。1992年起,夏令时暂停实行。

夏令时是由于地球自转不规律引起的,而且这种自转每年都在发生变化,此处省略物理课内容n多字。

夏令时到了我们不需要做什么,但是我们的网络世界就不一样了,对于分秒必究的一些应用服务器那我们应该做些什么呢?

答案是:什么也不用做!因为linux开发者早就为我们解决了这一切。

8,NTP问题排查常见工具有ntpstat ntptime ntpq ntpdc 等等,使用方法就不赘述了,细讲可以讲一整个博客。

 

posted on 2017-04-27 19:11  90swj  阅读(2026)  评论(0编辑  收藏  举报