I tried to recreate.
Note: as it was reported on power + Xenial this test was done on ppc64el Xenial as of today
To do so with as much debugging as possible I created a normal Xenial KVM Guest via
$ uvt-kvm create --cpu 4 --password=ubuntu paelzer-testlvm-xenial release=xenial
Then I added a few more disks to be used as PVs
$ sudo qemu-img create -f qcow2 test-lvm-disk1.qcow2 8
And added those to the Guest.
The guest then initially looks like:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 8G 0 disk
vdb 253:16 0 8G 0 disk
vdc 253:32 0 8G 0 disk
vdd 253:48 0 366K 0 disk
vde 253:64 0 8G 0 disk
|-vde1 253:65 0 8G 0 part /
`-vde2 253:66 0 8M 0 part
Then the usual flow is
1. fdisk, create partition set LVM partition type (8e)
$ sudo fdisk /dev/vd[abc]
2. Full PVs on all the three disks
$ sudo pvcreate /dev/vd[abc]
3. vgcreate a single VG out of all of the PVs
$ sudo vgcreate vg /dev/vda1 /dev/vdb1 /dev/vdc1
At this point it looks like this:
$ sudo vgdisplay vg
--- Volume group ---
VG Name vg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 23.99 GiB
PE Size 4.00 MiB
Total PE 6141
Alloc PE / Size 0 / 0
Free PE / Size 6141 / 23.99 GiB
VG UUID 1QMFbn-5DAW-T9IE-Fdfd-9RZK-t8gl-5nte5r
Ok, create normal as well as thin LVs out of that now.
First of all thin provisioning is not mainstream, the dependency is only a suggest, so install the tools
$ sudo apt-get install thin-provisioning-tools
Then create the normal LV
$ sudo lvcreate -L 5G --name lv_normal vg
And finally a thin LV
$ sudo lvcreate --size 10G --virtualsize 5G --thinpool mythinpool --name lv_thin vg
Lets go harder and overprovision the thinpool
$ sudo lvcreate --virtualsize 5G --thinpool mythinpool --name lv_thin2 vg
$ sudo lvcreate --virtualsize 5G --thinpool mythinpool --name lv_thin3 vg
With that in place my LVs look like:
$ sudo lvdisplay
--- Logical volume ---
LV Path /dev/vg/lv_normal
LV Name lv_normal
VG Name vg
LV UUID aCtNC0-gbx1-uHoB-3dC8-dfhl-NBxd-Axm879
LV Write Access read/write
LV Creation host, time paelzer-testlvm-xenial, 2017-01-25 12:54:02 +0000
LV Status available
# open 0
LV Size 5.00 GiB
Current LE 1280
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0
--- Logical volume ---
LV Name mythinpool
VG Name vg
LV UUID UCKy8A-ovc6-Qh9n-wrEM-c2s2-myvD-hpLhb0
LV Write Access read/write
LV Creation host, time paelzer-testlvm-xenial, 2017-01-25 13:04:03 +0000
LV Pool metadata mythinpool_tmeta
LV Pool data mythinpool_tdata
LV Status available
# open 4
LV Size 10.00 GiB
Allocated pool data 0.00%
Allocated metadata 0.72%
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:3
--- Logical volume ---
LV Path /dev/vg/lv_thin
LV Name lv_thin
VG Name vg
LV UUID ay7Clp-78K7-8UoZ-ueZZ-WYTy-IQlF-oQkjdT
LV Write Access read/write
LV Creation host, time paelzer-testlvm-xenial, 2017-01-25 13:04:03 +0000
LV Pool name mythinpool
LV Status available
# open 0
LV Size 5.00 GiB
Mapped size 0.00%
Current LE 1280
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:5
--- Logical volume ---
LV Path /dev/vg/lv_thin2
LV Name lv_thin2
VG Name vg
LV UUID Zj5BfS-Cbm1-9TgI-gwk3-vdBG-wwH9-cSmC0B
LV Write Access read/write
LV Creation host, time paelzer-testlvm-xenial, 2017-01-25 13:05:11 +0000
LV Pool name mythinpool
LV Status available
# open 0
LV Size 5.00 GiB
Mapped size 0.00%
Current LE 1280
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:6
--- Logical volume ---
LV Path /dev/vg/lv_thin3
LV Name lv_thin3
VG Name vg
LV UUID bSPGZH-Thwx-M8qx-QDS2-gIUz-50us-hGCRGu
LV Write Access read/write
LV Creation host, time paelzer-testlvm-xenial, 2017-01-25 13:05:16 +0000
LV Pool name mythinpool
LV Status available
# open 0
LV Size 5.00 GiB
Mapped size 0.00%
Current LE 1280
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:7
$ ll /dev/mapper/
total 0
drwxr-xr-x 2 root root 220 Jan 25 13:05 ./
drwxr-xr-x 16 root root 4240 Jan 25 13:05 ../
crw------- 1 root root 10, 236 Jan 25 12:20 control
lrwxrwxrwx 1 root root 7 Jan 25 12:54 vg-lv_normal -> ../dm-0
lrwxrwxrwx 1 root root 7 Jan 25 13:04 vg-lv_thin -> ../dm-5
lrwxrwxrwx 1 root root 7 Jan 25 13:05 vg-lv_thin2 -> ../dm-6
lrwxrwxrwx 1 root root 7 Jan 25 13:05 vg-lv_thin3 -> ../dm-7
lrwxrwxrwx 1 root root 7 Jan 25 13:04 vg-mythinpool -> ../dm-4
lrwxrwxrwx 1 root root 7 Jan 25 13:04 vg-mythinpool-tpool -> ../dm-3
lrwxrwxrwx 1 root root 7 Jan 25 13:04 vg-mythinpool_tdata -> ../dm-2
lrwxrwxrwx 1 root root 7 Jan 25 13:04 vg-mythinpool_tmeta -> ../dm-1
Now lets put it to use
for dev in lv_normal lv_thin lv_thin2 lv_thin3;
do
sudo mkfs.ext4 /dev/mapper/vg-${dev}
sudo mkdir -p /mnt/${dev}
sudo mount /dev/mapper/vg-${dev} /mnt/${dev}
sudo touch /mnt/${dev}/foobar
done
Things are properly mounted
$ mount | grep lv
/dev/mapper/vg-lv_normal on /mnt/lv_normal type ext4 (rw,relatime,data=ordered)
/dev/mapper/vg-lv_thin on /mnt/lv_thin type ext4 (rw,relatime,stripe=16,data=ordered)
/dev/mapper/vg-lv_thin2 on /mnt/lv_thin2 type ext4 (rw,relatime,stripe=16,data=ordered)
/dev/mapper/vg-lv_thin3 on /mnt/lv_thin3 type ext4 (rw,relatime,stripe=16,data=ordered)
All files written normally
$ ls -laF /mnt/*/foobar
-rw-r--r-- 1 root root 0 Jan 25 13:10 /mnt/lv_normal/foobar
-rw-r--r-- 1 root root 0 Jan 25 13:10 /mnt/lv_thin/foobar
-rw-r--r-- 1 root root 0 Jan 25 13:10 /mnt/lv_thin2/foobar
-rw-r--r-- 1 root root 0 Jan 25 13:10 /mnt/lv_thin3/foobar
Now rebooting to test the reported issue.
But after reboot all looks sane, lsblk, lvdisplay, dev/mapper they all are as expected.
Of course things are not mounted, but I didn't create any fstab entries, so
for dev in lv_normal lv_thin lv_thin2 lv_thin3; do sudo mount /dev/mapper/vg-${dev} /mnt/${dev}; done
All mount just fine and the file is still there.
You reported "I was able to replicate the issue. I created VG and LV and rebooted the system. Found that devicemapper entries for corresponding devices are missing after reboot. However, LVM commands like 'vgdisplay' and 'lvdisplay' show proper info, but 'lsblk' doesn't show the device's LVM related info after reboot."
Could you either
1. report your exact steps on a fresh system to cause this
or
2. modify the steps I reported until the issue shows up
I tried to recreate.
Note: as it was reported on power + Xenial this test was done on ppc64el Xenial as of today
To do so with as much debugging as possible I created a normal Xenial KVM Guest via testlvm- xenial release=xenial disk1.qcow2 8
$ uvt-kvm create --cpu 4 --password=ubuntu paelzer-
Then I added a few more disks to be used as PVs
$ sudo qemu-img create -f qcow2 test-lvm-
And added those to the Guest.
The guest then initially looks like:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 8G 0 disk
vdb 253:16 0 8G 0 disk
vdc 253:32 0 8G 0 disk
vdd 253:48 0 366K 0 disk
vde 253:64 0 8G 0 disk
|-vde1 253:65 0 8G 0 part /
`-vde2 253:66 0 8M 0 part
Then the usual flow is
1. fdisk, create partition set LVM partition type (8e)
$ sudo fdisk /dev/vd[abc]
2. Full PVs on all the three disks
$ sudo pvcreate /dev/vd[abc]
3. vgcreate a single VG out of all of the PVs
$ sudo vgcreate vg /dev/vda1 /dev/vdb1 /dev/vdc1
At this point it looks like this: 5DAW-T9IE- Fdfd-9RZK- t8gl-5nte5r
$ sudo vgdisplay vg
--- Volume group ---
VG Name vg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 23.99 GiB
PE Size 4.00 MiB
Total PE 6141
Alloc PE / Size 0 / 0
Free PE / Size 6141 / 23.99 GiB
VG UUID 1QMFbn-
Ok, create normal as well as thin LVs out of that now. ng-tools
First of all thin provisioning is not mainstream, the dependency is only a suggest, so install the tools
$ sudo apt-get install thin-provisioni
Then create the normal LV
$ sudo lvcreate -L 5G --name lv_normal vg
And finally a thin LV
$ sudo lvcreate --size 10G --virtualsize 5G --thinpool mythinpool --name lv_thin vg
Lets go harder and overprovision the thinpool
$ sudo lvcreate --virtualsize 5G --thinpool mythinpool --name lv_thin2 vg
$ sudo lvcreate --virtualsize 5G --thinpool mythinpool --name lv_thin3 vg
With that in place my LVs look like: gbx1-uHoB- 3dC8-dfhl- NBxd-Axm879 testlvm- xenial, 2017-01-25 12:54:02 +0000
$ sudo lvdisplay
--- Logical volume ---
LV Path /dev/vg/lv_normal
LV Name lv_normal
VG Name vg
LV UUID aCtNC0-
LV Write Access read/write
LV Creation host, time paelzer-
LV Status available
# open 0
LV Size 5.00 GiB
Current LE 1280
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:0
--- Logical volume --- ovc6-Qh9n- wrEM-c2s2- myvD-hpLhb0 testlvm- xenial, 2017-01-25 13:04:03 +0000
LV Name mythinpool
VG Name vg
LV UUID UCKy8A-
LV Write Access read/write
LV Creation host, time paelzer-
LV Pool metadata mythinpool_tmeta
LV Pool data mythinpool_tdata
LV Status available
# open 4
LV Size 10.00 GiB
Allocated pool data 0.00%
Allocated metadata 0.72%
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:3
--- Logical volume --- 78K7-8UoZ- ueZZ-WYTy- IQlF-oQkjdT testlvm- xenial, 2017-01-25 13:04:03 +0000
LV Path /dev/vg/lv_thin
LV Name lv_thin
VG Name vg
LV UUID ay7Clp-
LV Write Access read/write
LV Creation host, time paelzer-
LV Pool name mythinpool
LV Status available
# open 0
LV Size 5.00 GiB
Mapped size 0.00%
Current LE 1280
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:5
--- Logical volume --- Cbm1-9TgI- gwk3-vdBG- wwH9-cSmC0B testlvm- xenial, 2017-01-25 13:05:11 +0000
LV Path /dev/vg/lv_thin2
LV Name lv_thin2
VG Name vg
LV UUID Zj5BfS-
LV Write Access read/write
LV Creation host, time paelzer-
LV Pool name mythinpool
LV Status available
# open 0
LV Size 5.00 GiB
Mapped size 0.00%
Current LE 1280
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:6
--- Logical volume --- Thwx-M8qx- QDS2-gIUz- 50us-hGCRGu testlvm- xenial, 2017-01-25 13:05:16 +0000
LV Path /dev/vg/lv_thin3
LV Name lv_thin3
VG Name vg
LV UUID bSPGZH-
LV Write Access read/write
LV Creation host, time paelzer-
LV Pool name mythinpool
LV Status available
# open 0
LV Size 5.00 GiB
Mapped size 0.00%
Current LE 1280
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 252:7
$ ll /dev/mapper/
total 0
drwxr-xr-x 2 root root 220 Jan 25 13:05 ./
drwxr-xr-x 16 root root 4240 Jan 25 13:05 ../
crw------- 1 root root 10, 236 Jan 25 12:20 control
lrwxrwxrwx 1 root root 7 Jan 25 12:54 vg-lv_normal -> ../dm-0
lrwxrwxrwx 1 root root 7 Jan 25 13:04 vg-lv_thin -> ../dm-5
lrwxrwxrwx 1 root root 7 Jan 25 13:05 vg-lv_thin2 -> ../dm-6
lrwxrwxrwx 1 root root 7 Jan 25 13:05 vg-lv_thin3 -> ../dm-7
lrwxrwxrwx 1 root root 7 Jan 25 13:04 vg-mythinpool -> ../dm-4
lrwxrwxrwx 1 root root 7 Jan 25 13:04 vg-mythinpool-tpool -> ../dm-3
lrwxrwxrwx 1 root root 7 Jan 25 13:04 vg-mythinpool_tdata -> ../dm-2
lrwxrwxrwx 1 root root 7 Jan 25 13:04 vg-mythinpool_tmeta -> ../dm-1
Now lets put it to use vg-${dev} vg-${dev} /mnt/${dev}
for dev in lv_normal lv_thin lv_thin2 lv_thin3;
do
sudo mkfs.ext4 /dev/mapper/
sudo mkdir -p /mnt/${dev}
sudo mount /dev/mapper/
sudo touch /mnt/${dev}/foobar
done
Things are properly mounted vg-lv_normal on /mnt/lv_normal type ext4 (rw,relatime, data=ordered) vg-lv_thin on /mnt/lv_thin type ext4 (rw,relatime, stripe= 16,data= ordered) vg-lv_thin2 on /mnt/lv_thin2 type ext4 (rw,relatime, stripe= 16,data= ordered) vg-lv_thin3 on /mnt/lv_thin3 type ext4 (rw,relatime, stripe= 16,data= ordered)
$ mount | grep lv
/dev/mapper/
/dev/mapper/
/dev/mapper/
/dev/mapper/
All files written normally normal/ foobar thin2/foobar thin3/foobar
$ ls -laF /mnt/*/foobar
-rw-r--r-- 1 root root 0 Jan 25 13:10 /mnt/lv_
-rw-r--r-- 1 root root 0 Jan 25 13:10 /mnt/lv_thin/foobar
-rw-r--r-- 1 root root 0 Jan 25 13:10 /mnt/lv_
-rw-r--r-- 1 root root 0 Jan 25 13:10 /mnt/lv_
lsblk holds the thin LVs as it should mythinpool_ tmeta 252:1 0 12M 0 lvm -tpool 252:3 0 10G 0 lvm mythinpool_ tdata 252:2 0 10G 0 lvm mythinpool- tpool 252:3 0 10G 0 lvm -vg-mythinpool 252:4 0 10G 0 lvm mythinpool_ tdata 252:2 0 10G 0 lvm mythinpool- tpool 252:3 0 10G 0 lvm -vg-mythinpool 252:4 0 10G 0 lvm
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 8G 0 disk
`-vda1 253:1 0 8G 0 part
|-vg-lv_normal 252:0 0 5G 0 lvm /mnt/lv_normal
|-vg-
| `-vg-mythinpool
| |-vg-mythinpool 252:4 0 10G 0 lvm
| |-vg-lv_thin 252:5 0 5G 0 lvm /mnt/lv_thin
| |-vg-lv_thin2 252:6 0 5G 0 lvm /mnt/lv_thin2
| `-vg-lv_thin3 252:7 0 5G 0 lvm /mnt/lv_thin3
`-vg-
`-vg-
|
|-vg-lv_thin 252:5 0 5G 0 lvm /mnt/lv_thin
|-vg-lv_thin2 252:6 0 5G 0 lvm /mnt/lv_thin2
`-vg-lv_thin3 252:7 0 5G 0 lvm /mnt/lv_thin3
vdb 253:16 0 8G 0 disk
`-vdb1 253:17 0 8G 0 part
`-vg-
`-vg-
|
|-vg-lv_thin 252:5 0 5G 0 lvm /mnt/lv_thin
|-vg-lv_thin2 252:6 0 5G 0 lvm /mnt/lv_thin2
`-vg-lv_thin3 252:7 0 5G 0 lvm /mnt/lv_thin3
vdc 253:32 0 8G 0 disk
`-vdc1 253:33 0 8G 0 part
vdd 253:48 0 366K 0 disk
vde 253:64 0 8G 0 disk
|-vde1 253:65 0 8G 0 part /
`-vde2 253:66 0 8M 0 part
Now rebooting to test the reported issue.
But after reboot all looks sane, lsblk, lvdisplay, dev/mapper they all are as expected.
Of course things are not mounted, but I didn't create any fstab entries, so vg-${dev} /mnt/${dev}; done
for dev in lv_normal lv_thin lv_thin2 lv_thin3; do sudo mount /dev/mapper/
All mount just fine and the file is still there.
You reported "I was able to replicate the issue. I created VG and LV and rebooted the system. Found that devicemapper entries for corresponding devices are missing after reboot. However, LVM commands like 'vgdisplay' and 'lvdisplay' show proper info, but 'lsblk' doesn't show the device's LVM related info after reboot."
Could you either
1. report your exact steps on a fresh system to cause this
or
2. modify the steps I reported until the issue shows up