Chapter 1. Configuration

This chapter describes the following:

TMF Configuration File

Before TMF is started, the TMF configuration file, tmf.config , must be updated to configure TMF. The tmf.config file resides /etc/tmf/tmf.config. TMF uses the values in these files to decide what to do in various situations. Example 1-1 provides a sample file. You should set the parameters in your TMF configuration file to values that suit your system. You can update the file with any text editor. This chapter contains the basic information that you need for this task. For a description of the parameters, see the tmf.config(5) man page.

Example 1-1. TMF Configuration File

The following sample TMF configuration file begins with a comment (the title of the file) preceded by the number sign character ( #). Comments always begin with the # character. The rest of the file contains a number of statements. Each of these statements is described in succeeding sections. “Statement Order and Syntax” describes syntax rules for these statements.

#
#       TAPE MANAGEMENT FACILITY CONFIGURATION FILE
#
#
#

LOADER
      name = operator ,
      type = OPERATOR ,
      status = UP ,
      mode = ATTENDED ,
      message_path_to_loader = MSGDAEMON ,
      server = localhost ,
      scratch_volume_label_type = (AL,NL,SL) ,
      queue_time = 0 ,
      verify_non_label_vsn = YES ,
      message_route_masks = (MSGD) ,
      loader_ring_status = ALERT

LOADER
      name = wolfy ,
      type = STKACS ,
      status = DOWN ,
      mode = ATTENDED ,
      message_path_to_loader = NETWORK ,
      server = wolfcreek ,
      scratch_volume_label_type = NONE ,
      queue_time = 15 ,
      verify_non_label_vsn = NO ,
      message_route_masks = (MSGD) ,
      loader_ring_status = IGNORE

LOADER
      name = panther ,
      type = STKACS ,
      status = DOWN ,
      mode = ATTENDED ,
      message_path_to_loader = NETWORK ,
      server = stk9710 ,
      scratch_volume_label_type = NONE ,
      queue_time = 15 ,
      verify_non_label_vsn = NO ,
      message_route_masks = (MSGD) ,
      loader_ring_status = IGNORE

LOADER
      name = esys ,
      type = EMASS ,
      status = DOWN ,
      mode = ATTENDED ,
      message_path_to_loader = NETWORK ,
      server = esisun ,
      scratch_volume_label_type = NONE ,
      queue_time = 15 ,
      verify_non_label_vsn = NO ,
      message_route_masks = (MSGD) ,
      loader_ring_status = IGNORE

LOADER
      name = tmfov ,
      type = OPENVAULT ,
      server = armadillo ,
      status = down ,
      mode = ATTENDED ,
      message_path_to_loader = NETWORK ,
      ov_tmf_application_name = tmf,
      scratch_volume_label_type = NONE ,
      queue_time = 15 ,
      verify_non_label_vsn = NO ,
      message_route_masks = (MSGD) ,
      loader_ring_status = IGNORE


DEVICE_GROUP
      name = CART
      avr  = YES

DEVICE_GROUP
      name = DLT

DEVICE_GROUP
      name = EMASS

DEVICE_GROUP
      name = STK9490

AUTOCONFIG
{
      DEVICE
                name   = t1 ,
                device_group_name = CART ,
                file   = /hw/tape/tps3d1 ,
                status = DOWN ,
                loader = wolfy ,
                vendor_address = (0,0,1,1)
      DEVICE
                name   = t4 ,
                device_group_name = CART ,
                file   = /hw/tape/tps3d4 ,
                status = DOWN ,
                loader = wolfy ,
                vendor_address = (0,0,1,0)
      DEVICE
                name   = dlt2 ,
                device_group_name = DLT ,
                file   = /hw/tape/tps5d2 ,
                status = DOWN ,
                loader = panther ,
                vendor_address = (1,0,2,0)
      DEVICE
                name   = dlt3 ,
                device_group_name = DLT ,
                file   = /hw/tape/tps5d3 ,
                status = DOWN ,
                loader = panther ,
                vendor_address = (1,0,2,1)
      DEVICE
                name   = ed0 ,
                device_group_name = EMASS ,
                file   = /hw/tape/tps10d0 ,
                status = DOWN ,
                loader = esys ,
                vendor_address = (1)
      DEVICE
                name   = s9490s4 ,
                device_group_name = STK9490 ,
                file   = /hw/tape/tps22d4 ,
                status = down ,
                vendor_address = (0,0,1,0),
                loader = tmfov
      DEVICE
                name   = s9490s1 ,
                device_group_name = STK9490 ,
                file   = /hw/tape/tps22d1 ,
                status = down ,
                vendor_address = (0,0,1,1),
                loader = tmfov
}
OPTIONS
ask_label_switch                        = YES ,
ask_vsn                                 = YES ,
blocksize                               = 32768 ,
blp_ring_status                         = UNRESTRICTED ,
check_expiration_date                   = YES ,
check_file_id                           = YES ,
check_protection                        = YES ,
check_vsn                               = YES ,
device_group_name                       = CART ,
fes_daemon_frontend_id                  = "mvs" ,
fes_daemon_socket_port_number           = 1167 ,
file_status                             = OLD ,
label_type                              = AL ,
loader_log                              = YES ,
loader_device_assignment_order          = ROUND_ROBIN ,
max_number_of_tape_users                = 100 ,
number_of_autoloader_retries            = 10 ,
operator_message_destination            = (MSGD) ,
operator_message_frontend_id            = "" ,
overcommit_max                          = 20 
retention_period_days                   = 0 ,
ring_status                             = (IN,OUT) ,
scratch_volume_retries                  = 0 ,
scratch_volume_vsn                      = ?????? ,
servicing_frontend_id                   = "" ,
servicing_frontend_mandatory            = NO ,
system_code                             = SGI/TMF ,
tmf_major                               = 261 ,
trace_file_group_id                     = 3 ,
trace_file_mode                         = 0640 ,
trace_file_owner                        = 0 ,
trace_directory                         = /var/spool/tmf/trace ,
trace_file_size                         = 409600 ,
trace_state                             = ON ,
trace_save_directory                    = /var/spool/tmf/trace_save ,
user_exit_mask                          = UEX_STOP ,
verify_scratch_vsn                      = NO


LOADER Statement

The TMF configuration file in Example 1-1, contains five LOADER statements; these represent the five loaders that are available on this system. Each LOADER statement is composed of the parameters needed to describe a specified loader. For example, the first LOADER statement has 12 parameters:

LOADER
      name = operator ,
      type = OPERATOR ,
      status = UP ,
      mode = ATTENDED ,
      message_path_to_loader = MSGDAEMON ,
      server = localhost ,
      server_reply_wait_time = 300,
      scratch_volume_label_type = (AL,NL,SL) ,
      queue_time = 0 ,
      verify_non_label_vsn = YES ,
      message_route_masks = (MSGD) ,
      loader_ring_status = ALERT

The name of the loader is operator, the type is OPERATOR, the status is UP, and the mode is ATTENDED.

The message path to the servicing loader is MSGDAEMON; the server name is localhost and the amount of time that the LOADER process waits for a server response before declaring a timeout condition is 300 seconds.

The loader will process ANSI (AL), nonlabeled (NL), and IBM (SL) scratch requests. The system will queue a request and wait for the best loader to become available for up to 24 hours.

Nonlabeled volume serial numbers (VSNs) must be verified. message_route_masks is MSGD, which means that mount request messages are routed to the message daemon. The loader is alerted to the ring status whenever a tape is mounted.

It may be necessary to specify an alternate network name for LOADER statements that represent NETWORK libraries. If a NETWORK library is not connected to the host primary network, the path must be specified with the return_host parameter so that the library can return responses to TMF. This parameter is only used if it is set; there is no default.

DEVICE_GROUP Statement

The file in Example 1-1 contains four DEVICE_GROUP statements, one for each of the system's device groups:

DEVICE_GROUP
      name = CART
      avr  = YES

DEVICE_GROUP
      name = DLT

DEVICE_GROUP
      name = EMASS

DEVICE_GROUP
      name = STK9490

The first DEVICE_GROUP statement supports the automatic volume feature.

AUTOCONFIG Statement

The AUTOCONFIG statement in Example 1-1, is made up of seven DEVICE statements, one for each device in the system:

AUTOCONFIG
{
      DEVICE
                name   = t1 ,
                device_group_name = CART ,
                file   = /hw/tape/tps3d1 ,
                status = DOWN ,
                loader = wolfy ,
                vendor_address = (0,0,1,1)
      DEVICE
                name   = t4 ,
                device_group_name = CART ,
                file   = /hw/tape/tps3d4 ,
                status = DOWN ,
                loader = wolfy ,
                vendor_address = (0,0,1,0)
      DEVICE
                name   = dlt2 ,
                device_group_name = DLT ,
                file   = /hw/tape/tps5d2 ,
                status = DOWN ,
                loader = panther ,
                vendor_address = (1,0,2,0)
      DEVICE
                name   = dlt3 ,
                device_group_name = DLT ,
                file   = /hw/tape/tps5d3 ,
                status = DOWN ,
                loader = panther ,
                vendor_address = (1,0,2,1)
      DEVICE
                name   = ed0 ,
                device_group_name = EMASS ,
                file   = /hw/tape/tps10d0 ,
                status = DOWN ,
                loader = esys ,
                vendor_address = (1)
      DEVICE
                name   = s9490s4 ,
                device_group_name = STK9490 ,
                file   = /hw/tape/tps22d4 ,
                status = down ,
                vendor_address = (0,0,1,0),
                loader = tmfov
      DEVICE
                name   = s9490s1 ,
                device_group_name = STK9490 ,
                file   = /hw/tape/tps22d1 ,
                status = down ,
                vendor_address = (0,0,1,1),
                loader = tmfov


Note: The file fields in the first two DEVICE statements are for an IRIX system. For an SGI ProPack system, file indicates device files in the /dev/ts directory. For the actual location of the device files on your system, see the TS(7) man page.


DEVICE Statement

The DEVICE statement identifies the tape devices that are available on the system on which TMF is running. In the first DEVICE statement in the AUTOCONFIG statement, shown in the Example 1-1, the device is t1:

      DEVICE
                name   = t1 ,
                device_group_name = CART ,
                file   = /hw/tape/tps3d1 ,
                status = DOWN ,
                loader = wolfy ,
                vendor_address = (0,0,1,1)

This device is a member of the CART device group, which is specified by the first DEVICE_GROUP statement (see “DEVICE_GROUP Statement”).

The pathname to the device-specific file is /hw/tape/tps3d1 . The initial status of the device is DOWN. The vendor address of the drive in the library is (0,0,1,1).


Note: The file field in this sample DEVICE statement is for an IRIX system. For an SGI ProPack system, file indicates device files in the /dev/ts directory. For the actual location of the device files on your system, see the TS(7) man page.

The loader name is wolfy, and it is defined in the second LOADER statement in Example 1-1.

OPTIONS Statement

The OPTIONS statement shows the values that TMF uses for the options. For a description of each option, see the tmf.config (5) man page.

In the file in Example 1-1, the defaults are used for all options except the following:

check_protection                        = YES ,
fes_daemon_frontend_id                  = "mvs" ,
scratch_volume_retries                  = 0 ,
user_exit_mask                          = UEX_STOP ,
verify_scratch_vsn                      = NO

YES for check_protection means the protection flag on the header is checked. fes_daemon_frontend_id specifies mvs for the front-end identifier of the TCP daemon. Because scratch_volume_retries is set to 0, users are not allowed to retry scratch volume mount requests. TMF stops and enables one or more user exits for the site because UEX_STOP is the value for user_exit_mask. Because the value for verify_scratch_vsn is NO, users do not send the operator a message requesting verification whenever they want to use a scratch tape.

Statement Order and Syntax

A statement consists of a name followed by a list of parameters. This section describes the following:

Statement Order

There are at least four statements in a TMF configuration file, one of which also consists of statements. Within the file, the statements must be in the following order:

  1. LOADER statements (one per loader).

  2. DEVICE_GROUP statements (one per device group).

  3. AUTOCONFIG statement (one per system).

    The AUTOCONFIG statement consists of DEVICE statements. DEVICE statements (one per device) define devices that TMF will control and that are automatically configured during the system boot.

  4. OPTIONS statement (one per system).

Statement Syntax

The following syntax rules apply to the TMF statements:

  • The statement name and its parameters are separated by one or more white spaces (blank, tab, or newline characters).

  • Adjacent parameters are separated by a comma.

  • The end of the parameter list is indicated by the absence of a comma.

  • Adjacent statements are separated by one or more white spaces.

The following syntax rules apply to keyword parameters:

  • The keyword is separated from its value by the equal sign (=).

  • The value of a keyword may consist of keywords, numbers, character strings, and lists of keywords, numbers, and character strings.

  • If the value of a keyword is a list, then the list is enclosed within left and right parentheses. Adjacent elements of a list are separated by a comma. If the list consists of one element, you do not have to enclose it in parentheses. The elements of a list may be lists.

  • Numbers may be specified in decimal, octal, and hexadecimal formats. These formats are the same as those used in the C programming language:

    Decimal 

    The first digit is not 0 (for example, 1372).

    Octal 

    The first digit is 0 (for example, 0563).

    Hexadecimal 

    The first 2 characters are either 0x or 0X (for example, 0xf2).

  • Character strings are series of characters. If any one of the special characters (white space, ", #, =, {, }, (, ), ', \) is needed in the string, then the string must be enclosed in a pair of double quotation marks, ("). Within a pair of double quotation marks, the sequence of characters \ x, where x is any character, will be replaced by x. This is the only way a " and a \ may be specified in a quoted string.

  • Comments may appear between any symbols described above.

You can code the names of statements and keywords in a mixture of uppercase and lowercase letters. The values specified by the user are case-sensitive. The following mean the same thing:

Name = A
name = A.

The following are different:

name = A
name = a.

Job Limits and the ULDB

For IRIX systems the user limits database (ULDB) allows a site to configure subsystems and related limits on a global or per-user basis. A site can add a TMF domain to the ULDB to control access to TMF-managed tapes and devices as in Procedure 1-1. For IRIX systems, the TMF domain defines tape access permissions and resource allocation limits. For more information on configuring the ULDB, see IRIX Admin: Resource Administration.

Procedure 1-1. Defining a TMF Domain

  1. Define the following permissions as part of the TMF domain:

    bypasslabel

    Allows or prevents the use of -l blp on the tmmnt(1) command

    rwnonlabel

    Allows or prevents the use of -l nl on the tmmnt(1) command

    datamanager

    Allows or prevents the use of absolute positioning requests

    You set these permissions to 0 (disable) or 1 (enable):
    bypasslabel = 0 | 1
    rwnonlabel = 0 | 1
    datamanager = 0 | 1

    These typically are set to 0 for the global TMF domain definition.

  2. Define the appropriate limit on the number of devices for each group that may be allocated by users.

    The groups defined in the TMF configuration file must be defined with an appropriate limit on the number of devices for each group that may be allocated by users.

    Example 1-2. Global Device Group Definitions

    The TMF configuration file, tmf.config , contains the following two DEVICE_GROUP statements:

    DEVICE_GROUP
            name = STK9840
    DEVICE_GROUP
            name = DLT

    If a user can allocate only two devices from either group, then the TMF domain definitions are:

    STK9840 = 2
    DLT = 2

    A global TMF domain for the above specifications is:
    domain tmf {
            bypasslabel = 0
            rwnonlabel = 0
            datamanager = 0
            STK9840 = 2
            DLT = 2
    }


    Example 1-3. Specific Device Group Definitions

    If an administrator has a domain that allows users to label tapes or handle nonlabeled tapes, the following specifications apply:

    user adm {
    
            tmf {
                   bypasslabel = 1
                   rwnonlabel = 1
                   datamanager = 0
                   STK9840 = unlimited
                   DLT = unlimited
            }

    TMF does not have the means to determine to which job domain a user belongs; that is, TMF cannot distinguish whether a user who is requesting TMF services is using batch or interactive facilities. Consequently, you must define the TMF domain and related user limits to accommodate any domain to which the user may belong.


    TMF and Comprehensive System Accounting (CSA)

    To generate comprehensive system accounting (CSA) records, you start TMF with the -c option on the tmdaemon(8) command line. This option may be added to the tmf.options file to enable accounting at TMF startup. If the necessary accounting routines are not present, a warning message is generated in the /var/spool/tmf/daemon.stderr file and TMF accounting is disabled. For more information, see the CSA(1M) man page.