vzrestore ignores VM-specific private and root dirs location [vzdump-1.2-14]

  • Thread starter Thread starter knawnd
  • Start date Start date
K

knawnd

Guest
Hi!

vzrestore (vzdump-1.2-14) ignores custom private and root dirs location specified in vmid.conf or rather vzrestore overwrites a values of VE_PRIVATE and VE_ROOT parameters in vmid.conf by a global ones specified in /etc/vz/vz.conf.
If I understand correctly the corresponding lines of vzrestore file are 75 and 77:
[...]
my $private = $vzconf->{privatedir};
[...]
my $root = $vzconf->{rootdir};
[...]

The $private and $root variables has to be extracted from $conffile which is defined in 74 line as
my $conffile = "$cfgdir/${vmid}.conf";

It looks like a bug, doesn't it?

Steps to reproduce:
1) $ vzctl create 101 --ostemplate centos-5-x86 --root /vz/one/vm/70/root --private /vz/one/vm/70/private

2) $ egrep "ROOT|PRIVATE" /etc/vz/conf/101.conf
VE_ROOT="/vz/one/vm/70/root"
VE_PRIVATE="/vz/one/vm/70/private"

3) $vzdump --stop --dumpdir /vz/one/vm/70/ 101

4) $ tar -x ./etc/vzdump/vps.conf -f /vz/one/vm/70/vzdump-openvz-101-2011_09_13-12_13_56.tar -O|egrep "PRIVATE|ROOT"
VE_ROOT="/vz/one/vm/70/root"
VE_PRIVATE="/vz/one/vm/70/private"

5) $ vzctl stop 101

6) $ vzctl destroy 101
Destroying container private area: /vz/one/vm/70/private
Container private area was destroyed

$ egrep "ROOT|PRIVATE" /etc/vz/conf/101.conf.destroyed
VE_ROOT="/vz/one/vm/70/root"
VE_PRIVATE="/vz/one/vm/70/private"

7) $ vzrestore /vz/one/vm/70/vzdump-openvz-101-2011_09_13-12_13_56.tar 101
INFO: restore openvz backup '/vz/one/vm/70/vzdump-openvz-101-2011_09_13-12_13_56.tar' using ID 101
INFO: extracting archive '/vz/one/vm/70/vzdump-openvz-101-2011_09_13-12_13_56.tar'
INFO: extracting configuration to '/etc/vz/conf/101.conf'
INFO: restore openvz backup '/vz/one/vm/70/vzdump-openvz-101-2011_09_13-12_13_56.tar' successful

$ egrep "ROOT|PRIVATE" /etc/vz/conf/101.conf
VE_ROOT="/vz/root/$VEID"
VE_PRIVATE="/vz/private/$VEID"

So vzrestore replaced a VM-specific values of VE_ROOT and VE_PRIVATE by the global ones.

I am using vzdump rpm converted from http://download.proxmox.com/debian/dists/lenny/pve/binary-amd64/vzdump_1.2-14_all.deb