Device already mounted or mountpoint busy take 2
See my first article about fighting this mis-leading message. Clearly, Linux's use of the "device already mounted or mountpoint busy" string is woefully overloaded.
Here's the rundown:
- This time around, I'm on CentOS 7.1.1503
- I had a 5-disk software RAID-6 device, md125, mounted to /mnt/share. This was to be moved to /mnt/oldshare, and replaced with a new device...
- The new device is a 2-disk software RAID-1 device, md124. This device was to become the new /mnt/share.
- md125 (aka oldshare) is ext4, and md124 is xfs.
I un-mounted md125 on /mnt/share, updated /etc/fstab, and mounted both devices where I wanted them (md125 on oldshare, and md124 on share).
No problems, great! But then I thought, actually, oldshare should probably be mounted read-only, just to prevent any accidental writes to it. No problem: unmount /mnt/oldshare, add the "ro" flag to the mount options in /etc/fstab, and mount... or not:
# mount -o ro /mnt/oldshare/ mount: /dev/md125 is already mounted or /mnt/oldshare busy
Hrm, what? I just unmounted, how could it possibly be mounted or busy?
I tried all the ususal suspects: lsof, fuser, mount, /proc/mounts, /etc/mtab... nope, all those are clean. Next I ran through the useful list of suggestions on this helpful ServerFault post, CentOS thinks Disk is busy, can't mount or fsck.
First up, blkid shows the device as in-use:
# blkid -c /dev/null -o list device fs_type label mount point UUID ------------------------------------------------------------------------------ /dev/md125 ext4 (in use) 2d72dbd0-70c4-4006-bb17-771c249f531d
OK, it's in use, but by what?
The dmsetup table command doesn't show any references to the device in question, only the LVM partitions used for my system's root partition. Unlike the ServerFault post above, the multipath command did not give me the answer:
# multipath -ll Dec 16 09:21:38 | DM multipath kernel driver not loaded Dec 16 09:21:38 | /etc/multipath.conf does not exist, blacklisting all devices. Dec 16 09:21:38 | A default multipath.conf file is located at Dec 16 09:21:38 | /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf Dec 16 09:21:38 | You can run /sbin/mpathconf to create or modify /etc/multipath.conf Dec 16 09:21:38 | DM multipath kernel driver not loaded
Ugh, so now what? Well, on a whim, I tried to use the remount option with the mount command:
# mount -o remount,ro /mnt/oldshare/
And that was it! After that, I could unmount, then mount read-only using the /etc/fstab's "ro" option.