A rough description of how to migrate existing physical server into a [[VE]].
What you need to do in order to migrate is: * == Prepare an a new “empty” VE. ==For OpenVZ this would mean the following (assume you choose chose VE ID of 123):
mkdir /vz/root/123 /vz/private/123
cat /etc/vz/conf/ve-vps.basic.conf-sample > /etc/vz/conf/123.conf
* Stop most services on a machine to be migrated. “Most” means services such as web server, databases and the like — so you will not loose your data. Just leave the bare minimum (including ssh).
* == Preparing to migrate == Stop most services on a machine to be migrated. “Most” means services such as web server, databases and the like — so you will not loose your data. Just leave the bare minimum (including ssh daemon). == Copying the data == Copy all your data from the machine to an OpenVZ box. Say you'll be using VE with ID of 123, then all the data should be placed to <code>/vz/private/123/</code> directory (so there will be directories such as <code>/vz/private/123/bin</code>, <code>etc</code>, <code>var</code> and so on). This could be done by scp or rsync. == Set VE parameters ==
* Set some VE parameters. === OSTEMPLATE ===You have to add <code>OSTEMPLATE=xxx</code> line to <code>/etc/vz/conf/123.conf</code> file, where <code>xxx</code> would be distribution name (like <code>debian-3.0</code>) for vzctl to be able to make changes specific for this distribution.
: === IP address(es) ===Also, you have to supply an IP for a new VE:
vzctl set 123 --ipadd x.x.x.x --save
* You == Making adjustments ==Since VE is a bit different than a real physical server, you have to edit some files inside a your new VE. For example, virtual server === /etc/inittab ===A VE does not have real ttys, so you have to disable getty in <code>/etc/inittab</code> (i. e. <code>/vz/private/123/etc/inittab</code>). Also, link <code>/etc/mtab</code> to <code>/proc/mounts</code>.
sed -i -e '/getty/d' /vz/private/123/etc/inittab
=== /etc/mtab ===
Link <code>/etc/mtab</code> to <code>/proc/mounts</code>:
rm -f /vz/private/123/etc/mtab
ln -s /proc/mounts /vz/private/123/etc/mtab
'''Also check that:'''=== /etc/fstab === - Since you do not have any real disk partitions in a VE, /etc/fstab (or most part of it) is empty ; fstab has to be emptyno longer needed.Empty it (excluding the line for /dev/pts): - cp /vz/devprivate/ptymx exists if it does not exist, create with: <code>vzctl exec 123 mknod /devetc/fstab /vz/private/123/ptmx c 5 2<etc/code>fstab.old - check if grep devpts /devvz/private/123/etc/pts exists it's a dir, if it does not exist, create with <codefstab.old >vzctl exec /vz/private/123 mkdir /devetc/pts</code>fstab
: There might === /dev TTY devices ===In order for vzctl enter to work, a VE need to have some entries in /dev. This can either be other adjustments needed. Please add if you have more info/dev/ttyp* and /dev/ptyp*, or /dev/ptmx and mounted /dev/pts.
==== /dev/ptmx ====Check that /dev/ptmx exists. If it does not, create with: mknod /vz/private/123/dev/ptmx c 5 2 ==== /dev/pts/ ====Check that /dev/pts exists. It's a directory, if it does not exist, create with: mkdir /vz/private/123/dev/pts ==== /dev/ttyp* and /dev/ptyp* ====Check that /dev/ttyp* and /dev/ptyp* files are there. If not, you have to create those, either by using /sbin/MAKEDEV, or by copying them from the host system. To copy: cp -a /dev/ttyp* /dev/ptyp* /vz/private/123/dev/ To recreate with MAKEDEV, either /sbin/MAKEDEV -d /vz/private/123/dev ttyp ptypor cd /vz/private/123/dev && /sbin/MAKEDEV ttyp === Other ===There might be other adjustments needed. Please add those here if you have more info. == Starting a new VE == Try to start your new VE:
vzctl start 123
* Now check that everything works fine. If not, see [[#Troubleshooting]] below. == Troubleshooting == === Can't enter VE === If your node starts but you can not enter ityour VE (using <code>vzctl enter</code>), you should be able to at least execute commands in it. First, see the [[#/dev TTY devices]] section above. Next, check if devpts is mounted.: <code>vzctl exec 123 mount<| grep pts If it is not mounted, mount it:vzctl exec 123 mount -t devpts none /dev/code>pts
If it is not mountedThen, add the appropriate mount it <code>vzctl exec 123 mount -t devpts none command to VE's startup scripts. On some distros, you need to have the appropriate line in VE's /devetc/pts</code>If it does not exist, please check above to create it correctlyfstab.
: === Other problems ===If anything goes wrong, try to find out why and fix. If you have enough Linux experience, it can be handled.: Also check out IRC and please report back on this page.
== Success Stories ==