What are the advantages/disadvantages of hard versus soft mounts in UNIX?

Solution 1:

A hard mount is generally used for block resources like a local disk or SAN. A soft mount is usually used for network file protocols like NFS or CIFS.

The advantage of a soft mount is that if your NFS server is unavailable, the kernel will time out the I/O operation after a pre-configured period of time. The disadvantage is that if your NFS driver caches data and the soft mount times out, your application may not know which writes to the NFS volumes were actually committed to disk.

Solution 2:

hard mounts and "intr" (interruptible) is a good compromise (for kernels before 2.6.25, see comment by Ryan Horrisberger) . The application is not fooled about successful writes, yet you can kill them if something clogs up the tubes.


Solution 3:

A hard mount using some kind of network file system (nfs or fuse) can (sometimes) block forever while trying to re-establish a broken connection. This means, every process trying to access that mount goes into disk sleep (D) until the device is available again or the system is rebooted.

Disk sleep can not be interrupted or killed. Its like the zombie of zombie processes.

In short, do not use hard mounts for network file systems, ever. You want the file system to fail (immediately, to processes using syscalls) if I/O is not possible. Otherwise, the memory that they claim may as well be leaked if the FS fails.