Networking

Unix and Linux network configuration. Multiple network interfaces. Bridged NICs. High-availability network configurations.

Applications

Reviews of latest Unix and Linux software. Helpful tips for application support admins. Automating application support.

Data

Disk partitioning, filesystems, directories, and files. Volume management, logical volumes, HA filesystems. Backups and disaster recovery.

Monitoring

Distributed server monitoring. Server performance and capacity planning. Monitoring applications, network status and user activity.

Commands & Shells

Cool Unix shell commands and options. Command-line tools and application. Things every Unix sysadmin needs to know.

Home » Featured, Filesystems

Check Filesystem Mount Status

Submitted by on August 20, 2016 – 1:44 pm

Sometimes you just need to do a quick sanity check on the filesystem mount status to make sure everything in fstab is mounted and everything’s that mounted is in the fstab. If, like myself, you’re a fan of NFS and bind mounts, getting a clear picture can get a bit hairy. So here’s an easy command making use of comm and the excellent findmnt utility to show any filesystems that should be mounted according to fstab but for some reason are not mounted:

o="lvnu -t $(awk '{print $NF}' /proc/filesystems | sort -u | xargs | sed -e 's/ /,/g'),bind -o TARGET"
comm -13 <(findmnt -k${o} | sort -u) <(findmnt -s${o} | sort -u)

To see any active mounts that are not in fstab you can use the following command:
o="lvnu -t $(awk '{print $NF}' /proc/filesystems | sort -u | xargs | sed -e 's/ /,/g'),bind -o TARGET"
comm -23 <(findmnt -k${o} | sort -u) <(findmnt -s${o} | sort -u)

The first findmnt gives you a list of what’s mounted according to the kernel. And the second part gives you a list of what should be mounted according to the fstab. Pretty simple. However, findmnt may not be available on older Linux versions. A viable alternative is the monutpoint command. Here’s a quick script that will list any filesystems from the fstab that are not mounted:
#!/bin/bash
egrep '^(/|[[:alnum:]\.-]*:/)' /etc/fstab | egrep -v "\Wswap\W" | awk '{print $2}' | sort -u | while read m
do
	if [ $(mountpoint "${m}" 2>/dev/null 1>&2; echo $?) -ne 0 ]
	then
		echo "${m}"
	fi
done

And here’s something extra: it may also be useful to make sure that whatever is listed in fstab and mtab as read-write actually is:
#!/bin/bash
random=$(echo "`expr ${RANDOM}${RANDOM} % 100000`+1"|bc -l)
o="lvnu -t ext2,ext3,ext4,reiserfs,btrfs,xfs,jfs,zfs,efs,nfs,bind"
for fs in $(sort -u <(findmnt -m${o} -o TARGET,OPTIONS | egrep "\srw" | awk '{print $1}') \
<(findmnt -s${o} -o TARGET,OPTIONS | egrep "\srw" | awk '{print $1}'))
do
	echo "Checking ${fs}"
	s="$(touch "${fs}/${random}" 2>/dev/null; echo $?)"
	if [ ${s} -ne 0 ]
	then
		echo "$(findmnt -k${o} -o TARGET,SOURCE | grep -m1 "^${fs}") appears to be read-only"
	else
		if [ ! -z "${random}" ]
		then
		/bin/rm -f "${fs}/${random}"
		fi
	fi
done

 

Print Friendly, PDF & Email

Leave a Reply