Upgrading a live server with rdist
kheuer2 at gwdg.de
Mon Jun 2 23:37:38 PDT 2003
On Mon, 2 Jun 2003, Jamie wrote:
> I am trying to upgrade a running production server with rdist, but some
> of the files will not update. I am getting messages like:
> rdist: server.foo.net:/bin/rcp: Operation not permitted
> updating: /kernel
> rdist: server.foo.net:/kernel: Operation not permitted
> updating: /sbin/init
> rdist: server.foo.net:/sbin/init: Operation not permitted
> It appears rdist will not allow updates on processes that are loaded
> and running in memory. Is there any way to accomplish this with rdist or
> one of it's cousins?
As far as I see there is little chance to do this without carefully
restarting all processes, e.g. by shutting down into single user mode and
returning to multi user mode.
If you replace program files and shared libraries used by currently
running processes, this will cause the corresponding processes to be
aborted abnormally in case of page fault requiring a page-in from the
program files or shared libraries.
> We have one test machine which is identical to all our production
> servers new patches are compiled into and are then tested. If it tests
> okay, we'd like to be able to simply run rdist from there out to our other
> production systems.
> We've also considered sharing the /usr/src/ directory after the tests
> pass, and then recompiling the binaries on the remote systems, but to do
> that you need to run mergemaster on each machine and bring it into single
> user mode. We'd like to avoid that downtime, iff possible.
One possibility to minimize downtime would be to have two /usr
filesystems, which get mounted alternately on the directory /usr.
You could update the non-active filesystem (let's say, mounted on
/alt_usr) by rdist, automatically edit /etc/fstab to get this filesystem
mounted on /usr after a reboot, and reboot the system.
Konrad Heuer (kheuer2 at gwdg.de) ____ ___ _______
GWDG / __/______ ___ / _ )/ __/ _ \
Am Fassberg / _// __/ -_) -_) _ |\ \/ // /
37077 Goettingen /_/ /_/ \__/\__/____/___/____/
More information about the freebsd-questions