Adding Extended Attribute
     Support to NFS

           James Morris
           Red Hat, Inc.
        jmorris@redhat.com...
Introduction
Extended Attributes
●   Arbitrary file metadata

●   Two main types
    ●   System
    ●   User

●   Non-standard, yet wid...
Types of Implementation
●   Simple name / value pairs
    ●   user.foo = “bar”
    ●   Used by: IRIX, Linux, FreeBSD

●   ...
Name/value model
●   All name/value xattr implementations differ,
    have different APIs, and are generally
    incompati...
Linux Implementation
●   Simple and effective userland API
    ●   setxattr, getxattr, listxattr, removexattr

●   Probabl...
NFS Support
●   Extended attributes are not supported in the
    NFS standards

●   NFSv3 is closed wrt IETF activity

●  ...
Proposal for Linux NFSv3
●   Implement simple name/value xattr side-
    protocol based on the GPL'd IRIX code

●   ACL su...
Proposal for Linux NFSv3 (...)
●   Side-protocol does not break existing protocol

●   Possibility of interop and establis...
Linux NFSv3 Status
●   Prototype code working!

●   In upstream Linux community RFC process

●   Initial code
    ●   Limi...
NFSv4
●   NFSv4 needs xattr extension to properly
    support Linux/BSD etc.
    ●   Thankfully, NFSv4 was designed for ex...
Discussion
Resources
●   http://namei.org/nfsxattr
    ●   Code, documents

●   http://www.linux-nfs.org/
    ●   Useful stepping off...
Upcoming SlideShare
Loading in...5
×

Adding Extended Attribute Support to NFS

2,983

Published on

Presentation given at LinuxCon 2009 in Portland, Oregon.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,983
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Adding Extended Attribute Support to NFS

  1. 1. Adding Extended Attribute Support to NFS James Morris Red Hat, Inc. jmorris@redhat.com LinuxCon 2009 – Portland, OR
  2. 2. Introduction
  3. 3. Extended Attributes ● Arbitrary file metadata ● Two main types ● System ● User ● Non-standard, yet widely implemented
  4. 4. Types of Implementation ● Simple name / value pairs ● user.foo = “bar” ● Used by: IRIX, Linux, FreeBSD ● Subfiles / forks ● May: – have file semantics (open, seek etc.) – include subdirectories – be highly structured ● Used by Sun, Apple, Microsoft and others
  5. 5. Name/value model ● All name/value xattr implementations differ, have different APIs, and are generally incompatible ● Some OSs use flags for 'system', 'user' types ● Linux uses text namespaces ● user, system, security, trusted, os2
  6. 6. Linux Implementation ● Simple and effective userland API ● setxattr, getxattr, listxattr, removexattr ● Probably the most flexible such implementation ● System-level xattr use is common ● ACLs, SELinux, SMACK, ecryptfs ● User-level xattrs: beagle, ...
  7. 7. NFS Support ● Extended attributes are not supported in the NFS standards ● NFSv3 is closed wrt IETF activity ● NFSv4 includes Named Attributes, which are based on the Solaris subfile model and incompatible with name/value schemes ● Several non-standard implementations shipped
  8. 8. Proposal for Linux NFSv3 ● Implement simple name/value xattr side- protocol based on the GPL'd IRIX code ● ACL support was added to Linux NFSv3, and this is similar in scope and nature ● Rationale: all major filesystems have xattrs and we should be able to use them over the network!
  9. 9. Proposal for Linux NFSv3 (...) ● Side-protocol does not break existing protocol ● Possibility of interop and establishing a de-facto standard for BSD, legacy IRIX clients etc. ● NFS availability may encourage more xattr adoption (chicken & egg problem)
  10. 10. Linux NFSv3 Status ● Prototype code working! ● In upstream Linux community RFC process ● Initial code ● Limited to user namespace ● Not wire-compatible with IRIX due to differences in OS level implementation ● Interoperability certainly possible; need to consider usefulness vs. code complexity
  11. 11. NFSv4 ● NFSv4 needs xattr extension to properly support Linux/BSD etc. ● Thankfully, NFSv4 was designed for extensibility! ● NFSv3 work should be a useful model for this ● IETF process could be lengthy
  12. 12. Discussion
  13. 13. Resources ● http://namei.org/nfsxattr ● Code, documents ● http://www.linux-nfs.org/ ● Useful stepping off point ● Linux NFS mailing list information
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×