FedFsNfsServer0.9

From Linux NFS

(Difference between revisions)
Jump to: navigation, search
(Introduction)
(Prepare mountd to resolve junctions)
Line 25: Line 25:
== Prepare mountd to resolve junctions ==
== Prepare mountd to resolve junctions ==
-
* rpc.mountd updated with junction support (nfs-utils 1.2.6 or later, built with the nfs-plugin.h header present)
+
On Linux, a junction is denoted by a directory with special mode bits and an extended attribute that contains the junction location list. The NFS server must convert the junction's location information into an NFSv4 referral.
-
* libnfsjunct.so installed (fedfs-utils package install, or built from source)
+
 
 +
When the Linux in-kernel NFS server encounters a junction, it resolves the junction by performing an upcall to mountd.  It is mountd that actually reads a junction and converts it to information that the kernel NFS server can put on the wire as an NFSv4 referral.
 +
 
 +
=== Pre-packaged install ===
 +
 
 +
If you are running Fedora 19, you can install a pre-packaged version of fedfs-utils-0.9. The server-side components are installed with:
 +
 
 +
# yum install fedfs-utils-server
 +
 
 +
The rpc.mountd in this distribution is already prepared for junction resolution.
 +
 
 +
=== Build fedfs-utils ===
 +
 
 +
If your distribution does not provide a pre-packaged version of fedfs-utils-0.9, follow these steps instead.
 +
 
 +
Unpack the fedfs-utils-0.9 tarball somewhere convenient.  Specify the directory in which to install libraries (by default this is somewhere mountd can't find it).  For example:
 +
 
 +
$ ./configure --libdir=/usr/lib64
 +
$ make
 +
 
 +
There are two pieces that need to be in place first.  The plug-in library:
 +
 
 +
# cd src/plug-ins ; make install
 +
 
 +
And the header describing the library's API:
 +
 
 +
# cd src/include ; make install
 +
 
 +
Now download and unpack the latest nfs-utils tarball.  (The configure options are complicated;  I usually copy them from the Fedora RPM spec file).  Build and replace rpc.mountd on your server.
== Install the nfsref command ==
== Install the nfsref command ==
* nfsref program installed (fedfs-utils package install, or built from source)
* nfsref program installed (fedfs-utils package install, or built from source)

Revision as of 16:46, 17 October 2012

Contents

Project: fedfs-utils

[ Project Home | News | Downloads | Docs | Mailing Lists | Source Control | Issues ]


Introduction

A junction is a link between two shared file systems. The two shared file systems may not reside on the same server. There may be more than one replica of the linked-to shared file system, stored on several different file servers. Each replica of the linked-to file system is called a location.

Junctions store a list of locations. Each location in the list is represented as an export path paired with a server name or IP address. When a file-access client encounters a junction, the file server (via a referral) provides the stored list of locations to the client, who chooses a location and mounts it.

A file server must convert the information stored in a junction into a list of locations that's in a format which is correct for the protocol clients are using to access the server (say, NFSv4). The server-side process of recognizing a junction and converting its contents is known as junction resolution.

A single junction is useful for linking together two shared file systems. A web of junctions can be used to create a namespace that crosses between multiple file systems on multiple file servers. FedFS uses junctions for just such a purpose.

This article describes how to configure a Linux NFS server to resolve junctions. Once a file server can resolve junctions in its local file systems, it can participate in a FedFS domain.

Prepare mountd to resolve junctions

On Linux, a junction is denoted by a directory with special mode bits and an extended attribute that contains the junction location list. The NFS server must convert the junction's location information into an NFSv4 referral.

When the Linux in-kernel NFS server encounters a junction, it resolves the junction by performing an upcall to mountd. It is mountd that actually reads a junction and converts it to information that the kernel NFS server can put on the wire as an NFSv4 referral.

Pre-packaged install

If you are running Fedora 19, you can install a pre-packaged version of fedfs-utils-0.9. The server-side components are installed with:

# yum install fedfs-utils-server

The rpc.mountd in this distribution is already prepared for junction resolution.

Build fedfs-utils

If your distribution does not provide a pre-packaged version of fedfs-utils-0.9, follow these steps instead.

Unpack the fedfs-utils-0.9 tarball somewhere convenient. Specify the directory in which to install libraries (by default this is somewhere mountd can't find it). For example:

$ ./configure --libdir=/usr/lib64
$ make

There are two pieces that need to be in place first. The plug-in library:

# cd src/plug-ins ; make install

And the header describing the library's API:

# cd src/include ; make install

Now download and unpack the latest nfs-utils tarball. (The configure options are complicated; I usually copy them from the Fedora RPM spec file). Build and replace rpc.mountd on your server.

Install the nfsref command

  • nfsref program installed (fedfs-utils package install, or built from source)
Personal tools