Provided by: openafs-client_1.6.15-1ubuntu1.1_amd64 bug

NAME

       butc - Defines Tape Coordinator instructions for automated tape devices

DESCRIPTION

       The CFG_device_name file includes instructions that configure a Tape Coordinator (butc) for use with
       automated backup devices such as tape stackers and jukeboxes, enable the Tape Coordinator to dump and
       restore data to a backup data file on a local disk device, and enable greater automation of other aspects
       of the backup process.

       There is a separate configuration file for each tape device or backup data file. Creating the file is
       optional, and unnecessary if none of the instructions it can include pertain to a given tape device. The
       ASCII-format file must reside in the /var/lib/openafs/backup directory on the Tape Coordinator machine if
       it exists.

       The CFG_device_name file does not replace the /var/lib/openafs/backup/tapeconfig file, a single copy of
       which still must exist on every Tape Coordinator machine.

       To enable the Tape Coordinator to locate the configuration file, construct the variable part of the
       filename, device_name, as follows:

       •   For  a  tape device, strip off the initial "/dev/" string from the device name, and replace any other
           slashes in the name with underscores. For example, CFG_rmt_4m  is  the  appropriate  filename  for  a
           device called /dev/rmt/4m.

       •   For  a  backup data file, strip off the initial slash ("/") and replace any other slashes in the name
           with underscores. For example, CFG_var_tmp_FILE is the appropriate filename for a  backup  data  file
           called /var/tmp/FILE.

       The  CFG_device_name  file lists one or more of the following instructions, each on its own line. All are
       optional, and they can appear in any order. A more detailed description of each instruction  follows  the
       list:

       ASK Controls whether the Tape Coordinator prompts for guidance when it encounters error conditions.

       AUTOQUERY
           Controls whether the Tape Coordinator prompts for the first tape.

       BUFFERSIZE
           Sets the size of the memory buffer the Tape Coordinator uses when transferring data.

       FILE
           Controls whether the dump is written to a tape device or a file.

       MOUNT
           Identifies the file that contains routines for inserting tapes into the device's drive.

       NAME_CHECK
           Controls  whether  the  Tape  Coordinator verifies that a tape's AFS tape name matches the dump being
           written.

       UNMOUNT
           Identifies the file that contains routines for removing tapes from the device's drive.

   The ASK Instruction
       The "ASK" instruction takes a boolean value as its argument, in the following format:

          ASK (YES | NO)

       When the value is "YES", the Tape Coordinator generates a prompt in its window, requesting a response  to
       the  error  cases  described in the following list. This is the default behavior if the "ASK" instruction
       does not appear in the CFG_device_name file.

       When the value is "NO", the Tape Coordinator does not  prompt  in  error  cases,  but  instead  uses  the
       automatic  default responses described in the following list. The Tape Coordinator also logs the error in
       the TE_device_name file. Suppressing the prompts enables the Tape Coordinator to run  unattended,  though
       it still prompts for insertion of tapes unless the "MOUNT" instruction is used.

       The error cases controlled by this instruction are the following:

       •   The  Backup  System  is  unable  to dump a volume while running the backup dump command. With a "YES"
           value, the Tape Coordinator prompts to offer three choices: try to dump the volume again immediately,
           omit the volume from the dump but continue the operation, or terminate the  operation.  With  a  "NO"
           value, the Tape Coordinator omits the volume from the dump and continues the operation.

       •   The  Backup  System  is  unable  to  restore  a  volume  while running the backup diskrestore, backup
           volrestore, or backup volsetrestore command. With a "YES" value,  the  Tape  Coordinator  prompts  to
           offer  two  choices:  omit  the  volume  and  continue  restoring the other volumes, or terminate the
           operation. With a "NO" value, it continues the operation without prompting, omitting the  problematic
           volume but restoring the remaining ones.

       •   The  Backup System cannot determine if the dump set includes any more tapes, while running the backup
           scantape command (the reference page for that command discusses possible reasons for  this  problem).
           With  a "YES" value, the Tape Coordinator prompts to ask if there are more tapes to scan. With a "NO"
           value, it proceeds as though there are more tapes and  invokes  the  routine  named  by  the  "MOUNT"
           instruction in the configuration file, or prompts the operator to insert the next tape.

       •   The  Backup  System  determines  that  the  tape  contains an unexpired dump while running the backup
           labeltape command. With a "YES" value, the Tape Coordinator prompts to offer two choices: continue or
           terminate the labeling operation. With a "NO" value, it terminates the operation  without  relabeling
           the tape.

   The AUTOQUERY Instruction
       The "AUTOQUERY" instruction takes a boolean value as its argument, in the following format:

          AUTOQUERY (YES | NO)

       When  the  value  is  "YES", the Tape Coordinator checks for the "MOUNT" instruction in the configuration
       file when it needs to read the first tape involved in an operation. As described for that instruction, it
       then either prompts for the tape or invokes the specified routine to mount the tape. This is the  default
       behavior if the "AUTOQUERY" instruction does not appear in the configuration file.

       When  the  value  is  "NO", the Tape Coordinator assumes that the first tape required for an operation is
       already in the drive. It does not prompt the operator or invoke the "MOUNT" routine unless  there  is  an
       error  in  accessing  the  first tape. This setting is equivalent in effect to including the -noautoquery
       flag to the butc command.

       Note that the setting of the "AUTOQUERY" instruction controls the Tape Coordinator's behavior  only  with
       respect  to  the  first tape required for an operation. For subsequent tapes, the Tape Coordinator always
       checks for the "MOUNT" instruction. It also refers to the "MOUNT" instruction if it encounters  an  error
       while attempting to access the first tape.

   The BUFFERSIZE Instruction
       The "BUFFERSIZE" instruction takes an integer value, and optionally units, in the following format:

          BUFFERSIZE <size>[(k | K | m | M | g | G)]

       where <size> specifies the amount of memory the Tape Coordinator allocates to use as a buffer during both
       dump  and restore operations.  The default unit is bytes, but use "k" or "K" to specify kilobytes, "m" or
       "M" for megabytes, and "g" or "G" for gigabytes. There is no space between the <size> value and the units
       letter.

       By default, the Tape Coordinator uses a 16 KB buffer during dump operations. As it receives  volume  data
       from  the Volume Server, the Tape Coordinator gathers 16 KB of data in the buffer before transferring the
       entire 16 KB to the tape device or backup data file. Similarly,  during  a  restore  operation  the  Tape
       Coordinator by default buffers 32 KB of data from the tape device or backup data file before transferring
       the entire 32 KB to the Volume Server for restoration into the file system. Buffering makes the volume of
       data  flowing  to  and  from  a  tape  device more even and so promotes tape streaming, which is the most
       efficient way for a tape device to operate.

       In a normal network configuration, the default buffer sizes are usually  large  enough  to  promote  tape
       streaming.  If  the network between the Tape Coordinator machine and file server machines is slow, it can
       help to increase the buffer size.

   The FILE Instruction
       The "FILE" instruction takes a boolean value as its argument, in the following format:

          FILE (NO | YES)

       When the value is "NO", the Tape Coordinator writes to a tape device during a dump  operation  and  reads
       from  one  during  a  restore  operation. This is the default behavior if the "FILE" instruction does not
       appear in the configuration file.

       When the value is "YES", the Tape Coordinator writes volume data to a backup data file on the local  disk
       during  a  dump  operation and reads volume data from a file during a restore operation. If the file does
       not exist when the Tape Coordinator attempts to access it to write a dump, the Tape  Coordinator  creates
       it. For a restore operation to succeed, the file must exist and contain volume data previously written to
       it by a backup dump operation.

       When  the  value  is "YES", the backup data file's complete pathname must appear (instead of a tape drive
       device  name)  in  the  third  field  of   the   corresponding   port   offset   entry   in   the   local
       /var/lib/openafs/backup/tapeconfig  file.  If  the field instead refers to a tape device, dump operations
       appear to succeed but are inoperative. It is not possible to restore data that was accidently dumped to a
       tape device while the "FILE" instruction was set to "YES". (In the same way, if the "FILE" instruction is
       set to "NO", the tapeconfig entry must refer to an actual tape device.)

       Rather than put an actual file pathname  in  the  third  field  of  the  tapeconfig  file,  however,  the
       recommended  configuration  is  to create a symbolic link in the /dev directory that points to the actual
       file pathname, and record the symbolic link in this field. This configuration has a couple of advantages:

       •   It makes the device_name portion of the CFG_device_name, TE_device_name, and TL_device_name names  as
           short  as  possible.  Because  the  symbolic  link  is in the /dev directory as though it were a tape
           device, the device configuration file's name is constructed by stripping off the entire /dev/ prefix,
           instead of just the initial slash. If, for example, the symbolic link is called /dev/FILE, the device
           configuration file name is CFG_FILE, whereas if the actual  pathname  /var/tmp/FILE  appears  in  the
           tapeconfig file, the file's name must be CFG_var_tmp_FILE.

       •   It  provides  for a more graceful, and potentially automated, recovery if the Tape Coordinator cannot
           write a complete dump into the backup data file (because the partition housing the backup  data  file
           becomes  full, for example). The Tape Coordinator's reaction to this problem is to invoke the "MOUNT"
           script, or to prompt the operator if the "MOUNT" instruction does not  appear  in  the  configuration
           file.

           •   If there is a "MOUNT" routine, the operator can prepare for this situation by adding a subroutine
               that changes the symbolic link to point to another backup data file on a partition where there is
               space available.

           •   If  there  is  no  "MOUNT"  instruction,  the  prompt enables the operator manually to change the
               symbolic link to point to another backup data file, then press Return to  signal  that  the  Tape
               Coordinator can continue the operation.

       If  the  third  field  in  the  tapeconfig  file  names  the actual file, there is no way to recover from
       exhausting the space on the partition that houses the backup data file. It is not possible to change  the
       tapeconfig file in the middle of an operation.

       When  writing  to a backup data file, the Tape Coordinator writes data at 16 KB offsets. If a given block
       of data (such as the marker that signals the beginning or end of a volume) does not fill  the  entire  16
       KB, the Tape Coordinator still skips to the next offset before writing the next block. In the output of a
       backup  dumpinfo  command issued with the -id option, the value in the "Pos" column is the ordinal of the
       16-KB offset at which the volume data begins, and so is not generally only one higher than  the  position
       number on the previous line, as it is for dumps to tape.

   The MOUNT Instruction
       The "MOUNT" instruction takes a pathname as its argument, in the following format:

          MOUNT <filename>

       The  referenced  executable file must reside on the local disk and contain a shell script or program that
       directs an automated tape device, such as a jukebox or stacker, to mount a tape (insert it into the  tape
       reader).   The  operator  must  write  the  routine to invoke the mount command specified by the device's
       manufacturer; AFS does not include any scripts, although an example appears in EXAMPLES.  The  script  or
       program inherits the Tape Coordinator's AFS authentication status.

       When  the  Tape  Coordinator  needs  to  mount  a  tape,  it  checks the configuration file for a "MOUNT"
       instruction. If there is no "MOUNT" instruction, the Tape Coordinator prompts the operator  to  insert  a
       tape  before it attempts to open the tape device. If there is a "MOUNT" instruction, the Tape Coordinator
       executes the routine in the referenced file. The routine invoked by the "MOUNT" instruction inherits  the
       local identity (UNIX UID) and AFS tokens of the butc command's issuer.

       There  is  an  exception to this sequence: if the "AUTOQUERY NO" instruction appears in the configuration
       file, or the -noautoquery flag was included on the butc command, then the Tape Coordinator  assumes  that
       the  operator  has  already inserted the first tape needed for a given operation. It attempts to read the
       tape immediately, and only checks for the "MOUNT" instruction or prompts the  operator  if  the  tape  is
       missing or is not the required one.

       When  the  Tape  Coordinator  invokes  the  routine  indicated  by the "MOUNT" instruction, it passes the
       following parameters to the routine in the indicated order:

       •   The tape device or backup data file's pathname, as recorded in the /var/lib/openafs/backup/tapeconfig
           file.

       •   The tape operation, which (except for the exceptions noted in the following list) matches the  backup
           command operation code used to initiate the operation:

           •   "appenddump" (when a backup dump command includes the -append flag).

           •   "dump" (when a backup dump command does not include the -append flag).

           •   "labeltape"

           •   "readlabel"

           •   "restore" (for a backup diskrestore, backup volrestore, or backup volsetrestore command).

           •   "restoredb"

           •   "savedb"

           •   "scantape"

       •   The  number  of times the Tape Coordinator has attempted to open the tape device or backup data file.
           If the open attempt returns an error, the Tape Coordinator increments this value  by  one  and  again
           invokes the "MOUNT" instruction.

       •   The  tape  name.  For some operations, the Tape Coordinator passes the string "none", because it does
           not know the tape name (when running the backup  scantape  or  backup  readlabel,  for  example),  or
           because  the  tape  does  not necessarily have a name (when running the backup labeltape command, for
           example).

       •   The tape ID recorded in the Backup Database. As with the tape name,  the  Backup  System  passes  the
           string "none" for operations where it does not know the tape ID or the tape does not necessarily have
           an ID.

       The routine invoked by the "MOUNT" instruction must return an exit code to the Tape Coordinator:

       •   Code  0  (zero)  indicates  that  the  routine  successfully  mounted  the tape. The Tape Coordinator
           continues the backup operation.  If the routine invoked by the "MOUNT" instruction  does  not  return
           this exit code, the Tape Coordinator never calls the "UNMOUNT" instruction.

       •   Code 1 (one) indicates that the routine failed to mount the tape. The Tape Coordinator terminates the
           operation.

       •   Any  other  code  indicates  that  the  routine  was  not  able  to access the correct tape. The Tape
           Coordinator prompts the operator to insert the correct tape.

       If the backup command was issued in interactive mode and the operator  issues  the  backup  kill  command
       while  the "MOUNT" routine is running, the Tape Coordinator passes the termination signal to the routine;
       the entire operation terminates.

   The NAME_CHECK Instruction
       The "NAME_CHECK" instruction takes a boolean value as its argument, in the following format:

          NAME_CHECK (YES | NO)

       When the value is "YES" and the tape does not have a permanent name, the Tape Coordinator checks the  AFS
       tape  name  when  dumping  a  volume  in  response  to the backup dump command. The AFS tape name must be
       "<NULL>" or match the tape name that the backup dump operation assigns based on the volume set  and  dump
       level  names.  This  is  the  default  behavior  if  the  "NAME_CHECK" instruction does not appear in the
       configuration file.

       When the value is "NO", the Tape Coordinator does not check the AFS tape name before writing to the tape.

       The Tape Coordinator always checks that all dumps on the tape are expired, and refuses to write to a tape
       that contains unexpired dumps.

   The UNMOUNT Instruction
       The "UNMOUNT" instruction takes a pathname as its argument, in the following format:

          UNMOUNT <filename>

       The referenced executable file must reside on the local disk and contain a shell script or  program  that
       directs  an  automated  tape  device, such as a jukebox or stacker, to unmount a tape (remove it from the
       tape reader).  The operator must write the routine  to  invoke  the  unmount  command  specified  by  the
       device's  manufacturer;  AFS  does not include any scripts, although an example appears in EXAMPLES.  The
       script or program inherits the Tape Coordinator's AFS authentication status.

       After closing a tape device, the  Tape  Coordinator  checks  the  configuration  file  for  an  "UNMOUNT"
       instruction,  whether or not the close operation succeeds. If there is no "UNMOUNT" instruction, the Tape
       Coordinator takes no action, in which case the operator must take the  action  necessary  to  remove  the
       current  tape  from  the  drive before another can be inserted. If there is an "UNMOUNT" instruction, the
       Tape Coordinator executes the referenced file. It invokes the routine only once, passing in the following
       parameters:

       •   The tape device pathname (as specified in the /var/lib/openafs/backup/tapeconfig file).

       •   The tape operation (always unmount).

