Joe Thornber
2018-05-11 08:21:28 UTC
I saw something today that I don't understand and I'm hoping somebody can
help. We had a ~2.5TB thin pool that was showing 69% data utilization in
# lvs -a
LV VG Attr LSize Pool Origin Data%
Meta% Move Log Cpy%Sync Convert
my-pool myvg twi-aotz-- 2.44t 69.04 4.90
[my-pool_tdata] myvg Twi-ao---- 2.44t
[my-pool_tmeta] myvg ewi-ao---- 15.81g
However, when I dump the thin pool metadata and look at the mapped_blocks
for the 2 devices in the pool, I can only account for about 950GB. Here is
the superblock and device entries from the metadata xml. There are no
<superblock uuid="" time="34" transaction="68" flags="0" version="2"
data_block_size="128" nr_data_blocks="0">
<device dev_id="1" mapped_blocks="258767" transaction="0"
creation_time="0" snap_time="14">
<device dev_id="8" mapped_blocks="15616093" transaction="27"
creation_time="15" snap_time="34">
That first device looks like it has about 16GB allocated to it and the
second device about 950GB. So, I would expect lvs to show somewhere
between 950G-966G Is something wrong, or am I misunderstanding how to read
the metadata dump? Where is the other 700 or so GB that lvs is showing
used?
The non zero snap_time suggests that you're using snapshots. I which case ithelp. We had a ~2.5TB thin pool that was showing 69% data utilization in
# lvs -a
LV VG Attr LSize Pool Origin Data%
Meta% Move Log Cpy%Sync Convert
my-pool myvg twi-aotz-- 2.44t 69.04 4.90
[my-pool_tdata] myvg Twi-ao---- 2.44t
[my-pool_tmeta] myvg ewi-ao---- 15.81g
However, when I dump the thin pool metadata and look at the mapped_blocks
for the 2 devices in the pool, I can only account for about 950GB. Here is
the superblock and device entries from the metadata xml. There are no
<superblock uuid="" time="34" transaction="68" flags="0" version="2"
data_block_size="128" nr_data_blocks="0">
<device dev_id="1" mapped_blocks="258767" transaction="0"
creation_time="0" snap_time="14">
<device dev_id="8" mapped_blocks="15616093" transaction="27"
creation_time="15" snap_time="34">
That first device looks like it has about 16GB allocated to it and the
second device about 950GB. So, I would expect lvs to show somewhere
between 950G-966G Is something wrong, or am I misunderstanding how to read
the metadata dump? Where is the other 700 or so GB that lvs is showing
used?
could just be there is common data shared between volumes that is getting counted
more than once.
You can confirm this using the thin_ls tool and specifying a format line that
includes EXCLUSIVE_BLOCKS, or SHARED_BLOCKS. Lvm doesn't take shared blocks into
account because it has to scan all the metadata to calculate what's shared.
- Joe