Newsgroup: it.comp.os.linux.sys
Titolo: NFS estramamente leeento in scrittura

Ciao a tutti,
ho appena allestito un piccolo pc per avere disponibile degli export NFS sui quali riversare macchine oramai spente e in disuso su vmware.
 
Il pc è collegato ad un cisco 3750 attraverso la sua scheda di rete gigabit tant'è che:
 
# iperf -c 10.216.19.35 -fM
------------------------------------------------------------
Client connecting to 10.216.19.35, TCP port 5001
TCP window size: 0.02 MByte (default)
------------------------------------------------------------
[  3] local 10.216.19.201 port 46777 connected with 10.216.19.35 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec    922 MBytes  92.2 MBytes/sec
 
...il link alla rete sembrerebbe essere ok.
 
Monta 3 semplici dischi sata uno da 160Gb e 2 da 2 Tb, dove:
/dev/sda1 160Gb Ext3 monatto come / ed esporta una directory /mnt/local 
/dev/sdb1 2Tb   Ext3 montato ed esportato come /mnt/hd1
/dev/sdc1 2Tb   Ext4 montato ed esportato come /mnt/hd2
 
 
Faccio alcuni test "in locale" e ottengo questi valori:
 
#montato ed esportato come /mnt/hd1
 
# dd count=500 bs=1M if=/dev/zero of=/mnt/hd1/test.txt
500+0 record dentro
500+0 record fuori
524288000 byte (524 MB) copiati, 4,36946 s, 120 MB/s
 
# dd count=500 bs=1M if=/dev/zero of=/mnt/hd2/test.txt
500+0 record dentro
500+0 record fuori
524288000 byte (524 MB) copiati, 3,26749 s, 160 MB/s
 
...la velocità di scrittura sembrerebbe essere ok.
 
Faccio in modo che vmware monti nei suoi datastores questi export NFS e do il via ad un "change datastore" di una macchina da 20 Gb e dopo 10 minuti era ferma al 2%.
Al che faccio la prova non fatta prima e da una VM debian attaccata anch'essa allo stesso stack di 3750 dove ho il mio export NFS provo a fare qualche test di scrittura via NFS e ottengo:
 
# mount.nfs 10.216.19.35:/mnt/local/ /mnt/local/
# dd count=1k bs=1M if=/dev/zero of=/mnt/local/test.txt
1024+0 record dentro
1024+0 record fuori
1073741824 byte (1,1 GB) copiati, 18,9787 s, 56,6 MB/s
 
 
# mount.nfs 10.216.19.35:/mnt/hd1 /mnt/hd1/
# dd count=500 bs=1M if=/dev/zero of=/mnt/hd1/test.txt
500+0 record dentro
500+0 record fuori
524288000 byte (524 MB) copiati, 15,0498 s, 34,8 MB/s
 
# mount.nfs 10.216.19.35:/mnt/hd1 /mnt/hd2/
# dd count=1k bs=1M if=/dev/zero of=/mnt/hd2/test.txt
1024+0 record dentro
1024+0 record fuori
1073741824 byte (1,1 GB) copiati, 32,1764 s, 33,4 MB/s
 
Ho già googlato un po' ma con scarso successo... c'è da fare un po' di tune di NFS/FS per avere velocità su NFS che non siano 3 volte inferiori rispetto al link alla rete?
 
grazie a chiunque.

mi rispondo da solo...gli export erano sincroni... con un bel async ho velocità ragionevoli.
 
grazie comunque.

 velocità ragionevoli.
 
Toh, esiste qualcuno che usa NFS. Pensavo che fosse completamente "useless".
 
Nicola.
 
-- 
chi va pian va san e va lontan

 Toh, esiste qualcuno che usa NFS. Pensavo che fosse completamente "useless".
 
Io ho provato ocfs su un cluster di 3 nodi con heartbeat e pacemaker.
Mi provocava continui reboot dei nodi poiche', per cause che non capito, 
succedeva che improvvisamente non vedeva qualcuno dei nodi in cluster e 
provocava un fence.

 "useless".
 
NFS e` useless tanto quanto samba, basta semplicemente usarlo nel contesto 
sbagliato ;)
 
Enrico

 provocava un fence.
 
Mi sfugge cosa c'entri.
 
-- 
BOFH excuse #317:
 
Internet exceeded Luser level, please wait until a luser logs off before 
attempting to log back on.


mi pare si dicesse che ormai nfs non lo usa piu' nessuno.


Il fatto è (purtroppo) che samba funziona in tutti i contesti, nfs beh... 
non ho ancora capito dove serve :P


 mi pare si dicesse che ormai nfs non lo usa piu' nessuno.
 
E ocfs ti sembra un alternativa? Uno è un protocollo di condivisione e 
l'altro un filesystem
-- 
BOFH excuse #134:
 
because of network lag due to too many people playing deathmatch

 l'altro un filesystem
 
Hai ragione.

 non ho ancora capito dove serve :P
 
Samba non funziona tra Unix, non bene come NFS, almeno.
 
bye,
 
-- 
 
piergiorgio

 non ho ancora capito dove serve :P
 
Ad esempio a gestire un sistema in cui l'autenticazione e` centralizzata con 
FreeIPA e le home directories sono centralizzate su di un file server :P
 
