What it is
The qdf defines the pool of disks that are used in the global quota
system for Uniform Access computers and keeps track of which users
have files on each of the disks. The global quota system works off
of three files:
- qdf.inf
-
Defines the pools and what clusters can use them for home directories.
The qdf.inf file is a text file and has volumes of comments at the
beginning of it. Basically each disk is assigned a unique column
number from 0 to 255. This column number is arbitrary and is used
to index into the qdf.dat file.
- qdf.dat
-
Lists which users have files on each filesystem. This is in the form of
a matrix of one row for each user, one column for each disk. An element
of the matrix consists of 8 bits, only one of which is used indicating
that the user has files on this disk. The qdf data is rebuilt periodically
by the /usr/local/etc/bldqdf script on melville. It is also updated on
the fly by new, newdir and newweb.
- qlf.dat
-
Lists what limits users have on each galaxy. This is another matrix with
one row for each user, one column for each galaxy. An element in the matrix
contains that user's disk quota as a floating point number of megabytes.
Galaxy zero is a global value, the definition of the rest of the
galaxy ordinals is in the idf.dat file for the galaxy and is referenced
in the qdf.dat file.
The idfflags QDFHOST command will display
the current QDFHOST and should be used in scripts. Routines to access
these files through rpc calls to the helper dæmon "kelper" on the
QDFHOST exist in libkelp.a.
The qdf.inf file is located on the NFS volume that is referenced by the
/sy99/dat symlink on the "QDFHOST" server and can be updated on any
server with write access to this NFS volume. The qdf.dat and qlf.dat
files exist natively on the QDFHOST. They should only be accessed by the
kelper dæmon, but there are symlinks in the /sy99/dat directory that
will take you to them, should you need to reference them directly.
Notifying the QDF helper, "kelper"
After making any changes to the qdf.inf file, the helper on the QDFHOST
must be told to reread it. This is done by sending it "clear" ding:
ovid03> qdf_host=`idfflags QDFHOST`
ovid03> ding ${qdf_host} kelper clear
Sent message 'clear' to 128.208.181.43 (6227).
Recv message from 128.208.181.43 (6227) len=22.
Got: P0Accumulators cleared
Or by stopping and restarting the kelper process there:
#seuss01> service kelper stop; sleep 2; service kelper start
KELPER daemon stopped
KELPER daemon started
You can send a "status" ding to the kelper to verify it's still
functioning:
ovid03> ding ${qdf_host} kelper s
Sent message 's' to 128.208.181.43 (6227).
Recv message from 128.208.181.43 (6227) len=117.
Got: P2Ready
Accumulators since: Jan 21 09:38:22 2020
Quota Get: 4
QDF Info: 4
QDF Get Row: 4