[linux-lvm] The size specified by "lvcreate -L" is not accurate
zdenek.kabelac at gmail.com
Thu Sep 2 14:23:34 UTC 2021
Dne 02. 09. 21 v 15:24 Gionatan Danti napsal(a):
> Il 2021-09-02 05:26 Yu, Mingli ha scritto:
>> , after e2fsprogs upgrades to 1.46.4, the defaults for mke2fs now
>> call for 256 byte inodes for all file systems (with the exception of
>> file systems for the GNU Hurd, which only supports 128 byte inodes)
>> and use "lvcreate -L 50 -n lv_test1 vg_test && mke2fs
>> /dev/vg_test/lv_test1" and then continue to check the partiontion as
>> below.(use lvm2 2.03.11 for the test)
>> # df -h | grep dev/mapper/vg_test-lv_test1
>> /dev/mapper/vg_test-lv_test1 48M 14K 46M 1% /mnt/lv-test
>> Though claim 50M as above, but it turns out to be only 48M.
> I think that allocation are done in multiple of physical extent size which, by
> default, is at 4 MB.
> 50 is not a multiple of 4 while 48 is, so "lvcreate" probably rounded down the
> required size.
> Using one or more "-v" should bring progressively more details.
As correctly pointed out by Gionatan - lvm2 allocates LVs in 'extent_size'
So with default 4M - you could have either 48M or 52M.
In your case - you likely get 52M (as that's how lvm2 behaves - you get at
least specified amount of space rounded up to nearest extent - see output of
However your formatted extX volume also does have some internal 'filesystem'
metadata - so LV of size 52M gives reduced ext4 space to 48M in your case
as most likely 'ext4' header size 'cuts' away possibly 4M alignment
used by ext4.
Anyway - you if you care about max usage of every single byte on your storage
- you could further tune/lower lvm2 metadata size + alignment + extent_size
and also same you could tuning you could try with ext4 settings.
This way you could take back some wasted space on alignments - which normally
is negligible amount of disk space on modern high capacity sized drives.
More information about the linux-lvm