suse linux 10系统时间跑偏问题解析

在suse linux 10上部署WAS应用和搭建ORACLE RAC集群时,经常会碰到因系统时间不准而导致WAS不正常和RAC节点宕机问题,解决系统时间跑偏的问题,大家会很自然的想到NTP和CRONTAB。下面针对这个问题来具体说说suse linux 10系统时间跑偏问题。

一、现象
        经过观察,你会发现在安装系统后第一次设置正确系统时间后,没设置定时校准的情况下,它的系统时间一小时会偏差有4-6分钟左右,一天下来通常会偏差50分钟左右。这在生产环境下肯定会出问题。

二、NTP设置
        如果你能直接连接到外部时间源或一个内部的时间源服务器,你可以在其中的一台suse linux 10上设置NTP服务器,让其他suse linux 10定时同步这台NTP服务器就行。
#vi  /etc/ntp.conf

## Radio and modem clocks by convention have addresses in the 
## form 127.127.t.u, where t is the clock type and u is a unit 
## number in the range 0-3. 
##
## Most of these clocks require support in the form of a 
## serial port or special bus peripheral. The particular  
## device is normally specified by adding a soft link 
## /dev/device-u to the particular hardware device involved, 
## where u correspond to the unit number above. 
## 
## Generic DCF77 clock on serial port (Conrad DCF77)
## Address:     127.127.8.u
## Serial Port: /dev/refclock-u
##  
## (create soft link /dev/refclock-0 to the particular ttyS?)
##
# server 127.127.8.0 mode 5 prefer

##
## Undisciplined Local Clock. This is a fake driver intended for backup
## and when no outside source of synchronized time is available.
##
server 127.127.1.0              # local clock (LCL)
fudge  127.127.1.0 stratum 10   # LCL is unsynchronized
##
## Outside source of synchronized time
##
## server xx.xx.xx.xx           # IP address of server

server  10.7.0.81     #手工设置时间源服务器

##
## Miscellaneous stuff
##

driftfile /var/lib/ntp/drift/ntp.drift # path for drift file

logfile   /var/log/ntp          # alternate log file
# logconfig =syncstatus + sysevents
# logconfig =all

# statsdir /tmp/                # directory for statistics files
# filegen peerstats  file peerstats  type day enable
# filegen loopstats  file loopstats  type day enable
# filegen clockstats file clockstats type day enable

#
# Authentication stuff
#
# keys /etc/ntp.keys            # path for keys file
# trustedkey 1 2 3 4 5 6 14 15  # define trusted keys
# requestkey 15                 # key (7) for accessing server variables
# controlkey 15                 # key (6) for accessing server variables

然后你可以使用:

#hwclock  -r                #查看硬件时间

#hwclock --systohc     #把硬件时间赋给系统时间

在其他suse linux 10上设置CRONTAB定时校准
#crontab -e   加上下面一句
*/15 * * * *  /usr/sbin/ntpdate 10.7.0.81;/sbin/hwclock -w
意思是每15分钟同步一次并将时间写入硬件时钟

三、直接设置CRONTAB

     如果有时间源服务器且suse linux 10服务器都能正常PING通时间源服务器,你可以在所有的suse linux 10服务器上直接设置CRONTAB来定时同步时间源服务器。
具体方法同上
#crontab -e   加上下面一句
*/15 * * * *  /usr/sbin/ntpdate 10.7.0.81;/sbin/hwclock -w
意思是每15分钟同步一次并将时间写入硬件时钟
如果你想看到每天具体的输出结果,可以加一个输出日志ntprizhi.txt来分析
*/15 * * * *  /usr/sbin/ntpdate 10.7.0.81>>/tmp/ntprizhi.txt;/sbin/hwclock -w
当然也可以查看系统下的日志,如果你是root用户,直接查看
/var/mail/root就可以了,形式如下
Subject: Cron <root@tyzssq> /usr/sbin/ntpdate 10.7.0.81;/sbin/hwclock -w
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <20121126103001.076FF2090E@tyzssq.site>
Date: Tue, 26 Nov 2012 18:30:01 +0800 (CST)

