Getting started


Unpacking and compiling

Untar the distribution package. A subdirectory like pnfs3.1.<n> will be created.
cd pnfs3.1.<n>
make clean
The 'make clean' command dermines the OS type and version and creates a soft link of ./version to the corresponding ./version.<os-type> file. Now you may customize the ./version file to your needs. It mainly needs information about the compiler, the lex and where to find the gdbm library. If there is no gdbm on our host installed yet, ./gdb/gdbm-1.7.3 contains the gdbm source distribution which has to be compiled prior to running make to create the pnfs part. To create the binaries run :
make
make install
The exeutables will end up in tools/<os-type>.

Creating the pnfs file system

Step by step :

The /usr/etc/pnfsSetup File

When starting pnfs, the pnfsd and the pmountd assume to find the configuration information in /usr/etc/pnfsSetup. A sample setupfile can be found in the root directory of the distribution. The file contains one key value pair per line, separated by an equals sign. The meaning of most of the keys is discussed below. Keys which are not mentioned in this list can be taken from the example file and need not to be modified.
Keymeaning
shmkey The key of the shared master shared memory area. You may take any, as long as no other application wants to make use of the same key. (The default is set to '1122' ).
shmclients The maximum number of clients which needs access to the shared memory area. The rule of thumb 'number of pnfsd processes' + 1 ( for the pmountd ) + 'number of admin tools running simultaniously'. So if pnfscopies=4, shmclients=8 should be fine.
shmservers Must be larger then the largest database ID. If only the pnfs admin tools are used to add databases, this is essentially the number of databases. To avoid unnesseccary restarts of the pnfs system, the number should be sufficiently large to cover the near futur plans concerning database groth.
pnfs Is the full path of the pnfs root directory. $pnfs/tools needs to contain the pnfs tools and the links to the binaries. This path usually looks like /x...x/pnfs3.1.<n>
database Is the full path of an existing directory where pnfs stores information about its databases. It doesn't need much space and only contains ascii files which point to the actual gdbm database.
trash Is the full path of a directory where pnfs provides information about files which have been deleted from pnfs. The connected HSMs need those information to remove the files from the HSM database ( or from tape). Pnfs assumes to find subdirectories within $trash where it can copy the different file levels into. The size of the directory highly depends on the number of remove operations and the time interval this directory is scanned to synchronize the HSM. ( see remove )
pnfscopies Number of copies of the pnfsd deamon to be started. shmclients must exceed this number by at least 'two'.
hardlinks Can be yes or no depending on wether pnfs should support hardlinks or not. The disadvantage of hardlinks is that there is no defined path back to the root. So, disabling hardlinks allows you to get the filepath from an object only knowing its pnfsid(=inode).
netmask The ip netmask of you site. ( class B = 16 , class C = 8 ).
levelmask A sequence of 8 0 or -1 separated by ':'. The first number has to be a 0. Each number corresponds to a pnfs file level and determines if the specified level should belong to the user ( uid, gid .. ) or should belong to 'root'. The way it is configured highly depends on the HSM system you intend to use.
pmountdLog
dbserverLog
pnfsdLog
Points to the full pathname of the corresponding log files. dbserverLog should point to /dev/null in an production environment because it still produces large amounts of debug output which can't be switched off. pmountdLog contains the mounts and dismounts. pnfsdLog should be configured with pnfsdLevel=5 to report the modifications only. See logformat for more information.
pnfsdLevel
pmountdLevel
dbserverLevel
These numbers determine the output level for the three deamons. Currently only pnfsdLevel is recognized and should be set to 5 to report the modifications only. The smaller the number the more info you will get.