On Fri, 18 Jan 2002, Tony Stocker wrote:
> Okay, the host node is set to UTC. We keep it synced with local time
> servers. However when I run /usr/lib/beoboot/bin/bdate to update the slave
> nodes' time it is setting them to Eastern time. What do I have to do to get
> the slave nodes to be set to UTC, and to keep their time synced with the
> host node?
I suspect you are misinterpreting some aspect of what is happening.
The timezone setting is stored in /etc/localzone, and is used only by
user level programs. It is independent of the kernel's clock, kept in
UTC/GMT. The "CMOS clock", a hardware device that keeps time when the
machine is powered off, may be set to either localtime or UTC.
'bdate' is a tiny program that copies UTC time from kernel to kernel.
It is run in the node_up script to synchronize the slave clock to the master.
It's a wonderful illustration of how simple cluster tools should be.
main(int argc, char **argv)
{
int node = atoi(argv[1]);
struct timeval master_time;
gettimeofday(&master_time, NULL); /* Get time on master. */
_bproc_move(node, BPROC_DUMP_ALL); /* Move to slave node. */
settimeofday(&master_time,NULL); /* Set time on slave.
return 0;
}
[[ Error checking omitted for clarity. ]]
The apparent timezone is unrelated to the kernel's idea of what the
current UTC time is. Each node has it's own copy of /etc/localtime
copied from the master in the node_up script. If you are having
timezone problems, verify that /etc/localzone is set correctly on the
master.
BTW, I'm personally offended by the need for /etc/localtime. Yes,
actually insulted by its very existence. The /etc/* files have long
been a configuration and maintenance issue for clusters. We have put a
lot of thought into eliminating most of the /etc files. But 'localzone'
is stubbornly required by the C library and it just _has_ to be there.
Scyld Beowulf only currently requires only three /etc files on the
compute nodes
/etc/mtab
Created by 'mount', this records the mounted file systems for 'df'.
Someday it will be replaced by /proc/mtab, and thus will never be
out of sync with the kernel.
/etc/nsswitch.conf
The Name Server Switch Configuration file. This configures how
name lookups ("Directory Services") are done. The usual settings
are "files", "NIS" or "DNS" (for hostnames). We use this to
specify Beowulf specific methods for user info, host name,
netgroup, and "ethers" information.
Someday this could be optionally replaced by an environment variable.
/etc/localzone
The static configuration for the local timezone e.g. Eastern
Standard Time. This really should be part of the NSSwitch system.
That way Beowulf users could eliminate the final configuration file.
Doing this would be useful for other users as well. A new
mechanism could be developed to allow implementing per-user,
per-group or per-tty timezone settings. After all, if you are
grid user near Chicago using machine in both NM and Livermore it
would nice to have consistent time-stamps on the results.
Donald Becker becker at scyld.com
Scyld Computing Corporation http://www.scyld.com
410 Severn Ave. Suite 210 Second Generation Beowulf Clusters
Annapolis MD 21403 410-990-9993