Linux 时钟分为系统时钟(System Clock)和硬件(Real Time Clock ,简称RTC)时钟( 硬件时钟从根本上讲是CMOS时钟)。系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在BIOS中进行设置。当Linux 启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟就会独立于硬件运作。
1、在 vCenter Server Appliance 中配置时间同步设置:(与NTP服务器168.192.11.63同步)
启用周期性时间同步时,VMware Tools 将客户机操作系统的时间设置为与主机的时间相同( 运行命令启用 VMware Tools 时间同步: timesync.set --mode host), 执行时间同步之后, VMware Tools 会 每分钟检查一次,以确定客户机操作系统和主机上的时钟是否仍然匹配。如果不匹配,则将同步客户机操作系统上的时钟以与主机上的时钟匹配。本机时间同步软件(例如网络时间协议 (NTP))通常比 VMware Tools 周期性时间同步更准确,因此成为用户的首选。您可以在 vCenter Server Appliance 中仅使用一种形式的周期性时间同步。如果您决定使用本机时间同步软件,则会禁用 vCenter Server Appliance VMware Tools 周期性时间同步,反之亦然。
以下步骤 设置 vCenter Server Appliance 使用基于 NTP 的时间同步:
需ssh 168.192.11.248登录到VCSA操作: 通过运行 ntp.server.add 命令将 NTP 服务器添加到 vCenter Server Appliance 配置中:ntp.server.add --servers 168.192.11.63
ntp.get //显示Status:Down Servers:168.192.11.63
timesync.set --mode NTP // 运行该命令以启用基于 NTP 的时间同步
timesync.get // 运行该命令,返回“Mode NTP”,确认已成功应用 NTP 同步
ntp.get // 命令返回配置Status:Up Servers:168.192.11.63( NTP 同步的服务器的空格分隔列表)。如果已启用 NTP 同步,此命令返回 NTP 配置处于启用状态。如果已禁用 NTP 同步,此命令返回 NTP 配置处于禁用状态。
2、 ESXi4( 168.192.11.246:VMkernel ESXi4 6.0.0 #1 SMP Release build-2494585 Feb 5 2015 19:07:22 x86_64 x86_64 x86_64 ESXi) 查看系统时钟:使用命令esxcli system time get或者 date,查看硬件时钟:esxcli hardware clock get。
! ESXi5/6/7等系统内固定使用UTC时间,而且将此时间(不可配置)写入到BIOS时间。启动时读取BIOS时间,作为系统时间。--->测试OK,但是得等几分钟才自动写入到BIOS。
在 ESXi4上新启动或重启虚拟机,虚拟机RHEL6.5系统的时间与 ESXi4主机同步一致。在 虚拟机RHEL6.5系统修改时间,并写入BIOS硬件时间,不会改变 ESXi4主机的时间。
https://www.cnblogs.com/ncepu/p/13695093.html (hwclock命令参数及用法详解--Linux显示/设置硬件时钟命令)
hwclock --systohc 将系统时间写入BIOS( hwclock --hctosys使用BIOS时间更新系统时间)
hwclock --show 显示BIOS时间已修改为与系统时间一致
[root@FDP-1 18]# hwclock
2021年02月18日 星期四 13时15分08秒 -0.922517 seconds (指误差,权威解释如下:)
Display on Standard Output the value of the Hardware Clock, which is described by these arguments:
referenceTime: The system time at which this program started (so,the moment at which the user wanted to know the time)
readTime: The system time at which we read the clock.
float const displayDelay = time_diff(readTime, referenceTime);
printf("%s %s %.6f seconds %s\n",
ctime2(hclockTime),
synchronized ? "" : "+", -(displayDelay),
brokenTime.tm_isdst ? tzname[1] : tzname[0]);
在ESXi4执行date查看:时间未更新,即修改虚拟机的BIOS硬件时间不会更新 ESXi4的系统时间。
*:虚拟机一般要安装vmtools,可以让虚拟机和主机的时间进行同步,所以只需要更改主机时间就可以了,虚拟机的时间会自动同步。
图 1
- VMware Tools
管理虚拟机的电源控制并运行 VMware Tools 脚本。还可以在关闭电源再打开过程中升级 VMware Tools,并可将客户机时间与主机时间同步。—— 当勾选“同步客户机时间与主机时间”时,在客户机RHEL6.5系统时间在运行中保持与 主机时间同步, 经测试,同步不会跳变,会逐步缩小时间偏差,直到保持一致。不勾选,时间不会同步。所以当 客户机RHEL6.5例如FSDP1开启NTP服务时,应该不勾选 “同步客户机时间与主机时间”,或者 勾选“同步客户机时间与主机时间”后,关闭 FSDP1的NTP服务。
3、修改
ESXi4主机系统时间的方法。
1)ssh登录 ESXi4系统,date命令修改时间不行![root@ESXi4:~] date -s 02:20:50
——date: Setting date not supported; use < esxcli system time set>
2) ESXi4主机是不能用date命令来设置时间的,需要使用esxcli命令:
esxcli system time set -H 16 -m 01 -s 10 // 更改esxi系统时间 Set the system clock time
-d|--day=
-H|--hour=
-m|--min=
-M|--month=
-s|--sec=
-y|--year=
esxcli system time get //Disply the current system time 显示当前系统时钟
esxcli hardware clock get //Disply the current hardware clock time 显示当前硬件 RTC时钟
RHEL6.5系统:hwclock --systohc 将系统时间写入bios,但是esxi没有类似命令!需使用esxcli hardware clock set -H 16 -m 01 -s 10设定(实际ESXi5/6/7会自动将系统时钟写入硬件时钟)。
3) 在vSphere Web Client中 ESXi主机的“时间配置”中修改时间,即修改 ESXi的 系统时钟,并自动写入硬件时钟——OK!
图 2
4、综上,只需按《图2》设置每台ESXi4开启NTP服务与GPS服务器(11.63)同步系统时钟即可,ESXi4会自动将系统时钟写入ProLiant BL460c Gen9服务器的硬件时钟,所以即使重启ESXi4时钟也OK,然后按《图1》通过vmtools设置,可以让虚拟机和主机的时间进行同步,这样在ESXi4上新启动或重启虚拟机的时钟也OK。
5、 WINDOWS系统自动同步硬件时钟
Windows server 2012 操作系统,在服务器没有进行重启、也没有进行ntp同步,系统自己去同步了硬件时钟。
—— 系统自动同步硬件时钟,是为了将时间更改储存给硬件,以便下次启动时即使用其自动同步的时间。在使用默认时间同步服务器(不进行任何更改)的情况下,理论上,其同步的时间一定是准确的。出现系统时间不准确的原因,可能是您错误的设置了时区造成的,将时区更改,将会自动转换时间。
6、hwclock --set --date=<日期与时间> 设定硬件时钟,重启系统后在BIOS中不是你设定的值?
——原来是因为不管你改没改硬件时间, 系统在关机的时候都会将当前的系统时间写入BIOS(之前的hwclock白改……),所以说你用hwclock --set --date="2021-2-13"确实改了硬件时间,但是在关机的时候,这个时间又被当前系统时间给覆盖了。
https://blog.csdn.net/ArtCodes/article/details/4032287
BIOS中没有时区的概念,操作系统开机从BIOS读写时间有两种情况:
时间处理方法1. 存储 UTC的秒数那么整个系统的开关机过程将为:
关机:CST(时区变化,加减相应的小时)->UTC->bios-------------在这种情况下,在bios中看到的就是UTC时间(由于bios中没有时区的概念,所以你要像看懂这个时间代表的是什么地方的时间,一定要明白它由谁存的数,还有这个数原本代表了什么意义,如是那个时区的)
开机:bios->UTC->CST(时区变化)
时间处理方法2. 存储CST的秒数那么整个系统的开关机过程将为:( 经过实际测试发现, 现在操作系统的默认存储方法都是采用的是第二种方法,就是直接存储 CST 时间)
关机:CST(不用时区变化了,之间化为秒数后)->bios-------------这个时候你在bios中看到的时间就是有时区的
开机:bios->CST
7、在实验室环境,比如修改FSDP1的系统时间(date -s),重启系统,虽然 系统在关机的时候都会将当前的系统时间写入BIOS( 修改虚拟机的BIOS硬件时间不会更新 ESXi4的系统时间), 但是不像物理服务器, ESXi上虚拟机的BIOS没有电池,所以系统再次启动时, ESXi系统的UTC时间,会先写入到BIOS, FSDP1启动时读取BIOS时间,作为系统时间。所以关键是 需按《图2》设置每台ESXi4开启NTP服务与GPS服务器(11.63)同步系统时钟,否则虚拟机重启时钟不对,偏差过大,也会导致与 NTP服务器(11.63)对时失效。