]> git.proxmox.com Git - pve-installer.git/commitdiff
fix #1241: ensure at least 1G of thinpool metadata
authorFabian Grünbichler <f.gruenbichler@proxmox.com>
Fri, 11 May 2018 08:01:54 +0000 (10:01 +0200)
committerFabian Grünbichler <f.gruenbichler@proxmox.com>
Fri, 11 May 2018 11:09:37 +0000 (13:09 +0200)
and take metadata out of the (potential) data space, not the
reserved/minfree space.

also avoid creating very small thin pools.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
proxinstall

index e5a6937c8c71fd3fe08588f93f5b58e5ff368108..e40e09733e1a4d561cac55d25fa8d020df244eef 100755 (executable)
@@ -1028,11 +1028,21 @@ sub create_lvm_volumes {
     syscmd ("/sbin/lvcreate -L${rootsize}K -nroot $vgname") == 0 ||
        die "unable to create root volume\n";
 
-    if ($datasize) {
+    if ($datasize > 4*1024*1024) {
+       my $metadatasize = $datasize/100; # default 1% of data
+       $metadatasize = 1024*1024 if $metadatasize < 1024*1024; # but at least 1G
+       $metadatasize = 16*1024*1024 if $metadatasize > 16*1024*1024; # but at most 16G
+
+       # otherwise the metadata is taken out of $minfree
+       $datasize -= 2*$metadatasize;
+
+       # 1 4MB PE to allow for rounding
+       $datasize -= 4*1024;
+
        syscmd ("/sbin/lvcreate -L${datasize}K -ndata $vgname") == 0 ||
            die "unable to create data volume\n";
 
-       syscmd ("/sbin/lvconvert --yes --type thin-pool $vgname/data") == 0 ||
+       syscmd ("/sbin/lvconvert --yes --type thin-pool --poolmetadatasize ${metadatasize}K $vgname/data") == 0 ||
            die "unable to create data thin-pool\n";
     } else {
        $datadev = undef;