exportfs command is used in maintaining the NFS table of exported file systems. When typed in a terminal with no arguments, the
exportfs command shows all the exported directories.
Since NFSv4 no longer utilizes the
MOUNT protocol, which was used with the NFSv2 and NFSv3 protocols, the mounting of file systems has changed.
An NFSv4 client now has the ability to see all of the exports served by the NFSv4 server as a single file system, called the NFSv4 pseudo-file system. On Community Enterprise Linux, the pseudo-file system is identified as a single, real file system, identified at export with the
For example, the following commands could be executed on an NFSv4 server:
mount --bind /usr/local/opt /exports/opt
mount --bind /usr/local/etc /exports/etc
exportfs -o fsid=0,insecure,no_subtree_check gss/krb5p:/exports
exportfs -o rw,nohide,insecure,no_subtree_check gss/krb5p:/exports/opt
exportfs -o rw,nohide,insecure,no_subtree_check gss/krb5p:/exports/etc
In this example, clients are provided with multiple file systems to mount, by using the
--bind option which creates unbreakable links.
Because of the pseudo-file systems feature, NFS version 2, 3 and 4 export configurations are not always compatible. For example, given the following directory tree:
/home /home/sam /home/john /home/joe
and the export:
Using NFS version 2,3 and 4 the following would work:
mount server:/home /mnt/home
Using v4 the following would work:
mount -t nfs4 server:/ /mnt/home
The difference being "
server:/home" and "
server:/". To make the exports configurations compatible for all version, one needs to export (read only) the root filesystem with an
fsid=0 signals the NFS server that this export is the root.
/ *(ro,fsid=0) /home *(rw,sync,nohide)
Now with these exports, both "
mount server:/home /mnt/home" and "
mount -t nfs server:/home /mnt/home" will work as expected.