Hi all,
We run Qlustar 14 with the standard Spack "HPC Core Stack" setup (softadm group, /srv/apps NFSv3 export, diskless netboot compute nodes). We ran into a reproducible issue that we tracked down fully and wanted to share, since it doesn't seem to be documented anywhere and may affect other sites with the same standard layout.
## Symptom
After `spack install <pkg>` completes on the head node, the new package is correctly visible via `spack find` on the head node immediately, but stays INVISIBLE from `spack find` on compute nodes for an unpredictable amount of time — anywhere from hours to several days. Raw reads of `.spack-db/index.json` on the affected compute node (via `grep`/`cat`) show the file IS up to date at the filesystem level (correct mtime/size/content), but `spack find` on that same node, at that same moment, still returns the stale package list. So it isn't a filesystem staleness problem in the usual sense — the data is there and correct, but the client's NFS session serving it isn't being refreshed.
## Root cause found
The compute nodes mount `/srv/apps` (NFSv3, hard, tcp) at boot. This mount is NOT in `/etc/fstab` in our default netboot image — it's set up directly during boot by the image/initramfs, outside of fstab.
We confirmed via `/proc/self/mountstats` that the mount's `age` field stays constant (multiple days) even immediately after running `mount -o remount /apps/local` as root. In other words, **`-o remount` does not reset the underlying NFS session at all** — it's a superficial VFS-level operation. We initially believed a remount was fixing the visibility issue (it appeared to work in a few manual tests), but a follow-up sweep showed previously "fixed" nodes degraded again within hours — which matches: the apparent fix was never a real session refresh, just coincidental timing.
The actual fix is a genuine `umount` + `mount` cycle (not `-o remount`). After that, `age` in mountstats correctly resets to 0, and `spack find` immediately reflects the current DB.
## Fix validated in production (18 compute nodes)
Interesting operational detail: since we deliberately avoid `-f`/`-l` on the `umount`, this is safe to run even on nodes with active jobs. On nodes where a job had open file handles under the mount, `umount` simply fails cleanly ("device is busy") without touching anything — but the subsequent `mount` still succeeds, stacking a fresh NFS session on top of the busy one underneath. Processes with the old mount already open keep working unaffected; new path lookups get the fresh session. We validated this across all 18 compute nodes in one pass, without filtering for idle state: 18/18 converged to the correct package count, zero jobs affected.
## Questions for the list
- Has anyone else hit this specific NFSv3-session-staleness-vs-remount behavior with Spack on Qlustar's standard /srv/apps layout? - Is there a recommended/supported way to trigger a real per-node NFS session refresh after Spack installs (e.g. a hook in the install workflow, or a documented cron pattern), rather than each site reinventing this? - Is NFSv4 (with its integrated locking/session model) considered a supported alternative for /srv/apps in a future Qlustar release, given /srv was reportedly chosen specifically to keep that door open?
Happy to share our diagnostic scripts / the umount+mount wrapper we use if useful to anyone else.
Thanks, Gonzalo Arroyo IFIMAR-UNMDP / CONICET HPC cluster
Dear Gonzalo
you forgot to mention an important detail in your mail: What edge architecture are your netboot nodes on, Ubuntu 24.04 or AlmaLinux 8?
Best,
Roland
On 8/27/26 19:35, garroyo--- via Qlustar General wrote:
Hi all,
We run Qlustar 14 with the standard Spack "HPC Core Stack" setup (softadm group, /srv/apps NFSv3 export, diskless netboot compute nodes). We ran into a reproducible issue that we tracked down fully and wanted to share, since it doesn't seem to be documented anywhere and may affect other sites with the same standard layout.
## Symptom
After `spack install <pkg>` completes on the head node, the new package is correctly visible via `spack find` on the head node immediately, but stays INVISIBLE from `spack find` on compute nodes for an unpredictable amount of time — anywhere from hours to several days. Raw reads of `.spack-db/index.json` on the affected compute node (via `grep`/`cat`) show the file IS up to date at the filesystem level (correct mtime/size/content), but `spack find` on that same node, at that same moment, still returns the stale package list. So it isn't a filesystem staleness problem in the usual sense — the data is there and correct, but the client's NFS session serving it isn't being refreshed. ..................