25 março, 2007
Mais sobre a data e VMware
No último artigo deixei em aberto qual seria a melhor solução para actualizar a data de uma máquina VMware que, já vimos, tem uma resolução de tempo péssima.
Vejamos o resultado:
Ando há semanas a tentar ver qual a maneira mais simples de actualizar uma máquina virtual: na dúvida se seria o ntpd (que não se aguenta bem, dado o drift brutal), se o ntpdate chamado de 5 em 5 minutos... e chego à conclusão que basta usar o relógio RTC da máquina virtual!
C:\>net time /querysntp
The current SNTP value is: time.windows.com,0x1
The command completed successfully.
- hwclock --systohc
- rm /etc/adjtime
- hwclock --systohc --debug
Vejamos o resultado:
- [root@fuji log]# hwclock --systohc --debug
- hwclock 2.4c/util-linux-2.11f
- hwclock: Open of /dev/misc/rtc failed, errno=2: No such file or directory.
- Using direct I/O instructions to ISA clock.
- Last drift adjustment done at 1174827422 seconds after 1969
- Last calibration done at 1174827422 seconds after 1969
- Hardware clock is on local time
- Assuming hardware clock is kept in local time.
- Waiting for clock tick...
- ...got clock tick
- Time read from Hardware Clock: 2007/03/25 13:57:44
- Hw clock time : 2007/03/25 13:57:44 = 1174827464 seconds since 1969
- Time elapsed since reference time has been 0.503192 seconds.
- Delaying further to reach the next full second.
- Setting Hardware Clock to 13:57:44 = 1174827464 seconds since 1969
- Not adjusting drift factor because it has been less than a day since the last calibration.
- cock:~# hwclock --debug
- hwclock from util-linux-2.12p
- Using /dev/rtc interface to clock.
- Last drift adjustment done at 1174828004 seconds after 1969
- Last calibration done at 1174828004 seconds after 1969
- Hardware clock is on local time
- Assuming hardware clock is kept in local time.
- Waiting for clock tick...
- ...got clock tick
- Time read from Hardware Clock: 2007/03/25 14:08:02
- Hw clock time : 2007/03/25 14:08:02 = 1174828082 seconds since 1969
- Sun 25 Mar 2007 02:08:02 PM WEST -0.672650 seconds
- cock:~# hwclock --debug | grep ^Hw.clock.time.:
- Hw clock time : 2007/03/25 14:08:28 = 1174828108 seconds since 1969
Uma nota breve: chateia-me um pouco o facto do resultado do comando hwclock dar a hora em AM/PM.No entanto, depois de actualizar o relógio da máquina cock (que é VMware) usando "ntpdate 10.0.0.1" (onde 10.0.0.1 é o servidor ntp que tenho local), depois de tudo limpo, e passado uns cinco minutos:
Por isso, prefiro usar:
% hwclock --debug | grep ^Hw.clock.time.: | sed 's/[A-Za-z: ]*\([0-9/: ]*\).*/\1/'
2007/03/25 14:10:59
Ou:
% hwclock --debug | grep ^Hw.clock.time.: | awk '{print $5,$6}'
cock:~# hwclock --debug | grep ^Hw.clock.time.: | awk '{print $5,$6}'Aqui sim há algo que me surpreendeu realmente. A data a verde está síncrona com a data actual, ao passo que a data a vermelho está realmente atrasada. No ficheiro de /etc/adjtime também não há nada de especial (o drift-time, que é o primeiro parâmetro, está a zero, porque não passou um dia).
2007/03/25 14:17:59
cock:~# date
Sun Mar 25 14:13:06 WEST 2007
Ando há semanas a tentar ver qual a maneira mais simples de actualizar uma máquina virtual: na dúvida se seria o ntpd (que não se aguenta bem, dado o drift brutal), se o ntpdate chamado de 5 em 5 minutos... e chego à conclusão que basta usar o relógio RTC da máquina virtual!
C:\>net time /querysntp
The current SNTP value is: time.windows.com,0x1
The command completed successfully.
