[pve-devel] [PATCH storage] calculate reasonable metadatasize for lvm thin pools on creation
Dominik Csapak
d.csapak at proxmox.com
Fri Dec 6 15:23:01 CET 2019
Reviewed-By: Dominik Csapak <d.csapak at proxmox.com>
Tested-By: Dominik Csapak <d.csapak at proxmox.com>
On 12/6/19 2:04 PM, Tim Marx wrote:
>
> Signed-off-by: Tim Marx <t.marx at proxmox.com>
> ---
> PVE/API2/Disks/LVMThin.pm | 21 +++++++++++++++++++--
> 1 file changed, 19 insertions(+), 2 deletions(-)
>
> diff --git a/PVE/API2/Disks/LVMThin.pm b/PVE/API2/Disks/LVMThin.pm
> index 23c0279..4d303f8 100644
> --- a/PVE/API2/Disks/LVMThin.pm
> +++ b/PVE/API2/Disks/LVMThin.pm
> @@ -109,9 +109,26 @@ __PACKAGE__->register_method ({
> my $worker = sub {
> PVE::Diskmanage::locked_disk_action(sub {
> PVE::Storage::LVMPlugin::lvm_create_volume_group($dev, $name);
> + my $pv = PVE::Storage::LVMPlugin::lvm_pv_info($dev);
> + # keep some free space just in case
> + my $datasize = $pv->{size} - 128*1024;
> + # default to 1% for metadata
> + my $metadatasize = $datasize/100;
> + # but at least 1G, as recommended in lvmthin man
> + $metadatasize = 1024*1024 if $metadatasize < 1024*1024;
> + # but at most 16G, which is the current lvm max
> + $metadatasize = 16*1024*1024 if $metadatasize > 16*1024*1024;
> + # shrink data by needed amount for metadata
> + $datasize -= 2*$metadatasize;
>
> - # create thinpool with size 100%, let lvm handle the metadata size
> - run_command(['/sbin/lvcreate', '--type', 'thin-pool', '-l100%FREE', '-n', $name, $name]);
> + run_command([
> + '/sbin/lvcreate',
> + '--type', 'thin-pool',
> + "-L${datasize}K",
> + '--poolmetadatasize', "${metadatasize}K",
> + '-n', $name,
> + $name
> + ]);
>
> if ($param->{add_storage}) {
> my $storage_params = {
> --
> 2.20.1
>
> _______________________________________________
> pve-devel mailing list
> pve-devel at pve.proxmox.com
> https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
>
More information about the pve-devel
mailing list