大家是如何解决 Linux 下的时间问题的?

2014-07-25 10:28:05 +08:00
 itsjoke
Linux下面有二个时间,一个系统时间,一个Bios时间
随着系统运行的时间越长,系统时间与"真实"时间相差越来越大
由于业务的原因,不能进行同步等操作,大家有没有遇到这样的问题?
请教大家是如何解决这样的呢?
[root@113 ~]# date
Fri Jul 25 10:12:14 CST 2014
[root@113 ~]# clock
Fri 25 Jul 2014 10:17:52 AM CST -0.031876 seconds
6554 次点击
所在节点    Linux
33 条回复
Honwhy
2014-07-25 10:34:03 +08:00
使用ntpdate us.pool.ntp.org同步时间
将ntpdated加入开机启动chkconfig

RHEL系列。
ryanking8215
2014-07-25 10:37:47 +08:00
因为你有业务,不能修正系统时间,那么把定时把系统时间同步到rtc里去。
`hwclock -w`

但是不知道哪个时间是对的,建议还是使用ntp同步,大家都好
itsjoke
2014-07-25 10:37:50 +08:00
@Honwhy
兄台,业务原因不能使用时间同步
Honwhy
2014-07-25 10:44:46 +08:00
@itsjoke 哦哦,那你希望以哪个时间为主呢?是不是想修改BIOS时间呢?
dorentus
2014-07-25 10:48:24 +08:00
服务器使用的话,我推荐 ntpd。

ntpdate 每次运行是直接把时间与上游时间服务器同步的,假如相差太多的话,一次性更改太大,可能会影响一些对时间敏感的程序的运行,或者至少在各种日志里面会出现比较奇怪的时间。

ntpd 作为守护进程运行,会与上游时间服务器保持通讯,默认行为是尽量平滑地同步时间,感觉效果更好。

Linux 下面最著名的 ntpd 实现就是 http://www.ntp.org 自家的了,各发行版的软件库里面应该都有自带。

我现在用的是 http://www.openntpd.org 的 OpenNTPD(Debian 8 里面官方软件库里还没有,我装的是 Debian unstable 里的);不用 ntpd 的原因主要是 ntpd 默认会监听一个端口,关不掉,只能在软件配置里面设置了禁止外来的查询,看着烦……
gyteng
2014-07-25 10:51:58 +08:00
同样遇到这个问题,不能联网的机器在机房若干年后时间就差很远了
itsjoke
2014-07-25 10:54:48 +08:00
@Honwhy
@ryanking8215
@dorentus
不是想修改Bios时间.
程序都是读的系统时间吧?初次安装的机器可以同步时间再加入到业务中去
加入之后再同步的话就会导致崩溃,业务非常依赖时间.
刚才查了下资料,貌似还没有好的解决方法
http://tldp.org/HOWTO/Clock-2.html
mengzhuo
2014-07-25 11:00:46 +08:00
ntpd必须的啊

然后相关服务程序全部用UTC时间,这样就什么问题都没有了
aliuwr
2014-07-25 11:03:52 +08:00
ntpdate 是直接跳到当前时间, 可能对业务造成影响, 不推荐.
而 ntpd 可以在误差小于 600s 时是极小粒度的调整(默认约 0.5ms/s), 所以一般不会有什么问题. 更多信息可以看 man ntpd.
ryanking8215
2014-07-25 11:07:26 +08:00
@itsjoke 系统启动时从rtc读取系统时间,然后os自己维护系统时间,和rtc就没关系了,你说业务不能同步时间,是指不能修改时间吧,但同步到rtc里去应该没影响阿。

只不过这个时间是以你的系统时间为基准,所以和实际时间不一定准了。
yangqi
2014-07-25 11:07:55 +08:00
@itsjoke 可以内网同步的, 只要一台机器或者路由和外面同步就行了.
decken
2014-07-25 11:13:21 +08:00
@gyteng 如果能连内网的话 用htpdate获取内网开了http服务的机器的时间,很好用
itsjoke
2014-07-25 11:34:51 +08:00
@ryanking8215
抱歉,可能是我没有表达清楚...
客户的业务依赖于系统的时间,如果系统时间不准的话,用户会经常反映
但是架构上又不能修改时间,修改时间的话会导致集群崩溃
sumu
2014-07-25 11:40:39 +08:00
但是架构上又不能修改时间,修改时间的话会导致集群崩溃

哪有这样的架构设计,这不是自己给自己添堵么?只要SVR超过一台,那就必须有一个ntp server,自建或者用通用的服务都ok,其他机器从时间服务器得到时间,保证所有ip时间一致。没其他更好的办法了
yangqi
2014-07-25 11:45:27 +08:00
@itsjoke 这样就只有ntpd一个办法了, 可以内网同步, 提高polling的频率, 每次只是修改很小的偏差, 应用里是看不出差别的, 还可以保证内网的所有机器时间同步
dorentus
2014-07-25 11:49:19 +08:00
@itsjoke
所以就用 ntpd 啊,它是在后台极小粒度慢慢调整时间的,比如你的时钟慢了 10 s,它可能会花上几个小时的时间,每次调零点几毫秒,来把时间调成同步的(具体策略应该可以设置)。正常的服务器集群时间同步都是用这个的吧,再精细的需求估计就要给每台机器配个独立的原子钟了 :)
tititake
2014-07-25 11:55:41 +08:00
@itsjoke 集群时间也要同步的吧?
rrfeng
2014-07-25 12:07:19 +08:00
难道 ntp 不是服务器标配?
fclql
2014-07-25 12:08:18 +08:00
业务原因,我猜是不能上网
rainysia
2014-07-25 12:39:39 +08:00
debian+ntpd啊. 这个应该是标配吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/124413

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX