How to force mdadm to stop RAID5 array?
I realize that this is an old question and the original poster believed that SAMBA was the issue, but I experienced the same exact problem and think that very likely the issue was not SAMBA (I actually don’t even have SAMBA), since it didn’t show up in the lsof
output, but rather the user was already in the RAID mount-point directory when they switched to root or did a sudo.
In my case, the problem was that I started my root shell when my regular user was in a directory located on that mounted /dev/md127
drive.
user1@comp1:/mnt/md127_content/something$ su -
root@comp1:~# umount /dev/md127
umount: /dev/md127: target is busy
Here is the output of lsof
in my case:
root@comp1:root@comp1:~# lsof | grep /dev/md127
md127_rai 145 root cwd DIR 253,0 4096 2 /
md127_rai 145 root rtd DIR 253,0 4096 2 /
md127_rai 145 root txt unknown /proc/145/exe
Even though lsof | grep md125
didn’t show any processes except [md127_raid1]
, I could not unmount /dev/md127
. And while umount -l /dev/md127
does hide /dev/md127
from the output of mount
, the drive is apparently still busy, and when mdadm --stop /dev/md127
is attempted, the same error is shown:
mdadm: Cannot get exclusive access to /dev/md127:Perhaps a running process, mounted filesystem or active volume group?
SOLUTION is simple: check if there are any users logged in who are still in a directory on that drive. Especially, check if the root shell you are using was started when your regular user's current directory was on that drive. Switch to that users shell (maybe just exit
your root shall), move somewhere else, and umount
and mdadm --stop
will work:
root@comp1:~# exit
user1@comp1:/mnt/md127_content/something$ cd /
user1@comp1:/$ su -
root@comp1:~# umount /dev/md127
root@comp1:~# mdadm --stop /dev/md127
mdadm: stopped /dev/md127
If you're using LVM on top of mdadm, sometimes LVM will not delete the Device Mapper devices when deactivating the volume group. You can delete it manually.
- Ensure there's nothing in the output of
sudo vgdisplay
. - Look in
/dev/mapper/
. Aside from thecontrol
file, there should be a Device Mapper device named after your volume group, e.g.VolGroupArray-name
. - Run
sudo dmsetup remove VolGroupArray-name
(substitutingVolGroupArray-name
with the name of the Device Mapper device). - You should now be able to run
sudo mdadm --stop /dev/md0
(or whatever the name of themdadm
device is).
I was running into similar issues but I didn't have the raid device mounted in any way. Stopping SAMBA didn't seem to help either. lsof
showed nothing.
Everything just resulted in:
# mdadm --stop /dev/md2
mdadm: Cannot get exclusive access to /dev/md2:Perhaps a running process, mounted filesystem or active volume group?
What finally fixed it for me was remembering that this was a swap partition - so I just had to swapoff /dev/md2
- this allowed me to mdadm --stop /dev/md2
successfully.