[转]vmware中linux系统时间变慢的解决
来源: ChinaUnix博客 日期: 2009.12.01 08:37 (共有条评论) 我要评论
环境:vmware5.5 linux AS4
安装好vmware后发现vmware的时间会越走越慢,是什么原因呢,以下是摘自
http://blog.seety.org/everydaywork/2005/5/22/332/
的介绍:
Linux 2.6核心里把系统计时器的频率加高到1000 Hz ,VMware没办法真的每隔1ms就报一次讯号给guestOS,所以guestOS里的Linux 2.6无法确实接到计时器的讯号。本来这也不应该造成问题,不过2.6核心处理这个"tick loss"的程式有问题,以致于guestOS里的Linux 2.6系统时间走一秒会慢一秒;外面过了两秒里面只过了一秒。
可以通过更改计时器频率的方法来处理:
include/asm-i386/param.h
#define HZ 1000 /* Internal kernel timer frequency */
改成
#define HZ 100 /* Internal kernel timer frequency */
意思就是让计时器慢到 100Hz,虽然这样可行,但要重新编译内核太麻烦了。那有没其他办法呢,答案是肯定的。
方法一:安装Vmware tools
安装完成vmware tools后运行 vmware-toolbox,把Options中的time synchronization....钩选上。这样VMWare Tool后台程序就会每三分钟与宿主主机同步更新一次时间。试验中发现vmware-tolls 只会在虚拟机慢于主机的时候将虚拟机时间同步到主机,暂时未发现怎么设置使虚拟机时间过快的时候也同步。
vmware tools的安装,参考我的另一篇笔记:
http://hi.baidu.com/archieyao/blog/item/498848adab17290a4a36d61c.html
据网上的介绍,对于grub方式启动,在kernel参数里加入 clock=pit nosmp noapic nolapic也可以解决部分问题,但我试验过好像并没什么优化,如果不进行时间同步,虚拟机上的时间依然走得像醉汉,可能我的内核是2.6的原因吧。
方法二、连接到时间服务器同步时间,前提是能联网。
linux下使用ntpdaten连接时间服务器进行时间同步,ntpdate命令的语法很简单,但必须用root身份运行它。你可以在命令行中指定一个或者多个时间服务器。
命令格式:
#ntpdate 服务器地址
到那找时间服务器呢?Windows XP中有几个现成的时间服务器可以使用,何不就地取材呢^-^ ,打开xp控制面版->日期和时间->internet时间,服务器列表里的服务器都可以使用:
#ntpdate time.windows.com time-a.nist.gov time-b.nist.gov time-nw.nist.gov
还可以使用这里面的时间服务器:Internet 上可用的“简单网络时间协议”时间服务器列表
http://www.mycuc.com/Article/wenzhai/pcwz/200704/634.htm
为了保证时间精确同步,还需要定时运行ntpdate来同步时间,通过crontab来实现定时调度。例如设定每分钟同步一次,添加进系统任务调度中,在/etc/crontab里面添加以下句子:
*/1 * * * * ntpdate time.windows.com time-a.nist.gov time-b.nist.gov time-nw.nist.gov
重启系统任务调度服务:
#service crond restart
等候1分钟左右检查时间同步是否起作用。
--------------------------------------------------------------------------------------------------------------
关于时间过快或过慢的vmware 官方文档:
http://www.vmware.com/pdf/vmware_timekeeping.pdf
Clock in a Linux Guest Runs More Slowly or Quickly Than Real Time
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1420