Newsgroup: it.comp.os.linux.sys
Titolo: Curiosita': come SAMBA salva i file?

una curiosita' stimolata da una domanda su un forum di cad.
come avviene il salvataggio su un server samba dei dati di 
un'applicazione in esecuzione su un client windows?
Viene cancellato il vecchio file e poi scritto quello nuovo? Viene 
scritto quello nuovo, e salvo buon fine, cancellato quello vecchio?
Viene scritta una copia su /tmp e poi copiata sulla directory dei dati?
O infine comanda l'applicazione windows che decide come fare?

Ale wrote:

AFAIK samba non scrive nulla, nel senso che è il SO a scrivere sul 
disco, indipendentemente da samba/applicativo/altro OS.
Ciao.
-- 
*** Linux user # 198661 ---_ ICQ 33500725 ***
    ***  Home  
http://www.kailed.net
  ***
        ***  Powered by openSUSE  ***

 O infine comanda l'applicazione windows che decide come fare?
Ci sono delle funzioni implementate nel kernel che vengono usati da tutti i
programmi, compreso samba, per scrivere nel file.
Comunque non ha nessuna importanza, se non per un tentativo di recupero dati
con appositi tools, come viene eseguito dal gestore dei file, mai comandi
che il programma da, solo per esempio:
- file create, il file viene immediatamente creato o azzerato.
- file append, i dati vengo aggiunti in fondo al file
- file write, i dati del file vengono sovrascritti a partire dall'inizio o
dal punto che il programma richiede.
Poi il programma potrebbe scrivere su una copia e solo alla fine rinominarlo
come file ufficiale.
Comunque di solito se il programma o altro va' in crash durante la scrittura
il file in scrittura in quel momento (sia che sia il file ufficiale o una
copia) si troverà con dati parziali o corrotto.

Ale ha scritto:

Bella domanda..
Trattandosi di cad l'applicazione invia all'so (Win) la chiamata 
probabilmente riscrive interamente in file ma potrebbe pure fare degli 
append, dipende da come l'applicazione gestisce i suoi file, cmq a quel 
punto win deve inviarlo via ethernet quindi a naso direi che samba fa la 
cache del file in /tmp, una volta raccolti tutti i pacchetti verifica 
che il file non sia corrotto, quindi scrive il journal sul file system e 
di seguito sovrascrive il file e comunica a Win che il processo ï¿œ 
terminato..
Immagino che se l'utente termina l'applicazione CAD sul client non sia 
piï¿œ possibile ritornare ad uno stato precedente (Ctrl+z) quindi i file 
vengono sovrascritti e non ci sono vecchie versioni altrimenti avresti 
qualcosa come
disegno-001.cad
disegno-002.cad
ecc..
In pratica funziona come ogni altro programma..

 cache del file in /tmp, una volta raccolti tutti i pacchetti verifica
]zac[
Samba non fa cache dei pacchetti, lo fa il kernel, samba al massimo ha una
sua cache dei file o delle parti di file lette e scritte per velocizzare
l'accesso ai dati, e non è in grado (non è il suo compito) di prevenire la
corruzione dei contenuti dei file.

 In pratica funziona come ogni altro programma..
Grazie ai risponditori, era solo una curiosita' data da una segnalazione 
di malfunzionamento: un utente aveva problemi di rete e diceva ï¿œche 
questo gli provocava la perdita di file. Secondo lui, il cad in 
questione prima salva in \temp o simili, poi cancella la copia sul 
server, e poi riversa sul server quanto si trova dentro \temp. Se la 
connessione lan si perde dopo la cancellazione e prima della 
riscrittura, viene perduto il file per intero. Questa era la sua 
spiegazione, ed essendo persona competente non ci sarebbe motivo per 
nonc rederci, se non che i file che vengono salvati su server remoti 
penso siano gestiti dal software del server e non da quello 
dell'applicazione windows.

 dell'applicazione windows.
No, samba è semplicemente un sistema di condivisione, è come se le share
fossero dei ''dischi remoti'', si limita ad obbedire totalmente agli ordini
del programma, se il programma azzera subito il file principale senza farne
una copia i dati vengono immediatamente '''persi''', e fino alla loro
riscrittura sono disponibile solo 'nel programma'
samba e gli altri sistemi simili, come fanno anche i ''dischi locali'', non
applicano nessun metodo di backup/transazione/atomicità/ecc. dei dati.