Enrico

 Samba non funziona tra Unix, non bene come NFS, almeno.
 
Uso regolarmente samba tra unix.



Uhm, freeipa sembra una cosa carina. Ma in pratica è un'interfaccia web ai 
vari ldap, kerberos e compagnia? Funziona anche con window$?
 
In quanto alla centralizzazione delle home, siamo ancora all'autenticazione 
tramite ip o con nfs versione 4 si riesce ad autenticare l'utente? (tramite 
kerberos suppongo).



confermo samba è perfettamente usabile anche su linux... però mi sembra 
leggermente più lento. Su rete a mille con nfs su filesystem montati da 
riga di comando (quando ho provato ad usare qualche tools non sono 
rimasto soddisfatto) mi sembra di andare circa tra il 2 e il 5% più 
veloce in trasferimento file.
 

 Uso regolarmente samba tra unix.
 
Anche io e ti dico che non funziona cosi` bene come NFS.
 
A parte le prestazioni miserevoli (in confronto ad NFS),
i permessi dei file sono molto "fantasiosi".
 
Nel mio caso probabilmente perche` e` un share con windows,
resta il fatto che NFS non da questi problemi.
 
bye,
 
-- 
 
piergiorgio

 kerberos suppongo).
 
kerberos dovrebbe funzionare con NFS 4, altrimenti
NFS e` praticamente senza autenticazione... :-)
 
bye,
 
-- 
 
piergiorgio

 autenticare l'utente? (tramite kerberos suppongo).
 
Leggendo il thread e` oramai evidente che non ti e` chiara qual e` la vera 
differenza tra NFS e SMB: a NFS non frega nulla dell'utente. Mi spiego: 
l'autenticazione via kerberos di NFSv4 e` una autenticazione della macchina, 
non dell'utente, che e` demandata ad altri sistemi (/etc/passwd, LDAP, NIS o 
anche a Samba stesso). Perche` percio` uno dovrebbe scegliere NFS rispetto a 
SMB? Semplicemente perche` e` un sistema *pensato* per sistemi *nix (e 
quindi permessi, ACL, xattr e symlink vengono correttamente salvati sul file 
system), a differenza di SMB che e` un sistema *adattato* ad essere usato in 
ambito *nix. Di conseguenza, cosa succede se salvo un file su di una 
condivisione NFS dal pc A dall'utente pippo:pippo (uid:gid 1000:1000) con 
permessi 600 e poi lo leggo dal pc B dall'utente pluto:pluto (uid:gid 
500:500)? Il file salvato dal pc A avra` i permessi che gli avra` impostato 
l'utente pippo del pc A, uid e gid compresi (1000:1000) e l'utente pluto del 
pc B non potra` leggerlo. Ma se nel pc esiste un utente paperino:paperino 
con uid:gid 1000:1000, questi sara` capace di leggere il file, cosa che si 
evita, come detto prima, centralizzando le utenze con un sistema dedicato 
(Samba, NIS, LDAP, FreeIPA...)
 
Enrico
P.S. alcuni benchmark dicono che NFS e` anche piu` veloce di SMB, ma non mi 
fido molto di benchmark non ufficiali fatti da chissa` chi (da questo punto 
di vista mi piacerebbe una bella comparazione fatta dai tizi di debian o di 
un'altra distribuzione)
P.S. e` ovvio che se devo comunicare con sistemi Windows non ho molta scelta 
oltre a SMB se non installando i protocolli di terze parti sul sistema 
Microsoft

 Uso regolarmente samba tra unix.
 
Anche io se sono costretto, e fidati: evito di esserne costretto :)
 
Enrico

 LDAP, NIS o anche a Samba stesso).
 
???
Ovvero se il mio pc è usato da n utenti tutti gli n utenti possono accedere 
alle "share" sul server nfs?
Questa è per l'appunto la cosa che non ho mai capito di nfs.


 Questa è per l'appunto la cosa che non ho mai capito di nfs.
 
Perche` quando pensi a NFS devi pensare come se stessi utilizzando una 
normale partizione *nix, non come un sistema che ti deve condividere una 
directory in rete chiedendoti l'autorizzazione per accedere. Detto questo, 
ti odio profondamente, mi hai fatto scrivere un post chilometrico :D
 
Enrico
[1] per inciso, una cosa simile avviene anche su Windows, anche se li si 
tratta del SID, che e` molto piu` complesso dell'uid/gid di *nix

 tratta del SID, che e` molto piu` complesso dell'uid/gid di *nix
 
Gia', me ne sono reso conto quando ho cambiato il sid dell'amministratore su 
ldap :O


 sicuro e soprattutto spesso non è proponibile
 
E` chiaro proprio perche` non e` il suo compito, per NFS l'importante e` che 
la macchina sia in una rete abilitata al mount della condivisione remota e, 
se utilizzato, sia autenticabile via Kerberos. Sta a te poi allineare la 
base utenze tra piu` pc (notebook compresi), e lo fai utilizzando altre 
metodologie che vanno dalla semplice copia manuale dei file di mappatura 
delle utenze (passwd, group, shadow), all'uso di sistemi di autenticazione 
centralizzati piu` complessi (LDAP, NIS+, FreeIPA). Il suo utilizzo passa 
quindi per questo concetto di base, che e` completamente differente rispetto 
a quello che sta dietro a SMB (e quindi Samba), dove il protocollo non si 
limita solo ad esportare una parte del file system sulla rete, ma anche ad 
effettuare l'autenticazione di un utente e ad esportare in rete eventuali 
stampanti configurate. Se a questo punto consideriamo che Samba e` un 
sistema "pesante" rispetto a NFS, e` ovvio che, ripetendo cio` che ho detto 
in precedenza, l'unico motivo per usarlo e` perche` nella rete devono 
accedere anche pc Windows
 
Enrico


Ho capito che non è il suo compito autenticare, ma come cavolo faccio a 
essere sicuro che sia il Sig. Mario Monti (ehm, Rossi, scusa la battuta 
stupida) ad accedere alla cartella "documenti"? 


 stupida) ad accedere alla cartella "documenti"? 
 
