dmsetup remove before trying
Note: Volume group and logical volume names have been substituted here. I’m not entirely sure it’s necessary, but better safe than sorry. If following this, please use the names of your volume group[s] and logical volume[s]
I am in the process of combining fileserver information, and so I have been touching parts of the system not usually looked at in the normal case of day-to-day operations. For some reason, on one of my logical volumes I had created a partition table and added a partition. Of course, that worked normally so there was no reason to be aware of this — clearly I had blanked the fact that I did it at all not long after doing so — until recently.
Logical volume vg/lv-old is used by another device.
After copying the data over to a new logical volume, I wanted to remove the now-unnecessary original logical volume that contained the partition. Easy, right?
# lvremove -v /dev/vg/lv-old DEGRADED MODE. Incomplete RAID LVs will be processed. Using logical volume(s) on command line Logical volume vg/lv-old is used by another device.
Okay, what’s using it?
cat /proc/mounts reports that it isn’t mounted.
fuser return nothing. Maybe retrying the command will work*… nope.
There are a bunch of posts around this, mostly saying “make sure it is umounted first”, or “try using
lvremove“. And the old favourite: “a reboot fixed it”.
Find Out device-mapper’s Mapping
Well, the culprit in this case seemed to be
device-mapper creating a mapping which counted as ‘in-use’. Check for the mapping via:
# dmsetup info -c | grep old vg-lv--old 253 9 L--w 1 2 1 LVM-6O3jLvI6ZR3fg6ZpMgTlkqAudvgkfphCyPcP8AwpU2H57VjVBNmFBpL Tis8ia0NE
Find Out Mapped Device
Then use that to find out what is holding it:
$ ls -la /sys/dev/block/253\:9/holders drwxr-xr-x 2 root root 0 Dec 12 01:07 . drwxr-xr-x 8 root root 0 Dec 12 01:07 .. lrwxrwxrwx 1 root root 0 Dec 12 01:07 dm-18 -> ../../dm-18
Remove Device (via `dmsetup remove`)
Then do a
dmsetup remove on that
# dmsetup remove /dev/dm-18
And you’re good to go with
# lvremove -v /dev/vgraid6/lv-old DEGRADED MODE. Incomplete RAID LVs will be processed. Using logical volume(s) on command line Do you really want to remove active logical volume lv-old? [y/n]: y Archiving volume group "vg" metadata (seqno 35). Removing vg-lv--old (253:9) Releasing logical volume "lv-old" Creating volume group backup "/etc/lvm/backup/vg" (seqno 36). Logical volume "lv-old" successfully removed
Bish bash bosh!
*: I’m not sure of the thought process behind “just try it again”.
I’m reminded of a short bit of Darrell Hammond’s stand up (paraphrased):
“You know that message you get when you dial the wrong number that tells you to ‘check you have the right number and dial again’? Well, women will check the number and try again. Men will try the same number, but this time we’ll push the buttons a ******** harder…”