15 lib_cmd

本章介绍可选的命令行界面 (command-line interface, CLI) lib_cmd。此工具主要用于管理 ACSLS 中的逻辑磁带库,但在某些特定上下文中,可使用某些命令替代 ACSLS GUI 或 cmd_proclib_cmd CLI 支持弹出操作,包括指定长卷(超过 42 个)列表的功能。

简介

ACSLS 在 8.0 版中引入了逻辑磁带库的概念。可使用 SCSI 命令,借助 SCSI 介质转换器仿真 (SCSI Media Changer Emulation, SMCE) 通过光纤通道连接来访问逻辑磁带客户机操作。客户机可以挂载卸载装入弹出磁带,并使用 SMCE 界面管理自己的磁带库存,就像将磁带库直接连接到客户机应用程序那样对其进行操作。

在 ACSLS 8.2 之前,逻辑磁带库管理设置功能是通过 ACSLS 图形用户界面(也在 ACSLS 8.0 中引入)完成的。此类任务包括创建包含所需数量的存储单元和磁带机插槽的逻辑磁带库,建立客户机启动器-目标关系,将物理磁带机分配到磁带库,以及分配磁带卷。

这些管理任务也可以通过 UNIX 命令行界面 (command-line interface, CLI) 完成。CLI 扩展了逻辑磁带库的可用性,提供了访问关键管理功能的更快途径,并使用批处理 UNIX shell 脚本提供管理逻辑磁带库的方法。

命令

lib_cmd 

路径名

$ACS_HOME/bin/lib_cmd

摘要

lib_cmd
lib_cmd [-f infile]
lib_cmd assign drive drive_id lib_id
lib_cmd assign volume [vol_id | vol-range] lib_id
lib_cmd unassign volume [ vol_id | vol-range ] lib_id 
lib_cmd unassign drive lib_id  logical_drive_id
lib_cmd create library lib_name backing_acs cell_capacity drive_capacity
lib_cmd create mapping initiator_id target_id library_id
lib_cmd edit initiator initiator_id alias
lib_cmd edit library lib_id [-n name ] 
                            [-c capacity ] 
                            [-d drive_slots ]
                            [-f volume_label_format [6|8p|8s|all] 
                            [-x imp/exp_cell_count ]
lib_cmd edit target target_id alias
lib_cmd refresh initiator
lib_cmd refresh target
lib_cmd delete initiator initiator_id (y/n)
lib_cmd delete library lib_id (y/n)
lib_cmd delete mapping lib_id (y/n)
lib_cmd delete target target_id  (y/n)
lib_cmd display drive [drive_id ]
                      [-p acs_id | all ] 
                      [-l lib_id | all ] 
                      [-t drive_type ] 
                      [-u acs_id ]
lib_cmd display initiator
lib_cmd display library [ -p acs_id | all ]
                        [ -l lib_id | all ]
lib_cmd display mapping [ lib_id | all ]
lib_cmd display target
lib_cmd display volume [ vol_id ] | vol-range ] 
                       [ -p acs_id | all ]
                       [ -l lib_id | all ]
                       [ -u acs_id ]
lib_cmd eject cap <cap_id> [-verbose] volume <vol_id...vol_id> | file <path_to_volume_list>
lib_cmd vary library lib_id [online|offline|diagnostic]
lib_cmd vary drive lib_id drive_id  [online|offline|diagnostic]
lib_cmd [ exit | quit | log ]

使用 lib_cmd

lib_cmd 命令行实用程序是 ACSLS GUI 用于管理和监视 ACSLS 逻辑磁带库中资源的替代方案。通过 lib_cmd,ACSLS 管理员可以创建、编译或删除逻辑磁带库;向逻辑磁带库分配或取消分配卷或磁带机;刷新启动器或目标;为客户机通信创建启动器-目标映射;显示逻辑磁带库的状态;或显示已配置的物理或逻辑磁带库中的卷或磁带机的状态。

除了逻辑磁带库管理外,lib_cmd 还提供一组常规磁带库命令,可用于代替 cmd_proc 来显示磁带库的内容,或将大量卷弹出到单个 CAP(如 SL3000 AEM)。

