docs:migrate-vserver-to-lxc
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |||
docs:migrate-vserver-to-lxc [2017/07/25 15:50] – 95.208.70.15 | docs:migrate-vserver-to-lxc [2017/07/25 16:03] (current) – 95.208.70.15 | ||
---|---|---|---|
Line 4: | Line 4: | ||
host system: debian jessie 8.9 | host system: debian jessie 8.9 | ||
+ | |||
+ | the host uses lvm2, one lv per vserver | ||
you need: LXC > Version 2.0, install it from jessie-backports | you need: LXC > Version 2.0, install it from jessie-backports | ||
Line 110: | Line 112: | ||
===== migrate a single vserver ===== | ===== migrate a single vserver ===== | ||
+ | < | ||
+ | # name of the volume group | ||
+ | VGNAME=' | ||
+ | CONTAINER_NAME=' | ||
+ | CONTAINER_IP=$( cat / | ||
+ | CONTAINER_BRIDGE=$( cat / | ||
+ | CONTAINER_NETMASK=$( cat / | ||
+ | if [ -z " | ||
+ | # netzmaske der ersten IPv4-adresse | ||
+ | CONTAINER_NETMASK=$( ip a l dev $CONTAINER_BRIDGE | awk -F"[ /]+" '$2 == " | ||
+ | fi | ||
+ | CONTAINER_GATEWAY=$( ip r l | awk '$1 == " | ||
+ | # https:// | ||
+ | CONTAINER_MACADDR_PFX=' | ||
+ | CONTAINER_SUBUID_STEP=' | ||
+ | CONTAINER_SUBUID=$( | ||
+ | awk -F: '{ print $2}' /etc/subuid | sort -n | tail -1 | awk -v s=$CONTAINER_SUBUID_STEP '{ print int (( $1 + 2 * s - 1 ) / s) * s }' | ||
+ | ) | ||
+ | VOLUME=$( df -k / | ||
+ | # 22 + 0 + hex(ip) | ||
+ | CONTAINER_MACADDR=" | ||
+ | # check things | ||
+ | cat << EOF | ||
+ | CONTAINER_NAME | ||
+ | CONTAINER_IP | ||
+ | GW $CONTAINER_GATEWAY | ||
+ | CONTAINER_MACADDR $CONTAINER_MACADDR | ||
+ | CONTAINER_BRIDGE | ||
+ | CONTAINER_SUBUID | ||
+ | VGNAME | ||
+ | VOLUME | ||
+ | EOF | ||
+ | |||
+ | ## | ||
+ | ## remount the lv | ||
+ | ## | ||
+ | |||
+ | NEWMNTPT=/ | ||
+ | |||
+ | mkdir -p /etc/RCS | ||
+ | vo -o /etc/fstab | ||
+ | MOUNTPT=$( awk -v v=$VOLUME '$1 == v { print $2 }' /etc/fstab ) | ||
+ | umount $MOUNTPT | ||
+ | sed -i " | ||
+ | rcsdiff /etc/fstab | ||
+ | vo -i /etc/fstab | ||
+ | |||
+ | if [ -e / | ||
+ | echo "base directory already exists, exiting" | ||
+ | exit 1; | ||
+ | fi | ||
+ | mkdir / | ||
+ | mount / | ||
+ | |||
+ | ## | ||
+ | ## calculate and enter sub(u|g)id | ||
+ | ## | ||
+ | |||
+ | touch /etc/subuid /etc/subgid | ||
+ | vo -o /etc/subuid /etc/subgid | ||
+ | cat << EOF >> /etc/subuid | ||
+ | root: | ||
+ | EOF | ||
+ | rcsdiff /etc/subuid | ||
+ | |||
+ | cat << EOF >> /etc/subgid | ||
+ | root: | ||
+ | EOF | ||
+ | rcsdiff /etc/subgid | ||
+ | |||
+ | vo -i /etc/subuid /etc/subgid | ||
+ | |||
+ | ## | ||
+ | ## bootstrap container | ||
+ | ## | ||
+ | mkdir / | ||
+ | mv / | ||
+ | ls -la / | ||
+ | # if there are .dot files, move them manually | ||
+ | lxc-create -n $CONTAINER_NAME -t none | ||
+ | |||
+ | # create individual container config | ||
+ | touch / | ||
+ | mkdir -p / | ||
+ | vo -o / | ||
+ | cat << EOF > / | ||
+ | lxc.include = / | ||
+ | |||
+ | lxc.rootfs = / | ||
+ | lxc.utsname = $CONTAINER_NAME | ||
+ | |||
+ | lxc.network.link = $CONTAINER_BRIDGE | ||
+ | lxc.network.hwaddr = $CONTAINER_MACADDR | ||
+ | lxc.network.ipv4 = $CONTAINER_IP/ | ||
+ | lxc.network.ipv4.gateway = $CONTAINER_GATEWAY | ||
+ | lxc.network.veth.pair = $CONTAINER_NAME | ||
+ | |||
+ | lxc.id_map = u 0 $CONTAINER_SUBUID 65536 | ||
+ | lxc.id_map = g 0 $CONTAINER_SUBUID 65536 | ||
+ | |||
+ | lxc.start.auto = 1 | ||
+ | EOF | ||
+ | vo -i / | ||
+ | |||
+ | # fix /run inside the container | ||
+ | if [ -L / | ||
+ | rm / | ||
+ | fi | ||
+ | if [ ! -e / | ||
+ | mkdir / | ||
+ | fi | ||
+ | |||
+ | # adjust uid/gid for the container | ||
+ | ownrecalc -U " | ||
+ | # check, should be empty: | ||
+ | find / | ||
+ | find / | ||
+ | |||
+ | # start the new container | ||
+ | |||
+ | lxc-start -d -n $CONTAINER_NAME | ||
+ | # check: | ||
+ | lxc-attach -n $CONTAINER_NAME -- uname -a | ||
+ | lxc-attach -n $CONTAINER_NAME -- ps xa | ||
+ | |||
+ | ## | ||
+ | ## delete the obsolete vserver config | ||
+ | ## | ||
+ | |||
+ | vserver $CONTAINER_NAME delete | ||
+ | |||
+ | </ | ||
+ | |||
+ | Repeat the above for all vservers. | ||
+ | |||
+ | ===== Remove obsolete vserver setup ===== | ||
+ | |||
+ | < | ||
+ | apt-get purge util-vserver-sysv util-vserver-core util-vserver-build linux-image-4.1-vserver-amd64 libvserver0 | ||
+ | apt-get --purge autoremove | ||
+ | rm -rf / | ||
+ | </ | ||
docs/migrate-vserver-to-lxc.txt · Last modified: 2017/07/25 16:03 by 95.208.70.15