NFS w wersji 3 był wykorzystywany przez ponad 15 lat i zgadzam się, że ma on kilka wad. NFS w wersji 4 zmienia wszystko na lepsze, korzystając z doświadczeń protokołu CIFS, wprowadza blokowanie oportunistyczne. Dodatkowo zwiększa bezpieczeństwo poprzez wdrożenie uwierzytelnienia Kerberos. Jeżeli chodzi o osiągi to NFS v4 dodał spotęgowane operacje COMPOUND agregujące kilka poleceń w pojedyncze zapytanie.
Obecnie większość systemów do wirtualizacji tj. VMware czy Citrix natywnie obsługują NFS. Należy zwrócić uwagę na to, że protokół CIFS w tych samych systemach nie jest wspierany.
Ten wpis nie ma na celu udowodnić, że NFS jest lepszy od iSCSI czy FC, ale ma pokazać, że NFS wcale nie jest taki zły jak go opisują i na pewno nie jest gorszy od protokołów blokowych. W rzeczywistości są przypadki kiedy NFS jest lepszy, na przykład, przy rozszerzaniu w locie „datastore” na VMware. Na podstawie osiągów porównamy możliwości NFS z iSCSI oraz z FC .
Testy są wykonane dla trzech protokołów (NFS, iSCSI i FC) na VMware w wersji 4.0. Nam zależy na porównaniu NFS z iSCSI, a nie z FC, ponieważ NFS i iSCSI korzystają z łącza Gigabit Ethernet, natomiast FC działa na całkowicie innej platformie sieciowej.
Poniżej wyniki osiągów dla Odczytu maszyny wirtualnej:
Jak widać osiągi NFS są na tym samym poziomie co iSCSI. Poniżej wyniki osiągów zapisu dla jednej maszyny wirtualnej:
Widać, że NFS ma gorszą wydajność przy zapisywaniu bloków mniejszych od 16KB, ale przy większych niczym nie ustępują iSCSI.
Powyższe wykresy przedstawiały osiągi dla jednego VM. Jednak doskonale zdajemy sobie sprawę, że w środowisku produkcyjnym na serwerze ESXi jest uruchomionych kilka maszyn wirtualnych, dlatego poniżej przedstawiamy wyniki dla kilku VM.
Ponownie widać, że osiągi dla kilku maszyn wirtualnych dla NFS i iSCSI są na tym poziomie. Przeczy to tezie iż iSCSI jest znacznie szybszy od NFS.
Niektórzy z was stwierdzą, że test wykonywany jest na maszynach wirtualnych, które albo nie mają zainstalowanych systemów operacyjnych lub nie mają uruchomionych aplikacji. Właśnie dlatego dla porównania na kolejnym wykresie zobaczycie test osiągów wykonany na produkcyjnym środowisku Microsoft Exchange.
Wykres pokazuje osiągi maszyn wirtualnych przy uruchomionym Exchange Load Generator (znany jako LoadGen) symulujący obciążenie Exchange przez 16,000 użytkowników. LoadGen został uruchomiony na 8 maszynach wirtualnych jednocześnie.
W tym przypadku niższa wartość jest lepsza, wykres pokazuje średnie opóźnienie przy wysyłaniu poczty dla 3 protokołów. W tym przypadku wydajność NFS jest lepsza niż w przypadku iSCSI, lepsza niż większość osób myśli. Poniżej kolejny wykres:
Znowu widać, że NFS jest szybszy niż iSCSI. Prawda, że interesujące?
Wydajność to jedno, a co z IOPS? Wykonano kolejny 8-godzinny test wykorzystujący symulator DoubleHeavy LoadGen, poniżej wykres z wynikami IOPS:
Na powyższym wykresie widać (więcej znaczy lepiej), że osiągi NFS są na tym samym poziomie co iSCSI i co ciekawe na tym samym poziomie co FC. Zaskakujące?
Żeby być fair przyznajemy, że NFS bardziej obciąża procesor w porównaniu do iSCSI co widać na poniższym wykresie:
Na koniec warto dodać, że wszystkie testy zostały wykonanie na NFS w wersji 3. Jesteśmy przekonanie, że gdyby to była wersja 4 to osiągi byłyby nieporównywalnie lepsze.
Dlatego właśnie uważamy, że NFS nie jest gorszy w porównaniu do iSCSI. Mam nadzieje, że następnym razem dwa razy się zastanowisz zanim skrytykujesz NFS.