26 Nov 18:29:59 ntpdate[6917]: step time server 10.7.0.81 offset -1.361968 sec

四、系统内核参数修改
        即便设置了每15分钟同步,有时你发现仍然会出现时间跑偏的问题。这时你可以缩短同步的时间,比如设置成每5分钟甚至每1分钟同步一次,但如果需要同步的suse linux 10服务器
比较多的情况下对时间源就会造成压力。这时你需要考虑让suse linux 10服务器自己把时间跑准,那么方法是修改系统内核参数。
我们先看一下修改前的系统内核参数
# cat /boot/grub/menu.lst
# Modified by YaST2. Last modification on Thu Nov  3 08:00:47 UTC 2011
default 0
timeout 8
##YaST - generic_mbr
gfxmenu (hd0,1)/boot/message
##YaST - activate

###Don't change this comment - YaST2 identifier: Original name: linux###
title SUSE Linux Enterprise Server 10 SP2
    root (hd0,1)
    kernel /boot/vmlinuz-2.6.16.60-0.21-smp root=/dev/hda2    resume=/dev/hda1 splash=silent showopts hda=noprobe hdb=noprobe 
    initrd /boot/initrd-2.6.16.60-0.21-smp

###Don't change this comment - YaST2 identifier: Original name: floppy###
title Floppy
    rootnoverify (hd0)
    chainloader (fd0)+1

###Don't change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe -- SUSE Linux Enterprise Server 10 SP2
    root (hd0,1)
    kernel /boot/vmlinuz-2.6.16.60-0.21-smp root=/dev/hda2 showopts ide=nodma apm=off acpi=off noresume edd=off 3 hda=noprobe hdb=noprobe 
    initrd /boot/initrd-2.6.16.60-0.21-smp
You have new mail in /var/mail/root

修改后的文件,注意红色语句部分

# cat /boot/grub/menu.lst
# Modified by YaST2. Last modification on Thu Nov  3 08:00:47 UTC 2011
default 0
timeout 8
##YaST - generic_mbr
gfxmenu (hd0,1)/boot/message
##YaST - activate

###Don't change this comment - YaST2 identifier: Original name: linux###
title SUSE Linux Enterprise Server 10 SP2
    root (hd0,1)
    kernel /boot/vmlinuz-2.6.16.60-0.21-smp root=/dev/hda2    resume=/dev/hda1 splash=silent showopts hda=noprobe hdb=noprobe clock=pmtmr
    initrd /boot/initrd-2.6.16.60-0.21-smp

###Don't change this comment - YaST2 identifier: Original name: floppy###
title Floppy
    rootnoverify (hd0)
    chainloader (fd0)+1

###Don't change this comment - YaST2 identifier: Original name: failsafe###
title Failsafe -- SUSE Linux Enterprise Server 10 SP2
    root (hd0,1)
    kernel /boot/vmlinuz-2.6.16.60-0.21-smp root=/dev/hda2 showopts ide=nodma apm=off acpi=off noresume edd=off 3 hda=noprobe hdb=noprobe clock=pmtmr
    initrd /boot/initrd-2.6.16.60-0.21-smp
You have new mail in /var/mail/root
 

注意红色的语句其后面加上了蓝色部分clock=pmtmr

当该参数设置后,可以在合适时间重启服务器让参数生效,经过测试和观察,系统时间不再跑偏.
 

时间加快的原理探究:
相对于SLES9的2.4内核,SLES10中的2.6内核改变了时钟嘀嗒的中断数量,从100个/每秒到1000个/每秒。在双处理器的2.6内核,甚至可以达到每秒3000个。由于LINUX内核产生中断的能力差别,一些时间嘀嗒可能会被忽略。这会导致许多额外的嘀嗒来校正被忽略的嘀嗒,从而带来时间加快的副作用。当然LINUX本身会有算法来校正和解决系统中的这个问题。

时间: 2024-10-31 18:48:41

suse linux 10系统时间跑偏问题解析的相关文章

Suse Linux 10中MySql安装与配置步骤_Mysql

