DistOS 2014W Lecture 8: Difference between revisions

From Soma-notes
Cdelahou (talk | contribs)
Removed unused group 4. Formatted discussion
Cdelahou (talk | contribs)
Combined all AFS and NFS parts together. Groups don't matter.
Line 6: Line 6:
==Group 1==
==Group 1==


'''NFS:'''
==NFS==
Group 1:


1) per operating traffic
1) per operating traffic
Line 14: Line 15:
3) unreliable
3) unreliable


'''AFS:'''
Group 2:
 
1) design for 5000 clients
 
2) high integrity.
 
==Group 2==
 
'''NFS:'''


1) designed to share disks over a network, not files
1) designed to share disks over a network, not files
Line 42: Line 35:
9) stateless protocol conflicts with files being state-full by nature.
9) stateless protocol conflicts with files being state-full by nature.


'''AFS:'''
Group 3:
 
1) cache assumption invalid.
 
2) no locking
 
3) bad security
 
 
 
==AFS==
 
Group 1
 
1) design for 5000 clients
 
2) high integrity.
 
Group 2


1) designed to share files over a network, not disks
1) designed to share files over a network, not disks
Line 60: Line 71:
8) inode concept replaced with fid
8) inode concept replaced with fid


 
Group 3
==Group 3==
 
'''NFS:'''
 
1) cache assumption invalid.
 
2) no locking
 
3) bad security
 
'''AFS:'''


1) cache assumption valid
1) cache assumption valid

Revision as of 23:28, 23 February 2014

NFS and AFS (Jan 30)

Group 1

NFS

Group 1:

1) per operating traffic

2) rpc based

3) unreliable

Group 2:

1) designed to share disks over a network, not files

2) more UNIX like

3) portable

4) use UDP

5) it is not minimize network traffic.

6) used VNODE

7) not have much hardware equipment

8) later versions took on features of AFS

9) stateless protocol conflicts with files being state-full by nature.

Group 3:

1) cache assumption invalid.

2) no locking

3) bad security


AFS

Group 1

1) design for 5000 clients

2) high integrity.

Group 2

1) designed to share files over a network, not disks

2) better scalability

3) better security.

4) minimize network traffic.

5) less UNIX like

6) plugin authentication

7) needs more kernel storage due to complex commands

8) inode concept replaced with fid

Group 3

1) cache assumption valid

2) locking

3) good security.


Class Discussion:

Capturing some of Anil's Observations about NFS and AFS:

  • The reason why NFS does not try to share at block level instead of file level is that sharing at block level is complicated from the implementation point of view.
  • NFS use UDP as the transport protocol since UDP being a stateless protocol is in-line with the NFS design philosophy of not maintaining state information.
  • Security and unreliability issues in NFS are an implication of using RPC.
    • RPC is a nice way for programming but RPC is not designed for networks (where flakiness is an inherent characteristic) which is better explained by the analogy that you never expect from a programming point of view your function call to fail(not to return) because of communication error. *AFS designers considered network as a bottle neck and tried to reduce the number of chatter over network by using caching.
    • 'open' and 'close' operations in AFS were critical
    • the 'close' operation assumes importance to the same proportions of a 'commit' operation in a well-designed database system.
  • The security model of AFS is interesting in that rather than going for the UNIX access list based implementation AFS used a single sign on system based on Kerberos.
    • cool thing about Kerberos is that idea of using tickets to get access.
  • Irrespective of having better features compared to NFS, AFS did not get widely adopted. The reason for this was that the administrative mechanism for AFS was complex and it required highly trained/skilled people to setup AFS and it also required quite a number of day’s effort to set it up and maintain.