Content-type: text/html
Manpage of plfsrc
plfsrc
Section: File Formats (5)
Updated: 12/3/2010
Index
Return to Main Contents
NAME
plfsrc - the configuration file for PLFS (Parallel Log Structured File System)
DESCRIPTION
This configuration file defines the mapping between logical and physical paths on the parallel filesystem. It also has some configuration options that PLFS will use to try and optimize performance. This file is never written by PLFS, it is only read and it is the duty of the systems administrator or user to properly create and maintain this file. Please note that this configuration file is very important; changing it can potentially disrupt the ability to read existing files. If a plfsrc file must be changed, it is recommended to create a new mount point and copy files over. Additionally, please use the 'plfs_check_config' tool included in the installation after every edit to the plfsrc file. PLFS searches for this file in $ENV{'PLFSRC'}, $HOME/.plfsrc, /etc/plfsrc in that order.
FILE FORMAT
The file consists of one keyword argument pair per line. Configuration options must be separated by whitespace, ie "keyword argument". Any line with starting with a # is not interpreted.
Path names must be fully qualified. Note that all keywords should be in lower-case.
The possible keywords and their meanings are as follows:
include
-
This allows multiple plfsrc files to be parsed. This is useful if you want to define global values and then put individual mount points in individual plfsrc files. You might do so if some mount points are shared on different clusters (e.g. at LANL we have compute nodes and file transfer nodes and we want different global values for things like threadpool_size but we want to ensure that their mount points are the same so we have individual plfsrc files for each but then include the same plfsrc files that define shared mount points.
num_hostdirs
-
This should be the square root of the total number of compute nodes typically expected to participate in a job. Optional. Default is 32. Max is 1024.
threadpool_size
-
This value is set to the number of threads to run on a machine; for machines used in large jobs, this value should probably be around 2; for machines used in small jobs (like file transfer nodes), this value should probably be around 16. Optional. Default is 8.
index_buffer_mbs
-
This is the amount of memory (in megabytes) that PLFS can use to buffer indexing information while it is writing files. This buffer, if sufficiently large, enables subsequent optimizations which improve read open times. This behavior is only available through the MPI-IO interface and can be controlled by an optional
hint of "plfs_flatten_close." When setting this value, bear in mind that every open file handle can buffer this much memory so that total memory being used can be much larger than this value. Optional. Default is 64.
lazy_stat
-
The lazy_stat flag, when it is set as 0 plfs will do slow stat(getattr). Default is 1.
mount_point
-
The path which users use to access PLFS files. Users should NEVER see the backends. Note this option must appear in the file before the backends keyword. Required.
backends
-
The location where you want the physical containers to reside for each mount_point. You can have a comma-separated list which will distribute PLFS workload across multiple backend directories. LANL uses this feature to spread files across multiple volumes and thereby balance load across different metadata servers. Note this option must appear after the mount_point keyword. Required.
workload
-
This tells PLFS whether a specific mount_point is intended for either shared
file workloads (i.e. N-1) or file-per-proc workloads (i.e. N-N). Possible
values are either "shared_file" or "file_per_proc". "n-1" can also be used in
place of "shared_file" and "n-n" can also be used in
place of "file_per_proc. shared_file is intended
for workloads where multiple writers write concurrently to a single file.
Other workloads should use "file_per_proc" which should make a large metadata
improvement for most metadata workloads so long as multiple backends are defined for the mount point. This is especially true if each backend is serviced by
a different metadata server so that the metadata workload can be balanced
across multiple servers.
canonical_backends
-
This is an advanced directive and will not be used in typical installations. See shadow_backends for a more detailed description.
shadow_backends
-
This is an advanced directive and will not be used in typical installations. This, along with canonical_backends,
allows the user to specify that some set of backends are where canonical
containers should be placed and some different set of backends are where
shadows should be placed. If these directives are used, then shadow subdirs
will ALWAYS be created in shadow backends. This can be used in instances
where the canonical is desired to be on slow global and the data pieces are
desired to be on fast local. In scenarios with lots of different fast local
mounts, different nodes will have different sets of shadow_backends defined
so that each node always writes to the fastest possible backend. For reading,
this will require however that all locations are visible everywhere.
syncer_ip
-
This is an advanced directive and will not be used in typical installations.
This is used in conjunction with shadow_backends and canonical_backends. It
is possible to use an RPC server to asynchronously copy data from shadow_backends
into canonical_backends by specifying this value and by calling plfs_protect.
global_summary_dir
-
The path into which to drop summary information. Useful to determine how
much PLFS is being used and a bit of information about how it is being
used. This must be set to a globally writable and globally visible path.
When this is set, each close() will drop a file into this directory with
some statistical information in the filename. This will happen on every
close() for every proc when using FUSE and just on rank 0's close() when
using ADIO. Be careful if you use this because this directory can get
very full and can cause performance problems. Optional.
statfs
-
The path on which to resolve statfs calls received through FUSE. Typically
this is not specified but LANL uses this to avoid hanging on mounts when
backend volumes are not specified. This is because FUSE calls statfs when it
mounts and PLFS by default forwards that to one of the backends and this can
then hang. But the LANL admins don't want anything in the boot cycle to hang
so they can use this command to force PLFS to forward statfs to a path other
than the backends which won't hang. Optional.
test_metalink
-
This is only for developers to do testing. It won't be explained here. If
you really want to know what it does, please read the code. Otherwise, do
not use this directive.
Note the mount_point and backend may be specified multiple times in the same file.
Note that some commands are global and some are unique to a specific mount point. This is to allow different backend declarations for each mount point for example. Indeed it is an error to share a backend in multiple backends.
mlog_defmask
-
The default logging level. This is used to control how much logging
is enabled. Possible values: EMERG, ALERT, CRIT, ERR, WARN, NOTE, INFO
and DEBUG. The default is WARN.
mlog_setmasks
-
Resets the logging level for a subsystem (overwriting the default value).
Currently defined subsystems are: plfs_misc, internal, container, index,
writefile, fileops, utilities, store, FUSE, and MPI. If the subsystem is
omitted, then it sets the log mask for all subsystems. For example,
"INFO,index=DEBUG,container=DEBUG" sets the mask for all subsystems to
INFO, and then sets index and container to DEBUG.
mlog_stderrmask
-
Level at which log messages are printed to stderr. Useful if set to
a higher priority than the normal mask. This allows users to only
have a subset of higher priority log messages printed to stderr. The
default value is CRIT.
mlog_stderr
-
If set to 1, causes all logged messages to be printed to stderr,
irrespective of the value of mlog_stderrmask (e.g. for debugging).
The default value is 0.
mlog_file
-
If set, then this contains the name of the PLFS log file. If not
set (the default), then logs are not saved to a file. Macros of %p, %h, and
%t can be put in the filename; they are expanded to PID, HOSTNAME, and UNIX
EPOCH respectively.
mlog_msgbuf_size
-
The size, in bytes of the in-memory log message buffer. This is a
circular buffer containing the most recent logs. The default value
is 4096.
mlog_syslog
-
If set to 1, causes all logged messages to be sent the system's
syslog program with syslog(3). The default is 0.
mlog_syslogfac
-
If mlog_syslog is 1, then this contains the facility level used to
open syslog with openlog(3). It must be of the format LOCALn
where "n" is between 0 and 7. The default is to use the USER
facility.
mlog_ucon
-
A low-level debugging option that enables log messages to be sent
to a UDP socket (if set to 1). The default is 0.
Note that the mount_point and backend may be specified multiple times in the same file.
A tool for checking the plfsrc file for correct syntax is included in the plfs distribution. See
plfs_check_config(1)
for more details.
EXAMPLE
A configuration file might appear as follows:
num_hostdirs 32
threadpool_size 16
mount_point /tmp/plfs
backends /tmp/.plfs_store
FILES
/etc/.plfsrc
-
The system wide configuration file.
~/.plfsrc
-
Per user configuration file.
The per user file options will override options in the system wide file. Options in files cannot be combined, only one file will be used.
AUTHORS
PLFS is developed at Los Alamos National Laboratory and is available under LANL LA-CC-08-104. It is hosted at
http://sourceforge.net/projects/plfs
and more information is available at
http://institute.lanl.gov/plfs
SEE ALSO
plfs(1), plfs(7), plfs_check_config(1), plfsrc(5)
Index
- NAME
-
- DESCRIPTION
-
- FILE FORMAT
-
- EXAMPLE
-
- FILES
-
- AUTHORS
-
- SEE ALSO
-
This document was created by
man2html,
using the manual pages.
Time: 14:34:00 GMT, June 15, 2012