计算机‎ > ‎软件‎ > ‎Linux‎ > ‎

魔改 Buffalo LS-WXL/E NAS 的时间

发布者:guo rue,发布时间:2015年9月7日 上午12:11   [ 更新时间:2015年9月7日 上午12:14 ]
硬件时间的运行是靠 BIOS 电池来维持,而系统时间是用 CPU tick 来维持的。
在系统开机的时候,会自动从 BIOS 中取得硬件时间,设置为系统时间。
Linux下,默认情况下,系统时间和硬件时间,并不会自动同步。在Linux运行过程中,系统时间和硬件时间以异步的方式运行,互不干扰。

由于坑跌的 LS-WXL/E 是没有电池的,关机之后时间就停止运行了。所以再次开机之后。

登陆进 NAS 服务器
ssh -p 22 nong@192.168.2.11

首要的事情就是手动设置系统时间了。
设置当前时间,只有 root 权限才能设置,其他只能查看。
sudo date -s 

设置成 20080523,但是会把具体时间设置成空 00:00:00
sudo date -s 20080523 
设置具体时间,不会对日期做更改
sudo date -s 01:01:01 
这样可以设置全部时间
sudo date -s "01:01:01 20080523"
这样可以设置全部时间
sudo date -s "20080523 01:01:01"
这样可以设置全部时间
sudo date -s "01:01:01 2008-05-23" 
这样可以设置全部时间
sudo date -s "2008-05-23 01:01:01"

设置好后,可以用命令察看一下
date
Mon Sep  7 08:19:02 CST 2015

注意,这里说的是系统时间,是由 Linux 操作系统维护的。在系统启动时,Linux 操作系统将时间从 CMOS 中读到系统时间变量中,以后修改时间通过修改系统时间实现。为了保持系统时间与 CMOS 时间的一致性,Linux 每隔一段时间会将系统时间写入 CMOS。由于该同步是每隔一段时间(大约是11分钟)进行的,在我们执行 date -s 后,如果马上重起机器,修改时间就有可能没有被写入CMOS,这就是问题的原因。

如果要确保修改生效可以执行如下命令。

以系统时间为基准,修改硬件时间
sys(系统时间)to(写到)hc(Hard Clock)
sudo hwclock -w
sudo hwclock --systohc

当然可以反过来,以硬件时间为基准,修改系统时间
sudo hwclock -s
sudo hwclock --hctosys

查看硬件时间 可以是用 
hwclock
hwclock -r
hwclock --show


为了避免主机时间因为长期运作下所导致的时间偏差,进行时间同步(synchronize)的工作是非常必要的。Linux 系统下,一般使用ntp服务器 来同步不同机器的时间。一台机器,可以同时是 ntp服务器 和 ntp客户机。在网络中,推荐使用像 DNS服务器 一样分层的时间服务器来同步时间。

同步时间,可以使用ntpdate命令,也可以使用ntpd服务。

手动输入时间很麻烦,可以通过网络同步系统时间 ntpdate [-nv] [NTP IP/hostname]
sudo ntpdate cn.pool.ntp.org
或者
sudo ntpdate 192.168.2.31
7 Sep 08:18:50 ntpdate[18966]: step time server 202.112.29.82 offset 323518936.

但这样的同步,只是强制性的将系统时间设置为ntp服务器时间。如果cpu tick有问题,只是治标不治本。所以,一般配合 cron 命令,来进行定期同步设置。

比如,在 crontab 中添加:
0 12 * * * * /usr/sbin/ntpdate 192.168.0.1

这样,会在每天的12点整,同步一次时间。ntp服务器为192.168.0.1。

使用ntpd服务,要好于ntpdate加cron的组合。因为,ntpdate同步时间,会造成时间的跳跃,对一些依赖时间的程序和服务会造成影响。比 如sleep,timer等。而且,ntpd服务可以在修正时间的同时,修正cpu tick。理想的做法为,在开机的时候,使用ntpdate强制同步时间,在其他时候使用ntpd服务来同步时间。

要注意的是,ntpd 有一个自我保护设置: 如果本机与上源时间相差太大, ntpd 不运行. 所以新设置的时间服务器一定要先 ntpdate 从上源取得时间初值, 然后启动 ntpd服务。ntpd服务 运行后, 先是每64秒与上源服务器同步一次, 根据每次同步时测得的误差值经复杂计算逐步调整自己的时间, 随着误差减小, 逐步增加同步的间隔. 每次跳动, 都会重复这个调整的过程。

关于 ntpd 怎么设置稍后继续贴上来。