Difference between revisions of "Migration from Linux-VServer to OpenVZ"
("fixed" openvz installation description -- refer to quick install) |
Toutoune25 (talk | contribs) m (wikif) |
||
Line 12: | Line 12: | ||
1. Initial conditions: the following example of Linux-VServer based solution was used for the experiment: | 1. Initial conditions: the following example of Linux-VServer based solution was used for the experiment: | ||
− | + | * Kernel linux-2.6.17.13 was patched by the patch-2.6.17.13-vs2.0.2.1.diff and rebuild; | |
− | + | * Util-vserver-0.30.211 tools were used for creating containers; | |
<code> | <code> | ||
Line 21: | Line 21: | ||
VS-API: 0x00020002 | VS-API: 0x00020002 | ||
util-vserver: 0.30.211; Dec 5 2006, 17:10:21 | util-vserver: 0.30.211; Dec 5 2006, 17:10:21 | ||
− | + | ||
Features: | Features: | ||
CC: gcc, gcc (GCC) 3.4.3 20041212 (Red Hat 3.4.3-9.EL4) | CC: gcc, gcc (GCC) 3.4.3 20041212 (Red Hat 3.4.3-9.EL4) | ||
Line 36: | Line 36: | ||
syscall(2) invocation: alternative | syscall(2) invocation: alternative | ||
vserver(2) syscall#: 273/glibc | vserver(2) syscall#: 273/glibc | ||
− | + | ||
Paths: | Paths: | ||
prefix: /usr/local | prefix: /usr/local | ||
Line 82: | Line 82: | ||
<code> | <code> | ||
# vserver-stat | # vserver-stat | ||
− | + | ||
CTX PROC VSZ RSS userTIME sysTIME UPTIME NAME | CTX PROC VSZ RSS userTIME sysTIME UPTIME NAME | ||
0 51 90.9M 26.3M 0m58s75 2m42s57 33m45s93 root server | 0 51 90.9M 26.3M 0m58s75 2m42s57 33m45s93 root server | ||
49153 4 10.2M 2.8M 0m00s00 0m00s11 21m45s42 v345 | 49153 4 10.2M 2.8M 0m00s00 0m00s11 21m45s42 v345 | ||
− | + | ||
# | # | ||
</code> | </code> |
Revision as of 10:46, 28 April 2008
Current document describes the migration from Linux-VServer based virtualization solution to OpenVZ.
Description of challenge:
The challenge is migration from Linux-Vserver to OpenVZ by booting the OpenVZ kernel and updating the existing configs of utility level in purpose to make the existing guest OSes work over OpenVZ kernel.
Details of migration process. Step by step:
1. Initial conditions: the following example of Linux-VServer based solution was used for the experiment:
- Kernel linux-2.6.17.13 was patched by the patch-2.6.17.13-vs2.0.2.1.diff and rebuild;
- Util-vserver-0.30.211 tools were used for creating containers;
# vserver-info
Versions:
Kernel: 2.6.17.13-vs2.0.2.1
VS-API: 0x00020002
util-vserver: 0.30.211; Dec 5 2006, 17:10:21
Features:
CC: gcc, gcc (GCC) 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)
CXX: g++, g++ (GCC) 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)
CPPFLAGS:
CFLAGS: '-g -O2 -std=c99 -Wall -pedantic -W -funit-at-a-time'
CXXFLAGS: '-g -O2 -ansi -Wall -pedantic -W -fmessage-length=0 -funit-at-a-time'
build/host: i686-pc-linux-gnu/i686-pc-linux-gnu
Use dietlibc: yes
Build C++ programs: yes
Build C99 programs: yes
Available APIs: v13,net
ext2fs Source: kernel
syscall(2) invocation: alternative
vserver(2) syscall#: 273/glibc
Paths:
prefix: /usr/local
sysconf-Directory: ${prefix}/etc
cfg-Directory: ${prefix}/etc/vservers
initrd-Directory: $(sysconfdir)/init.d
pkgstate-Directory: ${prefix}/var/run/vservers
vserver-Rootdir: /vservers
#
VServer v345 was built using vserver vX build utility and populated by using the tarballed template of Fedora Core 4.
# vserver v345 start
Starting system logger: [ OK ]
Initializing random number generator: [ OK ]
Starting crond: l: [ OK ]
Starting atd: [ OK ]
# vserver v345 enter
[/]# ls -l
total 44
drwxr-xr-x 2 root root 4096 Oct 26 2004 bin
drwxr-xr-x 3 root root 4096 Dec 8 17:16 dev
drwxr-xr-x 27 root root 4096 Dec 8 15:21 etc
-rw-r--r-- 1 root root 0 Dec 8 15:33 halt
drwxr-xr-x 2 root root 4096 Jan 24 2003 home
drwxr-xr-x 7 root root 4096 Oct 26 2004 lib
drwxr-xr-x 2 root root 4096 Jan 24 2003 mnt
drwxr-xr-x 3 root root 4096 Oct 26 2004 opt
-rw-r--r-- 1 root root 0 Dec 7 20:17 poweroff
dr-xr-xr-x 80 root root 0 Dec 8 11:38 proc
drwxr-x--- 2 root root 4096 Dec 7 20:17 root
drwxr-xr-x 2 root root 4096 Oct 26 2004 sbin
drwxrwxrwt 2 root root 40 Dec 8 17:16 tmp
drwxr-xr-x 15 root root 4096 Jul 27 2004 usr
drwxr-xr-x 17 root root 4096 Oct 26 2004 var
[/]# sh
sh-2.05b#
.........
As a result we obtain running virtual environment v345:
# vserver-stat
CTX PROC VSZ RSS userTIME sysTIME UPTIME NAME
0 51 90.9M 26.3M 0m58s75 2m42s57 33m45s93 root server
49153 4 10.2M 2.8M 0m00s00 0m00s11 21m45s42 v345
#
2. Starting migration to OpenVZ: downloading and installing the stable OpenVZ kernel.
Install the OpenVZ kernel, as described in quick installation.
After the kernel is installed, reboot the machine. After rebooting and logging in you will see the following reply on vserver-stat call:
# vserver-stat
can not change context: migrate kernel feature missing and 'compat' API disabled: Function not implemented
#
It is a natural thing that now virtual environment v345 is unavailable. The following steps will be devoted to making it work over OpenVZ kernel.
3. Downloading and installing vzctl package
OpenVZ solution requires installing a set of tools: vzctl and vzquota packages. Download and install it, as described in quick installation.
If rpm complains about unresolved dependencies, you'll have to satisfy them first, then repeat the installation. Then launch the OpenVZ:
# /sbin/service vz start
Starting OpenVZ: [ OK ]
Bringing up interface venet0: [ OK ]
Configuring interface venet0: [ OK ]
#
Currently vzlist utility is unable to find any containers:
# vzlist
Containers not found
#
4. Updating different configurations in purpose to make existing templates work
Move the existing templates of guest OSs to the right place:
# cd /vz
# mkdir private
# mkdir 345
# mv /vservers/v345 /vz/private/345
Now it is time for creating configuration files for OpenVZ container. Use the basic sample configuration presented in /etc/sysconfig/vz-scripts/ve-vps.basic.conf-sample file:
# cd /etc/sysconfig/vz-scripts
# cp ve-vps.basic.conf-sample 345.conf
Update the ON_BOOT string in 345.conf file by typing:
.....
ONBOOT="yes"
.....
to make it boot on node restart, and add a couple of strings related to the
particular container 345:
.....
VE_ROOT="/vz/root/345"
VE_PRIVATE="/vz/private/345"
ORIGIN_SAMPLE="vps.basic"
HOSTNAME="test345.my.org"
IP_ADDRESS="192.168.0.145"
.....
And reboot the machine:
# reboot
5. Testing how the guest OSs successfully work over OpenVZ. Reference to Users Guide of OpenVZ (vzctl).
After rebooting you will be able to see running container 345 that have been migrated from vserver:
# vzlist -a
CTID NPROC STATUS IP_ADDR HOSTNAME
345 5 running 192.168.0.145 test345.my.org
#
And run commands on it:
# vzctl exec 345 ls -l
total 48
drwxr-xr-x 2 root root 4096 Oct 26 2004 bin
drwxr-xr-x 3 root root 4096 Dec 11 12:42 dev
drwxr-xr-x 27 root root 4096 Dec 11 12:44 etc
-rw-r--r-- 1 root root 0 Dec 11 12:13 fastboot
-rw-r--r-- 1 root root 0 Dec 8 15:33 halt
drwxr-xr-x 2 root root 4096 Jan 24 2003 home
drwxr-xr-x 7 root root 4096 Oct 26 2004 lib
drwxr-xr-x 2 root root 4096 Jan 24 2003 mnt
drwxr-xr-x 3 root root 4096 Oct 26 2004 opt
-rw-r--r-- 1 root root 0 Dec 7 20:17 poweroff
dr-xr-xr-x 70 root root 0 Dec 11 12:42 proc
drwxr-x--- 2 root root 4096 Dec 7 20:17 root
drwxr-xr-x 2 root root 4096 Dec 11 12:13 sbin
drwxrwxrwt 2 root root 4096 Dec 8 12:40 tmp
drwxr-xr-x 15 root root 4096 Jul 27 2004 usr
drwxr-xr-x 17 root root 4096 Oct 26 2004 var
#
Potential issues: This work has in progress status. Some issues may take place with tuning the network for containers. To be continued.