Migrate Openvz To Lxc
I recently had to migrate containers from a proxmox3 (under OpenVZ) to a proxmox4 (under LXC).
Problem, there are a lot of containers to migrate/“convert” to run under LXC. So I needed a way to automate the procedure as much as possible.
Luckily, the migration documentation is very well detailed. So I used it to “bash” the operation.
You can find all the sources on my github
I cut the operation under two scripts, an export script and an import script.
The export :
The export script takes two parameters as input:
the container ID and
the IP of the destination server.
It is also necessary to define some variables that will be used to send data via
The export procedure is done as follows:
# Stop & Dump sudo vzctl stop $ID && \ echo "$ID stopped [OK]" && \ sudo vzdump $ID -dumpdir /home/$USER/vzdump && \ echo "$ID : dump [OK]" && \
We check dump is present :
# DumpName vzDumpName=$(ls /home/$USER/vzdump/) if [ -z $vzDumpName ] ; then echo "No dump found in /home/$USER/vzdump/" exit fi
Then we send it to
Proxmox 4 :
sudo scp -i /home/$USER/.ssh/id_rsa "-P $rPort" $vzDumpName $rUSER@$rIP:$rPath && \ echo "Sending Dump [OK]" && \ sudo scp -i /home/$USER/.ssh/id_rsa "-P $rPort" vz.log $rUSER@$rIP:$rPath && \ echo "Sending Log [OK]" && \ sudo rm $vzDumpName && \ sudo rm vz.log && \ echo "SCP $vzDumpName on $rIP [OK]"
As for the import, only one argument is passed as input, which is the container’s “ID”.
Then we start the conversion and restoration part.
sudo pct restore $ID $dumpPath/$dumpName && \ echo "pct $ID restoring [OK]" # At this poin, you can set network configuration # exemple : pct set 101 -net0 name=eth0,bridge=vmbr0,ip=192.168.15.144/24,gw=192.168.15.1 # I prefer doing it manually sudo pct start $ID sudo pct enter $ID
I omitted to tell you that there is a small logging system for the operations in order to be able to trace the process a bit.