Pochi giorni fa ho notato qualcosa di piuttosto strano (almeno per me). Ho eseguito rsync copiando gli stessi dati ed eliminandoli successivamente sul mount NFS, chiamato /nfs_mount/TEST. Questo /nfs_mount/TESTè ospitato / esportato da nfs_server-eth1. L'MTU su entrambe le interfacce di rete è 9000, il passaggio tra supporta anche i jumbo frame. Se lo faccio rsync -av dir /nfs_mount/TEST/ottengo velocità di trasferimento in rete X MBps. Se lo faccio rsync -av dir nfs_server-eth1:/nfs_mount/TEST/ottengo una velocità di trasferimento in rete di almeno 2X MBps. Le mie opzioni di montaggio NFS sono nfs rw,nodev,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountvers=3,mountproto=tcp.
In conclusione: entrambi i trasferimenti passano sulla stessa sottorete di rete, stessi cavi, stesse interfacce, leggono gli stessi dati, scrivono nella stessa directory, ecc. L'unica differenza è tramite NFSv3, l'altra su rsync.
Il client è Ubuntu 10.04, il server Ubuntu 9.10.
Come mai rsync è molto più veloce? Come far corrispondere NFS a quella velocità?
Grazie
Modifica: nota che uso rsync per scrivere sulla condivisione NFS o su SSH nel server NFS e scrivere localmente lì. Entrambe le volte lo faccio rsync -av, a partire dalla directory di destinazione chiara. Domani proverò con una copia semplice.
Modifica2 (informazioni aggiuntive): la dimensione del file varia da 1 KB a 15 MB. I file sono già compressi, ho provato a comprimerli ulteriormente senza successo. Ho fatto il tar.gzfile da quello dir. Ecco lo schema:
rsync -av dir /nfs_mount/TEST/= trasferimento più lento;rsync -av dir nfs_server-eth1:/nfs_mount/TEST/= rsync più veloce con jumbo frame abilitato; senza jumbo frame è un po 'più lento, ma comunque significativamente più veloce di quello direttamente a NFS;rsync -av dir.tar.gz nfs_server-eth1:/nfs_mount/TEST/= circa uguale al suo equivalente non tar.gz;
Test con cpe scp:
cp -r dir /nfs_mount/TEST/= leggermente più veloce dirsync -av dir /nfs_mount/TEST/ma ancora significativamente più lento dirsync -av dir nfs_server-eth1:/nfs_mount/TEST/.scp -r dir /nfs_mount/TEST/= più veloce nel complesso, leggermente superatorsync -av dir nfs_server-eth1:/nfs_mount/TEST/;scp -r dir.tar.gz /nfs_mount/TEST/= circa uguale al suo equivalente non tar.gz;
Conclusione, basata su questi risultati: per questo test non vi è alcuna differenza significativa se si utilizza il file tar.gz di grandi dimensioni o molti di quelli piccoli. Anche i frame jumbo attivati o disattivati non fanno quasi alcuna differenza. cpe scpsono più veloci dei rispettivi rsync -avequivalenti. Scrivere direttamente sulla condivisione NFS esportata è significativamente più lento (almeno 2 volte) rispetto alla scrittura nella stessa directory su SSH, indipendentemente dal metodo utilizzato.
Le differenze tra cpe rsyncnon sono rilevanti in questo caso. Ho deciso di provare cpe scpsolo per vedere se mostrano lo stesso modello e lo fanno - differenza 2X.
Mentre uso rsynco cpin entrambi i casi, non riesco a capire cosa impedisce a NFS di raggiungere la velocità di trasferimento degli stessi comandi su SSH.
Come mai la scrittura sulla condivisione NFS è 2 volte più lenta della scrittura nello stesso posto su SSH?
Edit3 (server NFS / etc / opzioni di esportazione): rw,no_root_squash,no_subtree_check,sync. Il cliente / proc / mounts spettacoli: nfs rw,nodev,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,mountvers=3,mountproto=tcp.
Grazie a tutti!