这些操作可由 ACSLS 组中的任何用户执行,包括 root 用户。

可在交互模式或批处理模式下操作 lib_cmd。交互模式仅由不带参数的命令调用。

lib_cmd

交互模式支持“帮助”功能,此功能可列出所有可能的子命令和参数。在每个子命令的上下文中,可根据请求显示可能的参数和选项列表。如果不确定哪些是有效的输入字符串,可按 <Enter> 以获得直接上下文的所有可能的参数列表。

批处理模式中不提供交互性,这是为了更好地支持通过用户生成的脚本来使用此实用程序。在批处理模式中,必须将所有所需的选项和参数与命令一起提交。否则就会返回一条错误消息。

选项

  • -f(命令文件输入规范)

    请求 -f 选项时,实用程序将执行在指定的输入文件中找到的命令组。输入文件只能包含格式完整的请求。

子命令

本部分讨论子命令。

assign drive drive_id lib_id

将指定的磁带机分配到指定的磁带库。drive_id 由物理磁带库中磁带机的标准表示法表示 (acs,lsm,panel,drive)。参数 lib_id 是所分配的逻辑磁带库的 ID。逻辑磁带库 ID 从 1001 开始,并随着磁带库的创建逐步增大。

unassign drive lib_id logical_drive_id

从逻辑磁带库配置中删除指定的逻辑磁带机。磁带机由其逻辑地址指定(从地址 500 开始)。逻辑磁带库 ID 是一个四位数的数字(从 1001 开始)。

assign volume vol_id | vol-range lib_id

分配在逻辑磁带库中专用的卷。该卷由其标准六字符或条形码标签格式表示。磁带库由其数字逻辑磁带库 ID 表示。卷必须是“可分配的”。也就是说,它尚未分配、无主、未挂载、未预留、未在传输中或未以其他方式使用。

范围由一个较低的 ACSII 值字符串和一个较高的 ASCII 值字符串指定,以短划线分隔。请求卷范围时,lib_cmd 将搜索底层 ACS 以查找指定范围内的卷。该范围内的任何可分配的卷将被分配到指定的逻辑磁带库。

unassign volume vol_id | vol-range lib_id

从逻辑磁带库库存中删除卷。卷必须位于其起始单元中,不能预留用于暂挂的移动操作。

范围由一个较低的 ACSII 值字符串和一个较高的 ASCII 值字符串指定,以短划线分隔。请求卷范围时,lib_cmd 将搜索指定的逻辑磁带库以查找指定范围内的卷。该范围中未使用的任何已分配的卷将从磁带库取消分配。

create library lib_name backing_acs cell_capacity drive_capacity

创建一个新逻辑磁带库。在 create library 后,需要四个参数,其顺序如下:磁带库别名(字符串);底层 ACS ID(整数);存储单元数(整数);以及磁带机插槽数(整数)。

create mapping initiator_id target_id library_id

为指定的磁带库建立启动器-目标(客户机-服务器)关系。

