¿Se pueden desvincular los archivos abiertos en volúmenes montados en NFS mientras las aplicaciones que todavía los tienen abren lectura / escritura?

9

¿NFS me permite desvincular / eliminar archivos abiertos como puedo hacer con los sistemas de archivos locales?

La razón por la que pregunto es que estoy desarrollando algo que se ejecuta en varios servidores y que puede acceder a NFS como back-end. Simplifica un poco las cosas si puedo desvincular un archivo abierto.

Esta es una buena característica de los sistemas de archivos de Linux (¿Unix?) Que puede desvincular un archivo que está abierto. Simplemente elimina la entrada del directorio. El archivo todavía está disponible para un proceso que lo mantiene abierto mientras esté abierto. Una vez cerrado, el inodo se destruye.

¿Esa misma funcionalidad es válida para los archivos abiertos en montajes NFS?

Mate
fuente
Es posible que desee reformular (para evitar la disminución de votos), a primera vista parece que está preguntando si puede eliminar archivos usando NFS, lo que me dejó bastante perplejo sobre por qué haría una pregunta tan básica con la cantidad de puntos que tener. :-)
Red Tux

Respuestas:

9

La respuesta corta es con advertencias.

Dado que NFSv3 no tiene estado, el controlador del cliente NFS logra esto con algo llamado "cambio de nombre tonto", donde el archivo eliminado se renombra a algo como .nfsXXXXXXXXXX. Esto generalmente funciona, pero hay algunas advertencias en comparación con un sistema de archivos local. Por ejemplo, si el cliente falla, esos archivos .nfsXXXX no se eliminarán y tendrá que limpiarlos manualmente.

Creo que a partir de NFSv4.1 el protocolo tiene las características requeridas para implementar delete-on-last-close sin cambiar el nombre tonto, pero no sé si algún cliente / servidor todavía implementa esto.

janneb
fuente
Cabe señalar que esto funciona solo cuando el archivo se abre en el mismo cliente que lo desvincula, ya que NFS no tiene estado.
Quentin Casasnovas