[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: ProFTPd nfs e quota



Andrea Berardi wrote:
> Ciao a tutti,
> dopo aver montato un fs via NFS su un server FTP da un fileserver di
> backend, ho abilitato le quote e ho verificato che funzionano.
> Purtroppo si presenta un problema quando gli utenti, la cui home risiede
> sul fs NFS, cercano di eccedere il loro spazio disponibile uploadando
> files via FTP (il server ftp è ProFTPd): al client ftp NON viene
> mostrato alcun messaggio di errore ma il seguente:
> 
> "226 Transfer complete.
> 4806872 bytes sent in 0.45 secs (10377.8 kB/s)"
> che indica apparentemente che l'operazione di write è andata abuon fine,
> ma in realtà, eseguendo poi un `ls -lh` ci si accorge che il file
> uploadato ha size = 0 Kb.
> 
> 
> Al contrario utilizzando altri software per scrivere sempre su quel fs
> NFS, ad esempio cp, si viene notificati dell'errore:
> "cp: closing `./gapil.pdf`: Disk quota exceeded"
> 
> Il problema si manifesta esclusivamente utilizzando ProFTPd "su" NFS:
> infatti se si abilitano le quote su un fs locale il client viene
> correttamente notificato dell'errore:
> "552 Transfer aborted. Disk quota exceeded"
> 
> 
> Spero che qualcuno mi possa dare qualche suggerimento.
> 

Mi rispondo da solo sperando di essere d'aiuto a qualcuno che si è
trovato o si troverà con lo stesso problema.

Innanzitutto è bene dire che non si tratta di un problema specifico di
ProFTPd, ma la stessa "anomlia" è riscontrabile anche con altri server
applicativi (ho provato anche vsftpd): il problema infatti non è causato
dal server ftp, ma dalla modalità con cui vengono eseguite le operazione
di I/O sul fs.
La soluzione del problema consiste nello specificare l'opzione di "sync"
per il mount del fs anche dal client NFS e non solo come opzione nel
file /etc/exports del server.
Infatti, in caso non si specifichi tale opzione, tutte le operazioni di
I/O sul fs vengono "cacheate" e il server ftp che scrive via nfs non ha
modo di accorgersi del quota-exceeded se non quando chiama una
close(FD): in tal modo il server FTP risponde solitamente alla richiesta
di STORE del client con un reply-code 226 che indica il successo
nell'operazione di scrittura, e all'atto della chiusura del
file-descriptor non può far altro che loggare l'errore 552: "Quota disk
exceeded".


Spero di essere stato chiaro nella spiegazione.

Ciao a tutti,
Syneus.
-- 
                                          | .' ' `.
Andrea Berardi aka Syneus                 | : :'  :   Debian User
                                          | `. `'`
                                          |   `-
Linux Registered User #395193             | Debian GNU/Linux
http://counter.li.org/                    | http://www.debian.org




Reply to: