本章介绍可选的命令行界面 (command-line interface, CLI) lib_cmd
。此工具主要用于管理 ACSLS 中的逻辑磁带库,但在某些特定上下文中,可使用某些命令替代 ACSLS GUI 或 cmd_proc
。lib_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
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
命令行实用程序是 ACSLS GUI 用于管理和监视 ACSLS 逻辑磁带库中资源的替代方案。通过 lib_cmd,ACSLS 管理员可以创建、编译或删除逻辑磁带库;向逻辑磁带库分配或取消分配卷或磁带机;刷新启动器或目标;为客户机通信创建启动器-目标映射;显示逻辑磁带库的状态;或显示已配置的物理或逻辑磁带库中的卷或磁带机的状态。
除了逻辑磁带库管理外,lib_cmd 还提供一组常规磁带库命令,可用于代替 cmd_proc 来显示磁带库的内容,或将大量卷弹出到单个 CAP(如 SL3000 AEM)。
这些操作可由 ACSLS 组中的任何用户执行,包括 root
用户。
可在交互模式或批处理模式下操作 lib_cmd
。交互模式仅由不带参数的命令调用。
lib_cmd
交互模式支持“帮助”功能,此功能可列出所有可能的子命令和参数。在每个子命令的上下文中,可根据请求显示可能的参数和选项列表。如果不确定哪些是有效的输入字符串,可按 <Enter
> 以获得直接上下文的所有可能的参数列表。
批处理模式中不提供交互性,这是为了更好地支持通过用户生成的脚本来使用此实用程序。在批处理模式中,必须将所有所需的选项和参数与命令一起提交。否则就会返回一条错误消息。
本部分讨论子命令。
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 中的卷。如果提交了带
-p
的 all
,则显示所有物理 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
可以执行更多复杂的管理任务。例如,在批处理模式下,通常可以更有效地完成分配或取消分配多个卷或多个磁带机的操作。
在此示例中,我们将 SL8500 模块的滑轨 2 上 9840 个磁带机全部分配到逻辑磁带库 1002。
使用 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
在同一个 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
对命令文本感到满意后,现在可以将输出定向文本文件:
$ lib_cmd display drive -u 0 | grep 9840 | grep 0,1,.,. | awk '{print "assign drive "$1" 1002"}' > /tmp/assignDr
最后,可以编辑对命令文件进行的任何更改,然后使用 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
使用 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