NFS vs Samba
Jeg har for et par dage siden opgraderet firmwaren på min Synology NAS for bl.a. at få mulighed for NFS.
Nu gik jeg så og troede at NFS var mere effektivt (hurtigere) end Samba, men nogle tests viser det stik modsatte.
En fil på 500 MB tager 55 sek over Samba mod 70 sek over NFS. Jeg har lavet adskillige tests, resultatet er det samme.
Har jeg taget fejl omkring NFS eller er det bare NAS'ens implentation der er dårlig?
Der er også en anden ting der undrer mig. En af fordelene ved NFS skulle være at det understøtter Linux' rettighedssystem. Men hvis jeg som root uploader en fil uden skriverettighed for andre end root, kan jeg helt uden problemer slette den som almindelig bruger. Dette troede jeg ikke var muligt grundet rettighedsstyringen. NB: Jeg har fravalgt root-squashing i NAS'en, dvs. at alle filer gemmes som root.
Er det igen mig der hart misforstået NFS, eller er NAS'en bare dum?
Nu gik jeg så og troede at NFS var mere effektivt (hurtigere) end Samba, men nogle tests viser det stik modsatte.
En fil på 500 MB tager 55 sek over Samba mod 70 sek over NFS. Jeg har lavet adskillige tests, resultatet er det samme.
Har jeg taget fejl omkring NFS eller er det bare NAS'ens implentation der er dårlig?
Der er også en anden ting der undrer mig. En af fordelene ved NFS skulle være at det understøtter Linux' rettighedssystem. Men hvis jeg som root uploader en fil uden skriverettighed for andre end root, kan jeg helt uden problemer slette den som almindelig bruger. Dette troede jeg ikke var muligt grundet rettighedsstyringen. NB: Jeg har fravalgt root-squashing i NAS'en, dvs. at alle filer gemmes som root.
Er det igen mig der hart misforstået NFS, eller er NAS'en bare dum?
Kommentarer14
Grundliggende, så bør
Alt for mange faktorer kan spille ind hvor fejl kan ske, og hvor valg af filsystemer og netværksprotokoller ikke i sig selv er afgørende, mere tests og begrundet fremtidig supporteret udvikling.
Det er ikke relevant eksempelvis at mene: Jeg bruger UNIX, derfor skal det være NFS.
Det er mere relevant at bruge bedst udviklede, bedst supporterede, mest fleksible/kompatible og mest benyttede LAN protokoller, og det er PT Samba.
Til gengæld har jeg opdaget
Ved Samba kører NAS'en på fuld drøn hele tiden, blæseren snurrer heftigt, og den går ikke i dvale så længe en klient er koblet til den. Hvilket der gør hele tiden da min print- og musikserver (Raspi) altid er tændt.
Nu med NFS kører blæseren stort set aldrig, harddisken snurrer selvfølgelig, men efter et stykke tid uden aktivitet går NAS'en i dvale og disken stopper. Og det selv om netværket stadig er tilkoblet!
Med andre ord bruger NFS langt mindre CPU på serveren.
Det har været noget som har irriteret mig hele tiden, så det er en fed ting.
Høj CPU forbrug burde
Det kunne skyldes at en fil af en slags forårsager at samba kører i loop. Måske at serveren kæmper med en anden maskine om status som masterbrowser? Sidstnævnte er en linje i smb.conf
preferred master = no
Har jeg taget fejl
Hmm. Jeg har/havde i hvert fald samme formodning som dig: at NFS performer bedst. Men et par løse Google-hits antyder at der er delte meninger. (har kigget på de første fire hits: https://www.google.dk/search?q=nfs+samba+performance )
Det antydes dog flere steder at NFS ikke belaster CPU'en så meget som SMB gør - i tråd med din observation af CPU-blæseren.
Nu ved jeg ikke hvor meget du kan tweake din Synology, men der er måske noget at hente ved at fintune parametrene: http://nfs.sourceforge.net/nfs-howto/ar01s05.html
#0: Er det igen mig der hart misforstået NFS, eller er NAS'en bare dum?
Det lyder godt nok lidt underligt. Men hvis du har tilpas "dumme" nfs-indstillinger (fx. all_squash,anonuid=0 etc), så kan du sikkert godt opnå den opførsel.
Hvordan ser din /etc/exports ud?
Hvis den alm. bruger opretter en fil på NAS'en, hvilket UID/GID får filen så?
network latency
Bemærk iøvrigt at samba ikke længere er den eneste CIFS implemtering til unix så du kan ikke antage at en NAS box faktisk har samba instaleret.
har du latency problemer og sidder der en firewall/router(terminologien omkring hvad der er hvad er blevet lidt mudret efterhånden) imellem nas box og klient?
Det lyder godt nok lidt
Jeg har testet lidt mere og jeg har fundet ud af noget meget mærkeligt. Problemet eksisterer også i mit lokale filsystem! Så måske er der nogle ting jeg har misforstået ved Linux filsystem generelt!
1. Fx har jeg lige opdatet af cp ikke som standard bevarer gruppen, destinationsfilen får altid gruppe=ejer. Men skal bruge cp -p for at bevare gruppeinfo. Og så bevares det også på NAS'en.
2. Til min store overraskelse kan en alm. bruger slette en fil ejet af root og uden læse/skrivedgang for andre. Jeg kan altså som root oprette en fil min bruger ikke kan læse eller skrive til, men den kan godt slette den selv uden sudo! Systemet spørger bare om jeg vil slette en skrivebeskyttet fil, og hvis jeg siger ja, slettes den. Og i midnight commander som jeg ofte bruger slettes root-filen bare uden videre.
Er det bare sådan det er, eller er mit system "broken"?
#5: Hvordan ser din /etc/exports ud?
/volume1/Private 192.168.1.*(rw,async,no_wdelay,no_root_squash,insecure_locks,anonuid=0,anongid=0)
/volume1/Public 192.168.1.*(rw,async,no_wdelay,no_root_squash,insecure_locks,anonuid=0,anongid=0)
/volume1/Music 192.168.1.*(rw,async,no_wdelay,no_root_squash,insecure_locks,anonuid=0,anongid=0)
#4: Hvis den alm. bruger opretter en fil på NAS'en, hvilket UID/GID får filen så?
1000/1000
sidder der en
Der er en router mellem klienten og NAS'en. Her har jeg dog planlagt et nyt setup, for i forbindelse med opgraderingen af NAS'ens firmware fandt jeg ud af den understøttet gigabit, men routeren er kun på 100 Mbs. Så ved at sætte en gigabit switch foran routeren og koble NAS'en og pc'erne direkte på switchen, og så også routeren på switchen, så har jeg læst mig til at jeg mellem enhederne får 1000 Mbs, og kun 100 Mbs ud til routeren og videre ud på internettet. Hvilken under alle omstændigheder er langt under det mit 4G giver.
#5: har du latency problemer
Hvordan ved jeg det?
Til min store
Nu har googlet lidt og fundet ud af at en alm. bruger kan slette en fil ejet af root hvis brugeren bare ejer folderen som filen befinder sig i.
Så blev jeg det klogere!
Altså er der ingen rettighedsproblemer med NFS på NAS'en (kun med min forståelse!), så tilbage er kun at det performer dårligere end smb/cifs i mit setup. Men da jeg til gengæld har fået fordelen med langt mindre CPU forbrug, er jeg egentligt godt tilfreds. De to ting udelukker jo ikke hinanden, så hvis jeg vil lave backup af mange store filer kan jeg bare gøre det over Samba.
Jeg har simpelthen sat noauto i min fstab så samba-delingen ikke mounter automtisk.
Hvordan ved jeg
tester med ping -c 100 ip.of.nas. Acceptabelt latency på et lokalt lan er sub 30ms og pakketab skal værre 0%, med wifi er den slags latency ofte helt urealistisk(især hvis du bor i tæt bebyggelse), men 100ms er som regel "godt nok".
med hensyn til din router kan det værre værd at kigge på dens firewall setup, hvis den laver en masse udp blokering kan det give nfs problemer.
tester med ping -c 100
64 bytes from 192.168.1.8: icmp_req=1 ttl=64 time=0.760 ms
64 bytes from 192.168.1.8: icmp_req=2 ttl=64 time=1.52 ms
64 bytes from 192.168.1.8: icmp_req=3 ttl=64 time=2.40 ms
64 bytes from 192.168.1.8: icmp_req=4 ttl=64 time=2.69 ms
64 bytes from 192.168.1.8: icmp_req=5 ttl=64 time=2.78 ms
64 bytes from 192.168.1.8: icmp_req=6 ttl=64 time=2.80 ms
64 bytes from 192.168.1.8: icmp_req=7 ttl=64 time=2.70 ms
64 bytes from 192.168.1.8: icmp_req=8 ttl=64 time=3.09 ms
64 bytes from 192.168.1.8: icmp_req=9 ttl=64 time=0.610 ms
64 bytes from 192.168.1.8: icmp_req=10 ttl=64 time=0.760 ms
64 bytes from 192.168.1.8: icmp_req=11 ttl=64 time=0.630 ms
64 bytes from 192.168.1.8: icmp_req=12 ttl=64 time=0.659 ms
64 bytes from 192.168.1.8: icmp_req=13 ttl=64 time=0.723 ms
64 bytes from 192.168.1.8: icmp_req=14 ttl=64 time=0.648 ms
#9: med hensyn til din router kan det værre værd at kigge på dens firewall setup, hvis den laver en masse udp blokering kan det give nfs problemer.
Jeg har også prøvet nfs over tcp.
Jeg har også prøvet
hmm i det tilfælde tror jeg du har et implementations problem i nas boksen.
Hvilket filsystem kører du
Hvilket filsystem
ext3
Du kan evt prøve at skifte