Linux下的时钟设置和时区

openstack各个节点时钟同步,是安装的时候,重要步骤。我们所有服务器,在自动安装的时候,在脚本里都设置了自动同步,因为日志、计费等等,都会与时间有关。

一些概念:

1、硬件时钟(也叫BIOS时钟、CMOS时钟)

和CPU和系统无关的,单独由一个电池和晶振运行的时钟,即使关机也会走。

硬件时钟只有当系统启动的时候才会读取。

2、系统时间

Linux内核启动以后的时间,保持一个时间中断,用1970年1月1日00:00:00开始的秒数计数。这是我们平时看到时间。

3、时区

在某个时刻,世界各地的人,看到的时间都不同的。比如你同样适用gmail,大陆的人看到是 20:00,北美的人,可能是07:00.时刻还是一样的,但是由于时区不同,看到的时间显示就不同。

同样,我们机器里,可以系统时间一样的,但是不同的用户,可以设置不同的时区,看到的时间也不同。当然,系统本身有一个缺省时区。

在Redhat或者CentOS下,是使用  /etc/sysconfig/clock里的 ZONE="Asia/Shanghai" 选项配置的

4、UTC/GMT还是本地时间

系统启动的时候,使用/sbin/hwclock 从硬件时钟读取时间,关机的时候,会回写硬件时钟。

这里就有一个问题,读取和回写的时候,采用什么标准,是UTC还是本地时间?

一般情况下,都使用UTC/GMT,这样可以自动处理夏令时间(中国地方太大,已经作废)。

使用UTC的唯一坏处,是当你的计算机是多系统时,如果启动Windows,会导致时间不对。

5、时间同步

一般使用 ntp 协议进行同步,可以保持毫秒级的时差。

 

配置:

1、设置时区和是否UTC

1.1 Redhat或者CentOS下,一个配置文件

/etc/sysconfig/clock

ZONE=”Asia/Shanghai”
UTC=true
ARC=false

1.2 debian/ubuntu,有两个配置文件:

/etc/timezone
Asia/Shanghai
/etc/default/rcS

# assume that the BIOS clock is set to UTC time (recommended)
UTC=yes

1.3 设置用户个人的时区

可以使用环境变量 TZ, 比如,设置中国的东八区:

export TZ=PRC

变量的值,参见:

/usr/share/zoneinfo 目录

2、设置时钟同步

2.1 Redhat或者CentOS下

yum -y install ntpdate ntp

chkconfig  ntpdate on

2.2 debian/ubuntu

apt-get install -y ntpdate ntp

2.3 注意,如果系统时钟和标准原子时钟相差很大,ntp不会同步,第一次的时候,需要使用 ntpdate 进行手工同步一下:

ntpdate time.nist.gov

2.4 两个重要的ntp服务器

中国国家授时中心:

210.72.145.44

美国 nist 授时中心:

time.nist.gov

 

参考:

man clock

 

此条目发表在DEVOPS分类目录,贴了标签。将固定链接加入收藏夹。