本文根据网络资料整理。 Linux 系统时间配置大致可以大致分为“手动”设置与基于 ntp 的配置两种方式。


手动设置系统时间

1. 说明

Linux将时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟两种。系统时间是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的那个主板硬件时钟,这个时钟可以在BIOS的“Standard BIOS Feture”项中进行设置。Linux并没有默认哪个时钟系统。当Linux启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟就会独立于硬件运作。


2. 设置方法

date 042612492015.28
hwclock –w

说明:
第一步是设置时间,设置完成可以使用date命令查看是否正确,注意:时间设置格式为月日时分年.秒
第二步是将系统时间写入硬件时钟,这样可以避免重启之后需要重新设置系统时间。


3. 相关操作命令

  • 查看硬件时钟
hwclock --show 
  • 设置硬件时钟 通用的设置格式:hwclock/clock --set --date=“月/日/年 时:分:秒”。
hwclock --set --date="09/17/2003 13:26:00"
  • 硬件时钟与系统时钟同步
hwclock –hctosys
  • 系统时钟与硬件时钟同步
hwclock –systohc

通过 ntpd 服务同步设置时间

1. 说明

ntpd 服务是通过网络对系统时间进行同步配置的 Linux 服务,可以确保系统时间的一致性。


2. 配置同步时间

ntpdate $ntpserver

ntpserver 是网络时间服务器地址。


3. 配置系统开机时间同步

/etc/rc.local中添加

/usr/sbin/ntpdate $ntpserver >> /var/log/ntpdate.log

另外,也可以使用 crontab 来定时对时间进行同步,在/etc/crontab中添加

10 5 * * * root ntpdate $ntpserver;hwclock -w

这样每天5:10自动进行网络校时,并同时更新BIOS的时间。


4. 网络时间同步服务器

时间服务器分为两种,一种是一级时间服务器,另外一种是二级时间服务器。如果是同步自己的服务器的时间,那么选择二级时间服务器,因为一级时间服务器是为二级时间服务器提供时间校对服务器,我们尽量不要增加一级服务器的压力。这种层级的概念和DNS的层级概念是一致的。

  • 一级时间服务器列表: http://support.ntp.org/bin/view/Servers/StratumOneTimeServers
  • 二级时间服务器列表: http://support.ntp.org/bin/view/Servers/StratumTwoTimeServers

附二级服务器列表

0.pool.ntp.org            有域名负载均衡
0.cn.pool.ntp.org         有域名负载均衡
ntp.tuna.tsinghua.edu.cn  清华大学
time.windows.com          微软
ntp.fudan.edu.cn          复旦大学

注:除了使用外部时间服务器之外,也可以在局域网中搭建独立的时间同步服务器,其他机器从该时间同步服务器获取同步时间。


Q&A

1. no server suitable for synchronization found

执行ntpdate命令更新NTP客户端的时间时,如果报以下错误:
no server suitable for synchronization found
则可采用以下步骤检测:
(1) 在NTP服务端执行以下命令检测NTP服务是否运行
service ntpd status
(2) 运行ping命令检测NTP客户端与NTP服务端是否连通
ping NTP服务端IP
(3) 在NTP客户端执行
ntpdate -d NTP服务端IP
如果输出结果如下:

6 Nov 10:23:16 ntpdate[3521]: ntpdate 4.2.2p1@1.1570-o Tue ...
Looking for host 10.75.80.47 and service ntp
host found : 10.75.80.47
transmit(10.75.80.47)
transmit(10.75.80.47)
transmit(10.75.80.47)
transmit(10.75.80.47)
transmit(10.75.80.47)
10.75.80.47: **Server dropped: no data**
...
...
6 Nov 10:23:20 ntpdate[3521]: no server suitable for synchronization found

请按以下步骤处理:
a) 检查NTP服务端使用的ntp版本:
ntpq -c version
如果输出版本是 ntp4.2之后(含4.2)的版本,则请检测是否在restrict的定义中使用了notrust。如果有则删除notrust,再进行NTP时间同步。

在 /etc/ntp.conf 中检查 restrict 定义 如果有类似 restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap 的 notrust 定义,则对应删除。

b) 检查NTP服务端的防火墙是否开放NTP服务端口:udp 123
service iptables stop
执行以上命令关闭NTP服务端的防火墙,然后再进行NTP时间同步


Reference

  1. http://blog.chinaunix.net/uid-234760-id-761243.html
  2. http://www.chenyudong.com/archives/linux-ntpdate-time-synchronize.html
  3. http://bbs.chinaunix.net/thread-4131894-1-1.html
  4. http://blog.csdn.net/weidan1121/article/details/3953021


Comments

comments powered by Disqus