edit library lib_id [-n name ] [-c capacity ] [-d drive_slots ] [-f volume_label_format [6|8p|8s|all] [-x imp/exp_cell_count ]

更改现有逻辑磁带库的配置。特定磁带库由其四位数的数字 ID 表示。可以提供任何一个选项,并且只能使用该选项附带的参数更改单个字段。选项包括:

  • -n 磁带库别名

  • -c 逻辑存储单元容量

  • -d 逻辑磁带机插槽数量

  • -f 卷标签格式

  • -x 逻辑导入/导出 (CAP) 单元数量

卷标签格式可以使用以下任一项表示:

  • 6 六个字符的传统卷标签

  • 8p 八个字符,包含介质类型代码前缀

  • 8s 八个字符,包含介质类型代码后缀

  • all 接受所有标签格式

refresh initiator

检索 ACSLS 当前已知的所有启动器。

refresh target

检索 ACSLS 当前已知的所有目标。

delete initiator initiator_id (y/n)

从配置中删除指定的启动器。需要进行确认 (y) 才能提交指定的删除。

delete library lib_id (y/n)

从 ACSLS 配置中删除指定的逻辑磁带库。这将导致级联删除 (delete),取消任何已分配的卷和磁带机与磁带库的关联。尝试进行删除之前必须使磁带库脱机。如果磁带库中有一个或多个逻辑卷当前正在使用中,则删除将失败。需要进行确认 (y) 才能提交指定的删除。

delete mapping lib_id (y/n)

从指定的逻辑磁带库中删除所有启动器-目标映射。该操作将禁用所有当前客户机连接。需要进行确认 (y) 才能提交指定的删除。

delete target target_id (y/n)

从配置中删除指定的目标。需要进行确认 (y) 才能提交指定的删除。

display drive drive_id  [-t drive_type ]  [-p acs_id | all ]  [-l lib_id | all ] [-u acs_id ]

生成指定磁带库中指定磁带机或所有磁带机的摘要。

显示包括磁带机的物理和逻辑地址、磁带机类型、磁带机状态,如果 drive_status 显示 in_use,则显示已挂载的磁带的 VOLSER

------------------------ Example ----------------------------
$ lib_cmd display drive 0,0,10,1
 Physical   Logical    Drive     Drive     Drive      Mounted
 Location   Address    Type      State     Status     Volume
 0,0,10,1   1001:502   9840      Online    in use     RIFF21
-------------------------------------------------------------
  • 如果提交了不带任何选项的 display drive all,该实用程序将生成每个物理 ACS 中所含的所有卷的列表。

  • 如果传递了 -t 选项,则只会显示指定磁带机类型的磁带机。

  • 使用 -p 选项可限制只显示指定物理 ACS 中的磁带机。

  • 如果包含 -l 选项,则只会显示分配给指定逻辑磁带库的磁带机。如果在 -l 选项后面指定了 all,则会显示与每个已配置逻辑磁带库关联的所有磁带机。

  • 使用 -u 选项可只显示关联的 ACS 中的未分配磁带机。此选项必须后跟一个参数以指定所需的 ACS。

display initiator

生成 ACSLS 所识别的所有启动器的列表。将按全局名称和别名列出每个启动器。

display library [ -l lib_id | all ][ -p acs_id | all ]

显示所请求磁带库 ID 的属性。指定逻辑磁带库的 -l,或物理 ACS 的 -p

  • 如果指定 -l,该实用程序将生成逻辑磁带库配置的摘要,如下所示:

    数字 ID、名称、状态(所需状态)

    底层 ACS ID、状态(所需状态)

    已分配的导入/导出单元数

    已分配的磁带机插槽数

    已分配的磁带机数

    已分配的存储单元数

    空闲单元数

    已分配的卷数(其中的不可访问的卷数)

    卷标签格式

    -----------------Example-----------------------------------
    ACS 1001 'logLib01' Offline (Desired Online)
       Backing ACS 0 Offline (Desired Online)
       2 import/export cells
       5 Tape Drive Slots
       2 Tape Drives
       999 Storage Cells
       993 Free Cells
       106 Volumes (6 Inaccessible):
       Volume Label Format: Six character (classic)
    --------------------------------------------------------
    

    不可访问的卷是逻辑磁带库中已分配但无法访问的卷,不可访问的原因如下:

  • 该卷已从物理磁带库中弹出。

  • 客户机应用程序已将该卷标记为 eject

  • 已分配的卷位于物理磁带库中,但逻辑磁带库超过了其存储容量。

  • 如果指定参数 all 代替数字 lib_id,则对每个已配置的逻辑磁带库重复该显示。在批处理模式中,传递不带参数的 -l 与使用参数 all 具有同等作用。

  • 如果在指定选项 -p 时包含指定的 ACS ID,该实用程序生成的显示将汇总该 ACS 的磁带库配置:

    -------------------------------- Example ----------------------------------
    $ lib_cmd display lib -p 0
    Physical ACS 0 Online 56 Drives:
    1 LSM:
    LSM  Library   LSM     LSM    Drive  Vol     Free Cell
    ID    Type    Status  State   Count  Count   Count
    0,0   SL3000  Normal  Online   56    62      4321
    10 CAPs:
     ID     Mode        State    Status     Condition    Size     Availability     
    0,0,1   Manual     Online   Available   Operative    26       shared
    0,0,2   Manual     Online   Available   Operative    26       shared
    0,0,3   Manual     Online   Available   Operative    26       shared
    0,0,4   Manual     Online   Available   Operative    26       shared
    0,0,5   Manual     Online   Available   Operative    26       shared
    0,0,6   Automatic  Online   Available   Operative    26       shared
    0,0,7   Manual     Online   Available   Operative    26       shared
    0,0,8   Manual     Online   Available   Operative    26       shared
    0,0,9   Manual     Online   Available   Operative    26       shared
    0,0,10  Manual     Online   Available   Operative    26       shared
    --------------------------------------------------------------------------
    
  • 如果传递了带 -p 选项的参数 all,则对每个已配置的物理 ACS 重复该显示。

    all 参数是批处理模式中请求的默认显示。不带参数的 -p 选项与请求 all 具有同等作用。

display mapping [ lib_id | all ]

生成每个磁带库 ID(或所有磁带库)的启动器-目标映射的列表。

display volume [ vol_id ] | vol-range ] [ -p [ acs_id | all ] [ -l [ lib_id | all ] [ -u acs_id ]

生成指定卷或卷集的摘要信息:

----------------------Example -----------------------------
$ lib_cmd display volume ST0212
   Volume       media     current      physical     logical
     ID         type      status       location     address
   ST0212       STK1R     Home        0,0,2,6,0     1001:100
-------------------------------------------------------------
  • 如果挂载了卷,逻辑地址和物理位置将反映挂载了该卷的磁带机的地址。否则,将列出卷的逻辑和物理起始地址。只有在将卷分配到逻辑磁带库时才会填充逻辑地址。

  • 卷范围可由一个较低的 ACSII 值字符串和一个较高的 ASCII 值字符串指定,以短划线分隔。此时将显示指定范围内的每个卷的状态摘要。

  • 如果提交了不带任何选项的 display volume all,此时将显示每个物理 ACS 中所含的所有卷。

  • 如果传递了带 -p 选项的物理 ACS ID,则列表将限制为位于该指定的物理 ACS 中的卷。如果提交了带
    -pall,则显示所有物理 ACS 中所含的卷。

  • 如果传递了带 -l 选项的逻辑磁带库的数字 ID (lib_id),则仅显示与该特定逻辑磁带库关联的一组卷。如果传递了带 -l 选项的字 all,实用程序将显示与每个配置的逻辑磁带库关联的所有卷。

  • -u 选项生成的显示限制为指定的物理 ACS 中所含的未分配的卷。

eject cap <cap_id> [-verbose] volume <vol_id...vol_id> | file <path_to_volume_list>

lib_cmd eject 支持弹出操作,包括指定长卷(超过 42 个)列表的功能。可根据用户输入来输入卷,也可以通过指定指向包含卷列表的文本文件的路径进行输入。可在一行中输入多个卷,大写或小写都可以。

  • <cap_id>

    • 它必须是磁带库配置中某个具体存在的 CAP。

    • 不支持通配符。

    • 可使用 CAP 列表。

  • [-verbose| -v]

    • verbose 选项指定显示所有卷。

    • 默认选项不是 verbose,最多显示 10 个卷以及一个计数。

  • <vol_id>

    • 每行可指定一个或多个卷标识符。

    • 在交互模式下运行时,按 <Return> 可结束列表。

  • <path_to_volume_list>

    • 指定为文本文件的相对路径或完整路径。

    • 每行可指定多个卷标识符。

    • 忽略所有注释行(以 "#" 开头)或空行。

对可在任一形式中指定的卷的数量没有已知限制。提供了所有卷后,ACSLS 将执行一次弹出操作,并根据需要继续填充指定的 CAP,直到弹出了所有可能的卷为止。

输出显示包括卷计数报告(指定的卷数,已弹出和/或未弹出的卷数)。verbose 选项生成的输出将显示所有卷(默认情况下,为每个列表生成 10 个卷预览)。对于未弹出的任何卷,将显示一行,指示卷标识符并显示原因。

vary drive lib_id drive_id [online|offline|diagnostic]

将逻辑磁带机的所需状态更改为指定的(online、offline、diagnostic)状态。

vary library lib_id [online|offline|diagnostic]

将逻辑磁带库的所需状态更改为指定的(online、offline、diagnostic)状态。

在批处理模式下使用 lib_cmd

在批处理模式下使用 lib_cmd 可以执行更多复杂的管理任务。例如,在批处理模式下,通常可以更有效地完成分配或取消分配多个卷或多个磁带机的操作。

在此示例中,我们将 SL8500 模块的滑轨 2 上 9840 个磁带机全部分配到逻辑磁带库 1002。

  1. 使用 lib_cmd 可列出 acs-0 中所有未分配的磁带机,使用 grep 只能过滤位于滑轨 2(acs-0,lsm-1)上的 9840 个磁带机。

    $ lib_cmd display drive -u 0  |  grep 9840 | grep 0,1,.,.
    

    滑轨 2 上所有未分配的磁带机将列在一个五字段的显示屏中:

      Physical Logical   Drive  Drive   Drive      Mounted
      Location Address   Type   State   Status     Volume
      0,1,1,0            9840   Online  available
      0,1,1,1            9840   Online  available
      0,1,1,2            9840   Online  available
      0,1,1,3            9840   Online  available
      0,1,1,4            9840   Online  available
    

    对我们来说,只需要显示屏中的磁带机 ID,因此我们使用 awk 仅输出第一个字段。

      $ lib_cmd display drive -u 0 | grep 9840|grep 0,1,.,.|awk ’{print $1}’
      0,1,1,0
      0,1,1,1
      0,1,1,2
      0,1,1,3
      0,1,1,4
    
  2. 在同一个 awk 输出语句中,我们可以添加文本以构造所需的命令,以便将磁带机分配到逻辑磁带库 1002。

    $ lib_cmd display drive -u 0 | grep 9840|grep 0,1,.,.|awk ’{print ”assign drive ”$1”1002}’
    assign drive 0,1,1,0 1002
    assign drive 0,1,1,1 1002
    assign drive 0,1,1,2 1002
    assign drive 0,1,1,3 1002
    assign drive 0,1,1,4 1002
    
  3. 对命令文本感到满意后,现在可以将输出定向文本文件:

    $ lib_cmd display drive -u 0 | grep 9840 | grep 0,1,.,. | awk '{print "assign drive "$1" 1002"}'  > /tmp/assignDr
    
  4. 最后,可以编辑对命令文件进行的任何更改,然后使用 lib_cmd 执行该文件:

    $ lib_cmd -f ./tmp./assignDr
    --ACSLS 8.2.0--
    Copyright (c) 2012 Oracle and/or its affiliates. All rights reserved.
    Drive 0,1,1,0 now assigned to logLib02 at 1002:500
    Drive 0,1,1,1 now assigned to logLib02 at 1002:501
    Drive 0,1,1,2 now assigned to logLib02 at 1002:502
    Drive 0,1,1,3 now assigned to logLib02 at 1002:503
    Drive 0,1,1,4 now assigned to logLib02 at 1002:504 
    
  5. 使用 lib_cmd display 命令,我们将确认分配:

    $ lib_cmd  display  drives  -l  1002
    ACS 1002 LOG lIB02:20 Drive Slots 5 Drives
    Physical   Logical      Drive  Drive   Drive       Mounted
    Location   Address      Type   State   Status      Volume
    0,1,1,0    1002:500     9840   Online  available
    0,1,1,1    1002:501     9840   Online  available
    0,1,1,2    1002:502     9840   Online  available
    0,1,1,3    1002:503     9840   Online  available
    0,1,1,4    1002:504     9840   Online  available