[linux-lvm] Lvm think provisioning query

Bhasker C V bhasker at unixindia.com
Thu Apr 28 14:36:23 UTC 2016


Zdenek,
 Thanks. Here I am just filling it up with random data and so I am not
concerned about data integrity
 You are right, I did get page lost during write errors in the kernel

The question however is even after reboot and doing several fsck of the
ext4fs the file size "occupied" is more than the pool size. How is this ?
I agree that data may be corrupted, but there *is* some data and this must
be saved somewhere. Why is this "somewhere" exceeding the pool size ?


On Wed, Apr 27, 2016 at 4:33 PM, Zdenek Kabelac <zkabelac at redhat.com> wrote:

> On 27.4.2016 14:33, Bhasker C V wrote:
>
>> Hi,
>>
>>   I am starting with investigating about the lvm thin provisioning
>>   (repeat post from
>> https://lists.debian.org/debian-user/2016/04/msg00852.html )
>>   (apologies for html mail)
>>
>>   I have done the following
>>
>> 1.Create a PV
>> vdb    252:16   0   10G  0 disk
>> ├─vdb1 252:17   0  100M  0 part
>> └─vdb2 252:18   0  9.9G  0 part
>> root at vmm-deb:~# pvcreate /dev/vdb1
>>    Physical volume "/dev/vdb1" successfully created.
>> root at vmm-deb:~# pvs
>>    PV         VG   Fmt  Attr PSize   PFree
>>    /dev/vdb1       lvm2 ---  100.00m 100.00m
>>
>> 2. create a VG
>> root at vmm-deb:~# vgcreate virtp /dev/vdb1
>>    Volume group "virtp" successfully created
>> root at vmm-deb:~# vgs
>>    VG    #PV #LV #SN Attr   VSize  VFree
>>    virtp   1   0   0 wz--n- 96.00m 96.00m
>>
>> 3. create a lv pool  and a over-provisioned volume inside it
>> root at vmm-deb:~# lvcreate -n virtpool -T virtp/virtpool -L40M
>>    Logical volume "virtpool" created.
>> root at vmm-deb:~# lvs
>>    LV       VG    Attr       LSize  Pool Origin Data%  Meta%  Move Log
>> Cpy%Sync Convert
>>    virtpool virtp twi-a-tz-- 40.00m             0.00   0.88
>> root at vmm-deb:~# lvcreate  -V1G -T virtp/virtpool -n vol01
>>    WARNING: Sum of all thin volume sizes (1.00 GiB) exceeds the size of
>> thin
>> pool virtp/virtpool and the size of whole volume group (96.00 MiB)!
>>    For thin pool auto extension activation/thin_pool_autoextend_threshold
>> should be below 100.
>>    Logical volume "vol01" created.
>> root at vmm-deb:~# lvs
>>    LV       VG    Attr       LSize  Pool     Origin Data%  Meta%  Move Log
>> Cpy%Sync Convert
>>    virtpool virtp twi-aotz-- 40.00m                 0.00   0.98
>>    vol01    virtp Vwi-a-tz--  1.00g virtpool        0.00
>>
>> ---------- Now the operations
>> # dd if=/dev/urandom of=./fil status=progress
>> 90532864 bytes (91 MB, 86 MiB) copied, 6.00005 s, 15.1 MB/s^C
>> 188706+0 records in
>> 188705+0 records out
>> 96616960 bytes (97 MB, 92 MiB) copied, 6.42704 s, 15.0 MB/s
>>
>> # df -h .
>> Filesystem               Size  Used Avail Use% Mounted on
>> /dev/mapper/virtp-vol01  976M   95M  815M  11% /tmp/x
>> # sync
>> # cd ..
>> root at vmm-deb:/tmp# umount x
>> root at vmm-deb:/tmp# fsck.ext4 -f -C0  /dev/virtp/vol01
>> e2fsck 1.43-WIP (15-Mar-2016)
>> Pass 1: Checking inodes, blocks, and sizes
>> Pass 2: Checking directory structure
>> Pass 3: Checking directory connectivity
>> Pass 4: Checking reference counts
>> Pass 5: Checking group summary information
>> /dev/virtp/vol01: 12/65536 files (8.3% non-contiguous), 36544/262144
>> blocks
>>
>> <mount>
>> # du -hs fil
>> 93M    fil
>>
>> # dd if=./fil of=/dev/null status=progress
>> 188705+0 records in
>> 188705+0 records out
>> 96616960 bytes (97 MB, 92 MiB) copied, 0.149194 s, 648 MB/s
>>
>>
>> # vgs
>>    VG    #PV #LV #SN Attr   VSize  VFree
>>    virtp   1   2   0 wz--n- 96.00m 48.00m
>>
>> Definetly the file is occupying 90+MB.
>>
>> What i expect is that the pool is 40M and the file must NOT exceed 40M.
>> Where
>> does the file get 93M space ?
>> I know the VG is 96M but the pool created was max 40M (also VG still says
>> 48M
>> free). Is the file exceeding the boundaries ?
>> or am I doing anything wrong ?
>>
>>
>
> Hi
>
> Answer is simple ->  nowhere - they are simply lost - check your kernel
> dmesg log - you will spot lost of async write error.
> (page cache is tricky here...    - dd ends just in page-cache which is
> later asynchronously sync to disk)
>
> There is also 60s delay before thin-pool target starts to error all queued
> write operations if there is not enough space in pool.
>
> So whenever you write something and you want to be 100% 'sure' it landed
> on disk you have to 'sync'  your writes.
>
> i.e.
> dd if=/dev/urandom of=./fil status=progress  conf=fsync
>
> and if you want to know 'exactly' what's the error place -
>
> dd if=/dev/urandom of=./fil status=progress oflags=direct
>
> Regards
>
> Zdenek
>
> _______________________________________________
> linux-lvm mailing list
> linux-lvm at redhat.com
> https://www.redhat.com/mailman/listinfo/linux-lvm
> read the LVM HOW-TO at http://tldp.org/HOWTO/LVM-HOWTO/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/linux-lvm/attachments/20160428/1eb3cddc/attachment.htm>


More information about the linux-lvm mailing list