Cosa succede in NFS se 2 o più server tentano di scrivere lo stesso file contemporaneamente?

StackOverflow https://stackoverflow.com/questions/3832646

  •  26-09-2019
  •  | 
  •  

Domanda

sto lavorando su una webapp PHP che fa il ridimensionamento automatico delle immagini e sto pensando di conservare le copie memorizzate nella cache sul NFS montato NAS in modo che sia facile per me per svuotare la cache quando le immagini vengono aggiornate.

L'unica cosa che mi preoccupa è ciò che accade in generale, con NFS, se 2 o più dei server nel cluster stanno cercando di creare lo stesso file di cache di immagini allo stesso tempo?

C'è una buona possibilità che quando la cache si svuota per gli aggiornamenti dei contenuti che potrebbero collidere del genere, ma non ho un ottimo modo per testare questo scenario in via di sviluppo perché sto lavorando solo su una singola casella.

Chiunque abbia esperienza su questo?

È stato utile?

Soluzione

Dipende da come si apre il file. Se si apre il file in modalità "append", allora Unix / Linux sarà effettivamente scrivere il contenuto di una cache fino a quando si crea un nuovo personaggio-line, quindi si attacca la nuova linea fino alla fine del file (over-scrittura del " end-of-file" modello di byte) e scrive un nuovo "end-of-file". In questo caso, se due persone cercano di scrivere allo stesso file contemporaneamente allora entrambe le linee di scrittura passerà attraverso, allegando se stessi una riga alla volta nell'ordine in cui sono stati ricevuti. Così si potrebbe aspettare qualcosa di simile:

This was the old contents
of the file
The first script added
The second script added
this line (script 1)
this line (script 2)

Nel raro caso che due comandi "Write" arrivano esattamente nello stesso tempo (fino a precisione nanosecondi) il sistema operativo crea effettivamente uno stato di interruzione. E 'fino al sistema operativo come gestisce questo, ma la maggior parte sarà solo generare due numeri casuali per decidere chi inizia per primo.

Se si apre il file in modalità "Write" (detto che volevi per aggiungere contenuti al centro), poi in realtà si deve bloccare il file per fare questo. Il secondo script PHP genera un errore dicendo che non poteva aprire il file.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top