Recentemente ho avuto la spiacevole sorpresa di imbattermi nella corruzione di files condivisi con Samba e montati con il driver cifs (via # mount -t cifs).
Una macchina virtuale (Windows Xp) su VirtualBox, che girava sul client, aveva il disco virtuale VDI sul server samba (entrambi Ubuntu 10.04 LTS), montato appunto via cifs: dopo qualche ora di utilizzo, il SO sulla macchina virtuale iniziava a lamentare la corruzione del filesystem. Il ripristino del backup, effettuato il locale sul server, risolveva momentaneamente il problema, salvo il fatto che la corruzione del filesystem si ripresentava puntualmente.
Una breve ricerca su Google mi ha portato in evidenza questi articoli (1 e 2), nel quale veniva indicata come possibile imputata la cache del filesystem. Nel caso in cui la rete sia molto trafficata, come quella della quale facevano parte le 2 macchine, e nel caso in cui siano coinvolti files di grandi dimensioni, la fiducia che il kernel del client nella cache può essere mal riposta, con il risultato di ritrovarsi dei files corrotti. Il problema sembra essere sul lato client, quindi non dovrebbe coinvolgere client Windows o Unix montati con driver diversi da cifs (i.e. smbnetfs o GVFS via FUSE).
Per disabilitare la cache, è sufficiente passare l'opzione forcedirectio a mount:
# mount -t cifs //<NomeRete>/<Condivisione> -o username=pippo,password=PasswordDiPippo,forcedirectio
/<MountPoint>
Non nascondo che sono rimasto un po' sorpreso dalla mancanza di riferimenti nella documentazione ufficiale di questo tipo di problemi, considerando che la conseguenza può essere una corruzione silenziosa dei files condivisi; d'altra parte, ho usato cifs per anni in altre situazioni senza aver mai aver riscontrato questo tipo di problemi.
D'ora in poi, comunque, monterò sempre le mie condivisioni Samba con forcedirectio.
Nessun commento:
Posta un commento
I comenti sono moderati, non compariranno subito ma dopo l'approvazione. Grazie per la pazienza.