安装环境:操作系统:suse Linux 10 数据库:MySQL 5.0.22 希望能认识更多高手,互相学习讨论技术! 首先发泄一下再这,网上看了N多安装mysql的文章,大多大同小异,都不能很好的安装mysql:多多少少都有问题:以个人之见大多为一份原文,拷贝到各自的博客或一些网上,纯属盗窃啊!上周末开始筹划安装suse以及mysql,一直到今天下午才终于到了show databases:太晕了!现在我将我安装mysql的每一步骤都放在这,以共需者查看,也以防日后自己再次观摩: 注意:在装s

linux 修改系统时间 

linux 修改系统时间 oracle查询当前时间命令 2008-07-01 20:29 1.Linux 操作系统 下查看和修改系统时间 [root@as4forora ~]# date -s 07/01/2008二 7月 1 00:00:00 CST 2008[root@as4forora ~]# date -s 20:06:00二 7月 1 20:06:00 CST 2008[root@as4forora ~]# clock -w [root@as4forora ~]# date二 7月 1

Suse Linux 10 MySql随机启动

Suse Linux 10 MySql随机启动 SUSE 10系统,系统已经安装过mysql,但是路径不是在/usr/local 下面,执行service mysql start 能正常启动  www.bitsCN.com 在/etc/init.d/下面有mysql文件 当时执行的命令是下面即得到系统自动启动mysql cd /etc/init.d chmod 755 /etc/init.d/mysql chkconfig --add mysql 这样都可以了. 然后可以启动下,service

SUSE Linux 10中如何配置裸设备

裸设备,是没有经过格式化的分区或磁盘,也叫裸分区(原始分区),不被Unix通过文件系统来读取的特殊字符设备.它由应用程序负责对它进行读写操作.不经过文件系统的缓冲,是不被操作系统直接管理的设备.由于跨过操作系统管理,使得I/O效率更高.在基于SUSE Linux 10上安装Oracle 10g RAC的话,由于Oracle 10g 不支持将ocr与votingdisk 存放在ASM 磁盘中,因此,依然需要为其使用裸设备方式.SUSE Linux裸设备的配置与其他的Linux稍有差异,下面将具体描

SUSE Linux 10 配置裸设备(raw devices)

      裸设备,是没有经过格式化的分区或磁盘,也叫裸分区(原始分区),不被Unix通过文件系统来读取的特殊字符设备.它由应用程序负责对它进行读写操作.不经过文件系统的缓冲,是不被操作系统直接管理的设备.由于跨过操作系统管理,使得I/O效率更高.在基于SUSE Linux 10上安装Oracle 10g RAC的话,由于Oracle 10g 不支持将ocr与votingdisk 存放在ASM 磁盘中,因此,依然需要为其使用裸设备方式.SUSE Linux裸设备的配置与其他的Linux稍有差异,

如何在SUSE Linux 10上安装Oracle:使用DBCA创建数据库

如何在SUSE Linux 10上安装Oracle:使用DBCA创建数据库的详细步骤说明 oracle@linuxsuse:~> dbca

如何在SUSE Linux 10上安装Oracle:创建数据库监听

如何在SUSE Linux 10上安装Oracle:创建数据库监听的详细步骤说明 $ORACLE_HOME/bin/netcaoracle@linuxsuse:~> netca

Linux修改系统时间

修改linux的时间可以使用date指令 修改日期: 时间设定成2009年5月10日的命令如下: #date -s 05/10/2009 修改时间: 将系统时间设定成上午10点18分0秒的命令如下. #date -s 10:18:00 修改时区: 找到相应的时区文件 /usr/share/zoneinfo/Asia/Shanghai替换当前的/etc/localtime. 修改/etc/sysconfig/clock文件的内容为: ZONE="Asia/Shanghai" UTC=fa

Linux 设置系统时间和时区的方法

1 设置时间为22点54分54秒 date -s 22:54:54 2 设置日期为2015年12月13日 date -s 12/13/15 3.设置时区 tzselect 然后选择亚洲 输入5回车 然后再选择中国 输入9回车 再选择east China – Beijing, Guangdong, Shanghai, etc. 输入1回车 最后输入命令 TZ='Asia/Shanghai'; export TZ 才会使得时区生效 修改设置时区 方法(1) tzselect 方法(2) 仅限于Red