Détaché is a principled detachment layer for modern infrastructure. Unmount filesystems with surgical precision — lazily, forcefully, recursively — without leaving a trace in the hierarchy.
In infrastructure, as in all things, the measure of a system is not how it acquires resources — but how it releases them.
We have spent decades optimizing the attach. The mount. The connection. We have made it fast, parallel, resilient. But we have neglected the other half of the lifecycle. Detachment is an afterthought. An error case. A shutdown hook nobody tests.
Détaché exists because we believe letting go is harder than holding on. A filesystem that cannot be cleanly unmounted is not truly mounted — it is trapped. A reference that lingers after release is not persistence — it is a leak.
We build for the teams who understand that the most elegant infrastructure is the infrastructure that can disappear without a trace. Cleanly. Completely. On its own terms.
— The Détaché Research Lab, 2024
From lazy disconnects to recursive teardowns, Détaché gives infrastructure teams complete control over filesystem release at any scale.
Remove the filesystem from the hierarchy immediately, then clean up all references asynchronously once the last handle closes. No blocking. No waiting. No hangs on downed NFS servers.
-l --lazyWhen an NFS server goes unreachable and your team is staring at a hung terminal, Force Release severs the connection immediately. No negotiation. No timeout. Just freedom.
-f --forceUnmount an entire subtree in one operation. Détaché walks the hierarchy from leaves to root, detaching each nested mountpoint in dependency order. No orphans. No partial state.
-R --recursiveRelease every filesystem in your manifest with a single command. Filter by type, by mount options, or detach everything. One invocation for 400 nodes at shutdown.
-a --allSelectively detach only NFS shares while leaving local ext4 volumes attached. Or release every tmpfs without touching persistent storage. Surgical precision in fleet operations.
-t TYPEWhen a full detachment fails, Détaché automatically falls back to remounting the filesystem read-only — preserving data integrity while preventing further writes. Defense in depth.
-r --read-onlySimulate every detachment operation without executing a single syscall. Audit what would happen before it happens. The safety net your compliance team requires.
--fakeWhen a device is mounted at multiple points, release every single mountpoint in one atomic sweep. No hunting. No manual iteration. Complete device liberation.
-A --all-targetsPoint Détaché at a directory mountpoint or device. We resolve the actual mount entry from /proc/self/mountinfo, handling bind mounts, overlays, and stacked filesystems transparently.
Détaché inspects open file descriptors, working directories, and swap file usage. If the filesystem is busy, you choose: wait, force, or lazy-detach. No surprises. Full observability.
The kernel umount syscall fires. The VFS entry is removed from the namespace. For lazy mode, cleanup continues asynchronously. For force mode, the NFS client state is purged immediately.
Post-detachment verification confirms zero lingering references. Loop devices are freed
(-d). Verbose mode (-v) emits a structured audit trail. Nothing is
left behind.
Meridian Cloud operated 1,200 nodes with an average of 14 NFS mounts each. During scheduled maintenance windows, their shutdown procedure hung for an average of 47 minutes waiting for unreachable NFS servers to timeout. In Q3 alone, this added up to 94 hours of lost maintenance time.
By deploying Détaché's lazy detachment with force-fallback across their fleet, Meridian
replaced their blocking shutdown sequence with a non-blocking teardown. The command:
détaché -a -l -f -t nfs
| Capability | Détaché | Competitor A | Competitor B |
|---|---|---|---|
| Lazy detachment | ✓ | Partial | ✗ |
| Force release (unreachable NFS) | ✓ | ✗ | ✗ |
| Recursive teardown | ✓ | ✗ | Partial |
| Fleet detach with type filtering | ✓ | Partial | ✗ |
| Graceful degradation (remount ro) | ✓ | ✗ | ✗ |
| Dry run / audit mode | ✓ | ✗ | ✓ |
| All-targets release | ✓ | ✗ | ✗ |
| Loop device cleanup | ✓ | Partial | ✗ |
| Structured audit trail | ✓ | ✗ | ✗ |
--all-targets flag now supports combined -R for recursive
multi-target teardown. Added structured JSON output for -v verbose mode.
Improved heuristics for detecting stale NFS handles before force release.
Lazy detachment now emits lifecycle events to the audit log. Reduced memory overhead of
recursive teardown by 40% through streaming mountinfo parsing. Fixed edge case where
--fake mode incorrectly updated mtab.
Major release. Introduced namespace-aware detachment (-N), over-mounted
filesystem support in recursive mode, and quiet mode (-q). Deprecated /etc/mtab
writes — all state now sourced from /proc/mounts.
Every plan includes verbose audit logs and graceful degradation by default.
-l)-f)-R)-t)--fake)-d)-a)-A)-r)-c)-n)"We had 1,200 nodes hanging on NFS unmount during maintenance windows. Détaché's lazy detach turned a 47-minute ordeal into sub-second non-blocking teardown. Our ops team wept with joy."
"The dry run mode alone justifies the subscription. We audit every detachment before execution in production. Our compliance team signed off in a single review cycle. That literally never happens."
"Recursive teardown with type filtering is sublime.
détaché -R -t tmpfs /mnt/ephemeral and every nested tmpfs is gone. Clean. No
orphaned loops. No partial state. It's beautiful engineering."
"The graceful degradation feature saved our data center. When force unmount failed on a corrupted ext4 volume, Détaché seamlessly remounted it read-only. Zero data loss. Customer for life."
A filesystem is busy when processes have open files on it, or when a working directory sits
within it. Détaché gives you three options: wait for processes to release (default), force
immediate detachment (-f), or lazy-detach (-l) which removes the
hierarchy entry immediately and defers cleanup until all handles close.
Lazy detachment removes the filesystem from the visible namespace immediately, but defers actual cleanup until the filesystem is no longer busy. It's ideal for preventing shutdown hangs caused by unreachable network shares. Note: a reboot is recommended soon after lazy-detaching network filesystems, as remounting is not possible.
Yes, when the filesystem was mounted with the user option in fstab. Since
util-linux 2.34, FUSE filesystems can also be unmounted by the mounting user. Since 2.35,
Détaché gracefully drops suid permissions and continues as a regular user when root isn't
required.
The --fake flag performs everything except the actual syscall. It validates
paths, checks busy state, resolves mountpoints — but never actually unmounts. It's a
production-safe dry run for auditing and compliance verification.
When the unmounted device was a loop device, the -d flag additionally frees the
loop device. For devices initialized with mount's autoclear feature (Linux 2.6.25+), this
happens automatically. For older setups, -d ensures clean loop device release.