Accedi ai file situati nel filesystem sottostante di un mountpoint NFS


8

Forse questa è una richiesta strana, ma è l'opposto della domanda dettagliata in:

È possibile visualizzare i contenuti di un mount NFS sottostante senza smontare il contenuto NFS?

Ho un accordo in cui i server Linux su più siti remoti montano una condivisione NFS da un server centrale (tutto CentOS 5.x). Pensa: /opt/softwareo qualcosa di simile.

Se tutto va bene, i sistemi client montano l'esportazione NFS dal server principale e vengono eseguiti senza incidenti. I dati contenuti nella condivisione non cambiano frequentemente (forse settimanalmente).

Sono preoccupato per la situazione in cui si verifica una perdita di connettività al server NFS principale (interruzione del server NFS, taglio della fibra, ecc.). A causa del fatto che i dati condivisi non cambiano spesso, mi piacerebbe che questi sistemi fossero in grado di funzionare autonomamente se perdessero il montaggio NFS.

Supponiamo che il mount scompaia, mi piacerebbe usare i file locali presenti /opt/softwaresotto il mount NFS nella stessa posizione. Inoltre, terrei una sincronizzazione giornaliera di questi file.

Il mount NFS è in lettura / scrittura perché è necessario apportare modifiche al volume montato da qualsiasi sito client.

È possibile? Come posso accedere (o sovrascrivere) i file nella directory sottostante? Potrebbero esserci problemi di timeout? Ci sono opzioni / suggerimenti per il montaggio che potrebbero esserti utili?

Risposte:


16
mount -o bind / /mnt

Quando guardi / mnt / opt / software troverai i file (se presenti) che si trovano sotto il mount in / opt / software.


Ma questo monterebbe tutto il filesystem di root in / mnt. Hmm ...
ewwhite,

1
Così? Che danno sta per fare? Ti consente solo di sincronizzare i file che desideri. Puoi anche metterlo in / private / root dove / private è 700 root in modo che nessun altro possa ottenere quei file, non che farebbe alcun danno se potessero avere poiché hanno esattamente le stesse autorizzazioni. Sembra praticamente una risposta esatta alla tua domanda. Ora, se la tua domanda è come recuperare una volta che il server NFS è andato via, è completamente diverso e probabilmente comporta lo smontaggio forzato. Ciò invaliderà e quindi interromperà la metà dei processi forzando comunque un riavvio.
Seth Robertson,

Questo è stato vicino, ma ho deciso di montare la directory a cui avevo bisogno di accedere con il parametro bind in un'altra posizione sul filesystem.
ewwhite,

In realtà questo è molto utile in un caso specifico e vorrei sapere di questa opzione molto tempo fa. Mi sono appena imbattuto di nuovo in questa situazione. Fondamentalmente avevo una directory / usr che era legata al filesystem di root e volevo spostarla nel suo filesystem per recuperare spazio sul root. Quindi, dopo aver creato usr e migrato i dati lì e aver riavviato per montare il nuovo usr, come si rimuovono facilmente i dati vecchi / usr? Un modo è utilizzare la modalità utente singolo e sperare che nulla stia usando i file lì. Un altro modo è utilizzare questo trucco di associazione e rimuovere la directory dei dati da un percorso alternativo.
deltaray,

8

Questo è possibile utilizzando l' mount --bindopzione.

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.

Quindi sono stato in grado di farlo mount --bind /opt/software /foo

E quindi applicare il mount NFS sopra /opt/software, mantenendo la possibilità di vedere i file sottostanti /foo.


3

Ciò di cui potresti aver bisogno, poiché i file sono relativamente statici, è rsync. A meno che più client remoti non abbiano la possibilità di modificare i file. Se i dati sono essenzialmente di sola lettura, perché non risincronizzare un paio di volte al giorno tramite un lavoro simile a cron, su ogni macchina. Ancora una volta, potrei mancare il punto, ma se i dati su NFS sono fondamentalmente di sola lettura, questo potrebbe farlo.


Rsync avrebbe tradizionalmente senso, ma esiste la possibilità che i file vengano modificati in un determinato sito. Se stavo montando in sola lettura, rsync sarebbe una scelta migliore. A meno che tu non conosca una soluzione di sincronizzazione bidirezionale ...
ewwhite,

Una cosa che puoi fare con rsync è impostare un cron job che controlla i timestamp sui tuoi file su ogni macchina, e forse lo fa ogni 5 minuti. Non appena viene notato un aggiornamento, spingere i file su nfs e, allo stesso tempo, creare un file trigger che ogni altra macchina controlla ad un periodo fisso. Non appena vedono questo trigger, eseguono tutti rsync per ottenere la maggior parte dei file aggiornati da NFS.
slashdot,

Potrei provare Unison come approccio per risolvere questo.
ewwhite,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.