Con gli account centralizzati.
NFS nasce per gestire una rete di computer TUOI, dove fai il bello e il
cattivo tempo.
Se mario mossi :-) si è autenticato su una macchina trusted, allora chi
sia lo ha già stabilito la macchina su cui ha fatto login.
 
Il file system distribuito avrà poi le acl (o i permessi classici) che,
senza fallo, ti permetteranno di stabilire cosa può o non può fare. ;-)
 
-- 
    Ciao   |Save our planet!             Save wildlife!
   roberto |For your E-MAIL use ONLY recycled Bytes  !!
           |roberto poggi   
rpo...@bofhland.org
 

 stupida) ad accedere alla cartella "documenti"?
 
Attivi un sistema di autenticazione sui pc che possono accedere a quella 
directory condivisa
 
Enrico

 sia lo ha già stabilito la macchina su cui ha fatto login.
 
Ok, devo solo accertarmi che alla mia rete accedano solo i pc miei e i miei 
utenti non abbiano l'accesso alle macchine come amministratori. 
Probabilmente è sempre così. Ma nella rete di una banca non mi fiderei di 
fare una roba del genere :P
 
Nicola,



Ok, quindi devo fidarmi di quello che mi dice il client. In questo caso se 
il client è un altro server sempre acceso va bene, mentre se si tratta di un 
pc di cui l'utente ha l'accesso come amministratore siamo fregati.
A parte il fatto che gira solo su linux, non metterei in piedi una rete di 
client che accedono ad un server via nfs. Sulla mi rete di client winzozz 
c'è sempre qualche pc che gira come utente amministratore (ma chi è il 
cretino che fa i programmi che girano solo se sei l'amministratore?).
Poi ovviamente i miei utenti non sono in grado di cambiarsi gli uid da soli.


 fare una roba del genere :P
 
Nella rete di una banca, le cautele da prendere sono ben altre, a
partire dagli switch che autenticano le connessioni: se non ha le
credenziali corrette, il pc non comunica con nulla, come avesse a
bordo una scheda di rete non connessa a niente.
E non devono esistere utenti amministratori, ecc. ecc.
 
Insomma, la password di samba sarebbe il meno. ;-)


 l'amministratore?).
 
Un programmatore Windows :)
Seriamente, molto dipende da cosa stai facendo. Per dire, il mio agent 
per i backup deve necessariamente girare come root, altrimenti non 
servirebbe a nulla
 
Enrico

 Un programmatore Windows :)
Che fa programmi che si interfacciano via seriale o ethernet ad 
apparecchiature per analisi chimiche di laboratorio. Incredibile.


 pc di cui l'utente ha l'accesso come amministratore siamo fregati.
 
  Beh, a questo c'è un limite.  Da molto tempo la possibilità di un
remote privilege escalation ha spinto a volere a disposizione l'opzione
root_squash (vedere man exports(5)) per segnare una condivisione NFS
come disponibile a qualsiasi utente non root proveniente dalla rete:
 
       root_squash
              Map requests from uid/gid 0 to the anonymous uid/gid.
              Note that this does not apply to any other uids or gids
              that might be equally sensitive, such as user bin or
              group staff.
 
  Per il resto c'è idmapd.
 
 
  Ciao,
 
 
-- 
Alessandro Selli 
http://alessandro.route-add.net
 
AVVERTENZA: i messaggi inviati a "trappola" non mi arriveranno.
WARNING: messages sent to "trappola" will never reach me.

   Per il resto c'è idmapd.
 
Mappatura dei SID in uid e gid. Questo è quello che ho trovato in rete.
Tuttavia non ci ho capito un accidenti :(
