Tecnología · GUÍA PRÁCTICA
¿NFS dice “Stale file handle”? Demuestra qué identidad del servidor cambió antes de remontar
ESTALE significa que una referencia guardada ya no nombra un objeto válido. Separa el fallo de export al montar del objeto inválido durante una operación, repara el servidor y valida con un cliente.

ESTALE significa que una referencia guardada ya no nombra un objeto válido. Separa el fallo de export al montar del objeto inválido durante una operación, repara el servidor y valida con un cliente.
Linux define ESTALE como Stale file handle; puede aparecer en NFS y otros sistemas. Los handles persistentes de NFSv4 quedan stale si se elimina el objeto o desaparece su filesystem.
1. Congela el incidente y protege escritores
Guarda comando, ruta, cliente, servidor, versión NFS, primera hora y logs de kernel o servicio. Pausa tareas que escriben por el mount; no empieces con lazy unmount o flush general.
En cliente captura findmnt y compáralo con uno sano. En servidor guarda backing mount, exportfs -v y logs de almacenamiento/NFS antes de cambiar.
2. Clasifica dónde aparece ESTALE
Si mount devuelve ESTALE, revisa export solicitado y tabla viva. Si falla ls, open, chdir o una app en un mount existente, localiza la primera ruta y prueba objetos vecinos.
Tras borrar y recrear, restaurar, cambiar dataset o failover, el mismo nombre puede ser otro objeto y la referencia antigua queda inválida.
3. Demuestra qué identidad cambió
Comprueba que la ruta exportada está en el filesystem previsto y no en el directorio vacío bajo un mount ausente. Compara UUID/device, fsid, opciones y eventos de rename, restore, mover o migration.
RFC 7530 exige stale para objetos eliminados y permite staleness si el filesystem desaparece del namespace. Un reboot marca el tiempo, no demuestra causa.
4. Repara solo el límite probado
Restaura primero el almacenamiento y corrige ruta o identidad. Sincroniza la tabla viva solo si la evidencia la señala. Un unexport o flush general afecta otros clientes y estado NFSv4.
No cambies subtree_check, fsid, versión o mount options por otro caso. Prueba una hipótesis y un cambio controlado cada vez.
5. Reconecta un cliente y valida la carga
Con el namespace estable, detén un cliente, sal de cwd stale, desmonta exactamente y monta otra vez. Si un proceso no puede parar, escala sin ocultarlo con lazy detach.
Exige lookup nuevo, lectura representativa, escritura controlada si procede, metadata y una transacción de app. Compara otro cliente y logs antes de restaurar todos.
