Acceda a archivos ubicados en el sistema de archivos subyacente de un punto de montaje NFS

8

Quizás esta sea una solicitud extraña, pero es lo opuesto a la pregunta detallada en:

¿Es posible ver el contenido de un montaje NFS subyacente sin desmontar el contenido NFS?

Tengo un acuerdo en el que los servidores Linux en múltiples sitios remotos montan un recurso compartido NFS desde un servidor central (todos CentOS 5.x). Piensa: /opt/softwareo algo similar.

Si todo está bien, los sistemas del cliente montan la exportación NFS desde el servidor principal y se ejecutan sin incidentes. Los datos contenidos en el recurso compartido no cambian con frecuencia (quizás semanalmente).

Me preocupa la situación en la que hay una pérdida de conectividad con el servidor NFS principal (corte del servidor NFS, corte de fibra, etc.). Debido al hecho de que los datos compartidos no cambian a menudo, me gustaría que estos sistemas puedan ejecutarse de forma independiente si pierden el montaje NFS.

Digamos que la montura desaparece, me gustaría usar los archivos locales /opt/softwareubicados debajo de la montura NFS en la misma ubicación. Además, mantendría una sincronización diaria de esos archivos.

El montaje NFS es de lectura / escritura porque los cambios en el volumen montado deben ser posibles desde cualquiera de los sitios del cliente.

es posible? ¿Cómo accedo (o sobrescribo) a los archivos en el directorio subyacente? ¿Podría haber problemas de tiempo de espera? ¿Hay alguna opción / consejo de montaje que pueda ayudar con esto?

ewwhite
fuente

Respuestas:

16
mount -o bind / /mnt

Cuando mira / mnt / opt / software encontrará los archivos (si los hay) que están debajo del soporte en / opt / software.

Seth Robertson
fuente
Pero eso montaría todo el sistema de archivos raíz en / mnt. Hmm ...
ewwhite
1
¿Entonces? ¿Qué daño va a hacer? Simplemente te permite sincronizar los archivos que deseas. Incluso puede ponerlo en / private / root donde / private es 700 root para que nadie más pueda acceder a esos archivos, no es que haría ningún daño si pudieran, ya que tienen exactamente los mismos permisos. Parece básicamente una respuesta exacta a su pregunta. Ahora, si su pregunta es cómo recuperarse una vez que el servidor NFS desaparece, eso es completamente diferente y probablemente implique el desmontaje forzado. Eso invalidará y, por lo tanto, romperá la mitad de sus procesos forzando un reinicio de todos modos.
Seth Robertson
Esto estuvo cerca, pero decidí montar el directorio al que necesitaba acceso con el parámetro de enlace en otra ubicación en el sistema de archivos.
ewwhite
En realidad, esto es muy útil en un caso específico y desearía haber tenido conocimiento de esta opción hace mucho tiempo. Me encontré con esta situación nuevamente. Básicamente tenía un directorio / usr que estaba vinculado al sistema de archivos raíz y quería moverlo a su propio sistema de archivos para recuperar espacio en la raíz. Entonces, después de hacer usr y migrar los datos allí y reiniciar para montar el nuevo usr, ¿cómo elimina fácilmente los datos antiguos / usr? Una forma es usar el modo de usuario único y esperar que nada esté usando archivos allí. Otra forma es usar este truco de enlace y eliminar el directorio de datos de una ruta alternativa.
deltaray
8

Esto es posible utilizando la mount --bindopción

Since Linux 2.4.0 it is possible to remount part of the file hierarchy somewhere else. The call is
   mount --bind olddir newdir
After this call the same contents is accessible in two places.

Entonces pude mount --bind /opt/software /foo

Y luego aplique el montaje NFS /opt/software, conservando la capacidad de ver los archivos subyacentes en /foo.

ewwhite
fuente
3

Lo que puede necesitar, ya que los archivos son relativamente estáticos, es rsync. A menos que varios clientes remotos tengan la capacidad de cambiar archivos. Si los datos son esencialmente de solo lectura, ¿por qué no simplemente sincronizar un par de veces al día a través de un trabajo tipo cron, en cada máquina? Una vez más, puedo estar perdiendo el punto, pero si los datos en NFS son básicamente de solo lectura, esto podría hacerlo.

slashdot
fuente
Tradicionalmente, Rsync tendría sentido, pero existe la posibilidad de que los archivos se modifiquen en cualquier sitio. Si estuviera montando solo lectura, rsync sería una mejor opción. A menos que sepa de una solución de sincronización de dos vías ...
ewwhite
Una cosa que puede hacer con rsync es configurar un trabajo cron que verifique las marcas de tiempo en sus archivos en cada máquina, y tal vez lo haga cada 5 minutos. Tan pronto como se note una actualización, empuje los archivos a nfs y, al mismo tiempo, cree un archivo desencadenante que las demás máquinas comprueben en un período fijo. Tan pronto como ven este disparador, todos ejecutan rsync para obtener la mayoría de los archivos actualizados de NFS.
slashdot
Puedo probar Unison como un enfoque para resolver esto.
ewwhite