FedFsNfsServer0.8

From Linux NFS

Revision as of 19:39, 24 October 2012 by Chucklever (Talk | contribs)
Jump to: navigation, search

Project: fedfs-utils

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


Introduction

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.

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.

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.

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 a junction's location information into an NFSv4 referral which can be sent to NFS clients.

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.

Build nfs-utils

On Fedora 18, rpc.mountd already has working junction resolution support. On other distributions, you'll need to build a version of rpc.mountd with working junction resolution support.

First, you'll need to install the nfs-plugin.h header.

The "make install" step should install the header in /usr/include/nfs-plugin.h . If not, you can find it in fedfs-utils-0.8/src/include/nfs-plugin.h and install it by hand.

Now download and unpack the latest nfs-utils tarball on the same system where you built fedfs-utils. Build nfs-utils, and replace rpc.mountd on your NFS server. The configure options are complicated; I usually copy them from the latest nfs-utils RPM spec file from my distribution.

$ ./configure yada yada
$ make
$ sudo install utils/mountd/mountd /usr/sbin/rpc.mountd

Then restart the NFS service.

# systemctl restart nfs-server.service
Personal tools