如何将物理系统和Xen VM转换为OpenVZ容器(Debian Etch)

如何将物理系统和Xen VM转换为OpenVZ容器(Debian Etch) 本指南解释了如何转换物理系统(运行 ...

如何将物理系统和Xen虚拟机转换为OpenVZ容器(Debian Etch)

版本1.0
作者:Falko Timme

本指南介绍如何将物理系统(运行Debian Etch)或Xen domUs(也运行Debian Etch)转换为OpenVZ容器。 此过程也可用于将VMware VM,VirtualBox VM或KVM VM转换为OpenVZ容器,但是我还没有尝试过。 它也适用于其他Linux发行版,并进行了微小的修改(例如,如果您不在Debian / Ubuntu上,网络配置不在/ etc / network / interfaces中 )。

我不会保证这将为您工作!

1初步说明

我想将物理系统或Xen domU server1.example.com (使用IP地址192.168.0.100 )转换为OpenVZ容器。 我有一个第二个服务器server2.example.com ,根据本指南设置OpenVZ: 在Debian Etch上安装和使用OpenVZ 。 我将使用VEID 211作为server2.example.com上的新OpenVZ 容器

我将使用/ vz这里作为OpenVZ目录,所以确保/ vz/ var / lib / vz的符号链接:

server2:

ln -s /var/lib/vz /vz

2将server1.example.com转换为OpenVZ

首先,我们为server2上的新OpenVZ容器211创建两个空目录,并为新容器创建一个标准的OpenVZ配置文件:

server2:

mkdir /vz/root/211 /vz/private/211
cat /etc/vz/conf/ve-vps.basic.conf-sample > /etc/vz/conf/211.conf

接下来我们在两个系统上安装rsync,因为我们将使用rsync将文件从server1传输到OpenVZ容器:

server1 / server2:

apt-get install rsync

现在让我们将server1的文件传输到OpenVZ容器:

server2:

rsync -arvpz --numeric-ids --exclude dev --exclude proc --exclude tmp -e "ssh -l root@192.168.0.100" root@192.168.0.100:/ /vz/private/211/

这可能需要几分钟,具体取决于server1上的文件数量和大小。

之后,我们可以使用vzctl命令配置我们新的OpenVZ容器,就像从头开始创建一个新的容器一样。

OpenVZ需要知道在容器中使用哪个分发,因此我们必须设置OSTEMPLATE值:

server2:

vzctl set 211 --ostemplate debian-4.0-i386-minimal --save

之后,您可以设置网络参数以及新容器的磁盘空间:

server2:

vzctl set 211 --onboot yes --save

vzctl set 211 --hostname server1.example.com --save
vzctl set 211 --ipadd 192.168.0.100 --save
vzctl set 211 --numothersock 120 --save
vzctl set 211 --nameserver 145.253.2.75 --nameserver 213.191.92.86 --save

vzctl set 211 --diskspace 10000000:11000000 --save

(这将设置磁盘空间限制为10GB,硬限制为11GB。)

如果你喜欢,你可以给容器一个IP地址不同于原始系统上使用的IP地址; 在这种情况下,您可能必须调整容器中的其他几个文件(例如,Apache配置等,具体取决于容器中安装的内容)。 如果您使用相同的IP地址,请勿在开启OpenVZ容器之前忘记关闭原始系统!

这些是基本设置。 当然,您也可以使用vzctl命令更改其他设置。

在开始OpenVZ容器之前,我们必须对它进行一些OpenVZ的更改:

server2:

sed -i -e '/getty/d' /vz/private/211/etc/inittab
rm -f /vz/private/211/etc/mtab
ln -s /proc/mounts /vz/private/211/etc/mtab

cp /vz/private/211/etc/fstab /vz/private/211/etc/fstab.old
grep devpts /vz/private/211/etc/fstab.old > /vz/private/211/etc/fstab
mkdir /vz/private/211/dev
mknod --mode 666 /vz/private/211/dev/ptmx c 5 2
mkdir /vz/private/211/dev/pts
cp -a /dev/ttyp* /dev/ptyp* /vz/private/211/dev/
rm -f /vz/private/211/dev/null
mknod --mode 666 /vz/private/211/dev/null c 1 3
mknod --mode 444 /vz/private/211/dev/urandom c 1 9
mkdir /vz/private/211/proc
cat /dev/null > /vz/private/211/etc/network/interfaces

就这样,你现在可以启动新的OpenVZ容器( 不要忘了关闭旧系统,如果两个都使用相同的IP! )...

server2:

vzctl start 211

...并设置密码:

vzctl exec 211 passwd