PRIVILEGE REQUIRED

       The file is protected by UNIX mode bits. Creating the file requires the "w"  (write)  and  "x"  (execute)
       permissions  on  the  /var/lib/openafs/backup  directory.  Editing  the  file  requires  the  "w" (write)
       permission on the file.

EXAMPLES

       The following example configuration files demonstrate one way to structure a  configuration  file  for  a
       stacker  or  backup dump file. The examples are not necessarily appropriate for a specific cell; if using
       them as models, be sure to adapt them to the cell's needs and equipment.

   Example CFG_device_name File for Stackers
       In this example, the administrator creates the following entry for a tape stacker called "stacker0.1"  in
       the /var/lib/openafs/backup/tapeconfig file. It has port offset 0.

          2G   5K   /dev/stacker0.1   0

       The  administrator  includes the following five lines in the /var/lib/openafs/backup/CFG_stacker0.1 file.
       To review the meaning of each instruction, see DESCRIPTION.

          MOUNT /var/lib/openafs/backup/stacker0.1
          UNMOUNT /var/lib/openafs/backup/stacker0.1
          AUTOQUERY NO
          ASK NO
          NAME_CHECK NO

       Finally,    the    administrator    writes    the     following     executable     routine     in     the
       /var/lib/openafs/backup/stacker0.1  file  referenced  by  the  "MOUNT"  and "UNMOUNT" instructions in the
       CFG_stacker0.1 file.

          #! /bin/csh -f

          set devicefile = $1
          set operation = $2
          set tries = $3
          set tapename = $4
          set tapeid = $5

          set exit_continue = 0
          set exit_abort = 1
          set exit_interactive = 2

          #--------------------------------------------

          if (${tries} > 1) then
             echo "Too many tries"
             exit ${exit_interactive}
          endif

          if (${operation} == "unmount") then
             echo "UnMount: Will leave tape in drive"
             exit ${exit_continue}
          endif

          if ((${operation} == "dump")     |\
              (${operation} == "appenddump")     |\
              (${operation} == "savedb"))  then

              stackerCmd_NextTape ${devicefile}
              if (${status} != 0)exit${exit_interactive}
              echo "Will continue"
              exit ${exit_continue}
          endif

          if ((${operation} == "labeltape")    |\
              (${operation} == "readlabel")) then
             echo "Will continue"
             exit ${exit_continue}
          endif

          echo "Prompt for tape"
          exit ${exit_interactive}

       This routine uses two of the parameters passed to it by the Backup System: "tries"  and  "operation".  It
       follows  the  recommended  practice of prompting for a tape if the value of the "tries" parameter exceeds
       one, because that implies that the stacker is out of tapes.

       For a backup dump or backup  savedb  operation,  the  routine  calls  the  example  "stackerCmd_NextTape"
       function  provided  by  the stacker's manufacturer. Note that the final lines in the file return the exit
       code that prompts the operator to insert a tape; these lines are invoked when either the  stacker  cannot
       load a tape or a the operation being performed is not one of those explicitly mentioned in the file (such
       as a restore operation).

   Example CFG_device_name File for Dumping to a Data File
       In  this  example, the administrator creates the following entry for a backup data file called HSM_device
       in the /var/lib/openafs/backup/tapeconfig file. It has port offset 20.

          1G   0K   /dev/HSM_device   20

       The administrator includes the following lines in  the  /var/lib/openafs/backup/CFG_HSM_device  file.  To
       review the meaning of each instruction, see DESCRIPTION.

          MOUNT /var/lib/openafs/backup/file
          FILE YES
          ASK NO

       Finally,  the  administrator  writes the following executable routine in the /var/lib/openafs/backup/file
       file referenced by the  "MOUNT"  instruction  in  the  CFG_HSM_device  file,  to  control  how  the  Tape
       Coordinator handles the file.

          #! /bin/csh -f
          set devicefile = $1
          set operation = $2
          set tries = $3
          set tapename = $4
          set tapeid = $5

          set exit_continue = 0
          set exit_abort = 1
          set exit_interactive = 2

          #--------------------------------------------

          if (${tries} > 1) then
             echo "Too many tries"
             exit ${exit_interactive}
          endif

          if (${operation} == "labeltape") then
             echo "Won't label a tape/file"
             exit ${exit_abort}
          endif

          if ((${operation} == "dump")   |\
              (${operation} == "appenddump")   |\
              (${operation} == "restore")   |\
              (${operation} == "savedb")    |\
              (${operation} == "restoredb")) then

             /bin/rm -f ${devicefile}
             /bin/ln -s /hsm/${tapename}_${tapeid} ${devicefile}
             if (${status} != 0) exit ${exit_abort}
          endif

          exit ${exit_continue}

       Like  the  example  routine  for a tape stacker, this routine uses the "tries" and "operation" parameters
       passed to it by the Backup System. The "tries" parameter tracks how many times the Tape  Coordinator  has
       attempted  to access the file. A value greater than one indicates that the Tape Coordinator cannot access
       it, and the routine returns exit code 2 ("exit_interactive"), which results in a prompt for the  operator
       to  load  a  tape.  The  operator  can  use  this  opportunity to change the name of the backup data file
       specified in the tapeconfig file.

       The primary function of this routine is to establish a link between the device file and the  file  to  be
       dumped  or restored. When the Tape Coordinator is executing a backup dump, backup restore, backup savedb,
       or backup restoredb operation, the routine invokes the UNIX "ln -s" command to  create  a  symbolic  link
       from the backup data file named in the tapeconfig file to the actual file to use (this is the recommended
       method). It uses the value of the "tapename" and "tapeid" parameters to construct the file name.

SEE ALSO

       tapeconfig(5),     backup_diskrestore(8),    backup_dump(8),    backup_restoredb(8),    backup_savedb(8),
       backup_volrestore(8), backup_volsetrestore(8)

COPYRIGHT

       IBM Corporation 2000. <http://www.ibm.com/> All Rights Reserved.

       This documentation is covered by the IBM Public License Version 1.0.  It was converted from HTML  to  POD
       by  software  written  by  Chas  Williams  and Russ Allbery, based on work by Alf Wachsmann and Elizabeth
       Cassell.

OpenAFS                                            2021-04-01                                            BUTC(5)