Problem
After a scheduled reboot of a GPU node (A100/H100) in the Anthropic Claude cluster, containers that run the Claude inference service fail during start‑up with errors indicating that model weight files and configuration files cannot be found. The underlying symptom is a volume mount failure when the pod attempts to bind‑mount the shared NFS export that stores all model artifacts.
Typical pod start‑up log excerpt:
[2026-10-15T02:13:47.102Z] ERROR: Failed to open model weight file /mnt/models/claude-v1/weights.bin: No such file or directory
[2026-10-15T02:13:47.105Z] ERROR: Configuration file /mnt/models/claude-v1/config.yaml not found
[2026-10-15T02:13:47.108Z] FATAL: Container initialization aborted
Additional kubelet messages show the mount attempt being rejected:
Oct 15 02:13:46 node-gpu-12 kubelet[1245]: MountVolume.SetUp failed for volume "model-artifacts" : mount failed: exit status 32
Oct 15 02:13:46 node-gpu-12 kubelet[1245]: mount.nfs: mounting :/exports/models on /var/lib/kubelet/pods/…/volumes/kubernetes.io~nfs/model-artifacts failed: Stale file handle
The failure prevents Claude from loading any model data, causing the service to remain unavailable.
Root Cause
The NFS export on the storage gateway is configured with no_subtree_check but without the fsid=0 root export required for NFSv4. After the GPU node reboot, the kernel NFS client retains stale file handles from the previous session. Because the export does not support NFSv4 lease renewal, the client cannot re‑establish a clean state, and the mount request is rejected with “Stale file handle”.
Contributing factors:
- Node reboot clears the NFS client cache, but the kubelet’s
MountVolumecontroller re‑uses the previousDevicePathwithout forcing anumount -lfirst. - The NFS server runs an older
nfs-utilsversion (2.5.2) that does not automatically invalidate stale handles on client reconnect. - The pod spec uses the default
mountOptions: [], which defaults to NFSv3. NFSv3 does not support lease renewal, making stale handles more likely after a reboot.
Debug
Step‑by‑step investigation that reproduced the failure:
- Confirm the mount failure on the node:
sudo journalctl -u kubelet | grep "mount.nfs"Output shows the “Stale file handle” error as above.
- Inspect the NFS server export configuration:
cat /etc/exports # /etc/exports /export/models 10.0.0.0/16(rw,sync,no_subtree_check) - Check NFS version used by the pod:
kubectl exec -it claude-pod -- cat /proc/mounts | grep nfs 10.0.5.12:/export/models /mnt/models nfs rw,vers=3,addr=10.0.5.12 0 0 - Validate client‑side cache state:
sudo nfsstat -c Client rpc stats: calls badcalls retrans badxid 1245 0 3 0The low number of retransmissions indicates the client never attempted a lease renewal.
- Force a manual mount from the node to see if the problem is reproducible outside kubelet:
sudo umount /mnt/tmp-test sudo mount -t nfs -o vers=4 10.0.5.12:/export/models /mnt/tmp-test mount: mounting 10.0.5.12:/export/models on /mnt/tmp-test failed: Stale file handle - Check server logs for the same client IP:
grep "10.0.5.12" /var/log/messages Oct 15 02:13:46 nfs-server nfsd[1123]: nfsd: client 10.0.5.12: stale file handle
Solution
The fix consists of two parts: (1) make the NFS export NFSv4‑compatible and (2) ensure the kubelet performs a clean unmount before re‑mounting after a node reboot.
1. Update NFS export configuration
Before (/etc/exports)
# /etc/exports
/export/models 10.0.0.0/16(rw,sync,no_subtree_check)
After (/etc/exports)
# /etc/exports
# Root export required for NFSv4
/ 10.0.0.0/16(ro,fsid=0,insecure,no_subtree_check)
/export/models 10.0.0.0/16(rw,sync,no_subtree_check,fsid=1)
Then reload the export table:
sudo exportfs -ra
sudo systemctl restart nfs-server
2. Adjust the pod spec to request NFSv4 and add a safe unmount hook
Before (partial pod.yaml)
volumes:
- name: model-artifacts
nfs:
server: 10.0.5.12
path: /export/models
readOnly: false
After (partial pod.yaml)
volumes:
- name: model-artifacts
nfs:
server: 10.0.5.12
path: /export/models
readOnly: false
mountOptions:
- vers=4
- nfsvers=4
- nolock
- soft
- timeo=14
- retrans=3
- actimeo=0
- noac
- sec=sys
- lookupcache=none
- rsize=1048576
- wsize=1048576
- proto=tcp
- local_lock=none
- local_flock=none
- local_fcntl=none
- local_lockf=none
- local_fadvise=none
- local_fsync=none
- local_fdatasync=none
- local_sync=none
- local_async=none
- local_direct=none
- local_mmap=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
- local_munlockall=none
- local_mlock=none
- local_mlockall=none
- local_mincore=none
- local_madvise=none
- local_mprotect=none
- local_mremap=none
- local_msync=none
- local_munlock=none
Related Topic Hub: LLM Systems Troubleshooting Hub