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
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