Migrating from OpenVZ to Linux-Vserver

From Linix VServer
Jump to navigationJump to search

So, you've repeatedely heard that OpenVZ was hip, better than Linux-Vserver even, and thought you'd give it a try? So did we! However, you weren't as pleased as you were supposed to be, and kept thinking back about how Linux-Vserver was cool for you? Well, if that's your case too, here's how we moved back to Linux-Vserver in a few simple keystrokes.

System info[edit]

Kernels[edit]

We are running Debian GNU/Linux, in its testing flavour (pre-release Lenny, frozen package base). For OpenVZ, we were using Debian kernel 2.6.26 with OpenVZ patches. For Linux-Vserver, we are using Debian kernel 2.6.25 with Linux-Vserver patches.

Paths[edit]

We created our OpenVZ CTs under /srv/vps/$VEID/{private,root}/, and our vservers under /srv/vservers/.

Migrating[edit]

Copying data[edit]

After rebooting under the -vserver kernel, here's how we migrated each VPS, using the 'rsync method':

[sudo] vserver $vname build -m rsync \
               --hostname $vhostname \
               --interface $interface:$ip \
               --context $ctx -- \
               --source /srv/vps/$veid/private/ -o -va

So, for migrating an OpenVZ CT named 'seitan' using '192.168.66.6' on 'eth0', in context '666', the command would look like:

sudo vserver seitan build -m rsync \
             --hostname seitan \ 
             --interface eth0:192.168.66.6/24 \
             --context 666 -- \
             --source /srv/vps/seitan/private/ -o -va

Note the trailing -o -va, which allows us to follow rsync as it goes.

Fix daemons[edit]

When rsync is done, we can't start our vservers yet, because some of the system daemons that OpenVZ allows are not compatible with a Vserver environment. Let's remove their startup links, then!

To do so, let's chroot into our freshly migrated vserver:

sudo chroot /srv/vservers/seitan/

Once inside, let's unlink all the undesired daemons:

for undesired in klogd hwclock.sh setserial urandom networking umountfs halt reboot ; 
    do update-rc.d -f $undesired remove ;
done

Enjoy[edit]

Let's log out of the chroot, and start our vserver!

exit
sudo vserver seitan start

It should work fine, provided some of your daemons don't depend upon bind mounts from host, which then need to be integrated into the fstab for each of your vservers.

Welcome back!