Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 24 Jan 1999 15:50:09 -0800 (PST)
From:      Matthew Dillon <dillon@apollo.backplane.com>
To:        "Jordan K. Hubbard" <jkh@zippy.cdrom.com>
Cc:        John Birrell <jb@cimlogic.com.au>, peter@netplex.com.au (Peter Wemm), nsouch@teaser.fr, cvs-committers@FreeBSD.ORG
Subject:   Re: CVS totally broken on freefall 
Message-ID:  <199901242350.PAA05539@apollo.backplane.com>
References:   <1427.917220014@zippy.cdrom.com>

next in thread | previous in thread | raw e-mail | index | archive | help
:> This is a *VERY* good example of what not to do on a production system.
:> People should know better. Grrr.
:
:You know of a better way of upgrading machines?  If so, tell me now
:before we do hub. :)
:
:I don't have full spares for each, so I can't do the old roll-over
:from a hot spare trick.  If this were a commercial shop I'd have one
:or two super-spares in the corner, sure, but project funds are not
:quite so abundant. :)
:
:- Jordan

    Your machines probably aren't configured to make upgrades easy, but
    basically what you do is have a template machine.  This machine has
    the 'new' release fully installed, plus has a directory tree containing
    compatible old-release binaries and libraries.  You NFS export this
    machine's /, /usr, /old/root, and /old/usr 

    On each machine you wish to upgrade you do the following:

	(1) mount from the template machine:

		/old/root
		/old/usr
		/new/root
		/new/usr

	(2) re-ldconfig and re-path such that the only libraries you access
	    are from /old/usr/lib and the only binaries you run are from
	    /old/*.

	(3) Get rid of any unnecessary services.

	(4) start copying.  Write a script to copy the stuff from
	    /new/root and /new/usr to / and /usr

	    ( at BEST we basically had a static / and /usr and so we could
	    just mirror them minus our /conf/ME softlink which pointed to
	    /conf/<hostname> depending on which machine it was )

	    NOTE: you can't just copy binaries and libraries, not unless you
	    want to seg-fault the system ( sshd, tcsh, sh, etc... ).  Instead,
	    cp to filename.NEW and then mv -f ( rename over ).

	    You probably have major customizations in / and /usr for each
	    of your machines, so you have to be more careful.

	(5) Get the machine into shape.  Install the new kernel and loader,
	    new bootblocks, reboot.

	(6) Once the machine is up in its new configuration, you can do a 
	    full make buildworld / installworld without worrying about
	    compatibility problems.   Hell, if you did the copy right, you
	    do not even have to do this.

    The other cool thing is, of course, that since you are using NFS mounts
    you can put the script to do all of this in one place:  on the template
    machine.

					-Matt
					Matthew Dillon 
					<dillon@backplane.com>


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199901242350.PAA05539>