En este capítulo, se describe la interfaz de línea de comandos (CLI) opcional, lib_cmd
. Esta herramienta está destinada principalmente a usarse para administrar bibliotecas lógicas en ACSLS, pero algunos comandos pueden ser útiles como alternativa a la GUI de ACSLS o a cmd_proc
en determinados contextos específicos. La CLI lib_cmd
admite operaciones de expulsión, incluida la posibilidad de especificar listas de volúmenes extensas (más de 42).
ACSLS incorporó el concepto de las bibliotecas lógicas en la versión 8.0. Para acceder a la operación de cliente de biblioteca lógica, se usan comandos SCSI mediante la emulación del cambiador de medios de SCSI (SMCE) mediante una conexión de canal de fibra. Los clientes pueden ejecutar operaciones mount
(montar), dismount
(desmontar), enter
(introducir) y eject
(expulsar) en las cintas y administrar su propio inventario de cintas mediante la interfaz de SMCE, como si la biblioteca estuviera directamente conectada a la aplicación de cliente.
Hasta ACSLS 8.2, las funciones de configuración administrativa de la biblioteca lógica se establecían por medio de la Interfaz gráfica del usuario de ACSLS (también incorporada en ACSLS 8.0). Este tipo de tareas incluye crear una biblioteca de cintas lógica con la cantidad deseada de celdas de almacenamiento y ranuras de unidad de cinta, establecer una relación iniciador-destino de cliente, asignar unidades físicas a la biblioteca y asignar volúmenes de cinta.
Estas tareas administrativas también pueden llevarse a cabo mediante una interfaz de línea de comandos de UNIX (CLI). La CLI extiende la capacidad de uso de las bibliotecas lógicas, lo cual proporciona una ruta más rápida a las funciones administrativas críticas y proporciona los medios para administrar bibliotecas lógicas usando secuencias de comandos del shell de UNIX para procesamiento en lotes.
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 ]
La utilidad de línea de comandos lib_cmd
es una alternativa a la GUI de ACSLS para gestionar y supervisar recursos en bibliotecas lógicas de ACSLS. Con lib_cmd, el administrador de ACSLS puede crear, editar o suprimir una biblioteca lógica; asignar volúmenes o unidades de cinta a una biblioteca lógica o anular dicha asignación; refrescar iniciadores o destinos; crear asignaciones de iniciador-destino para la comunicación de cliente; mostrar el estado de bibliotecas lógicas; o mostrar el estado de volúmenes o unidades dentro de las bibliotecas físicas o lógicas configuradas.
Además de la administración de bibliotecas lógicas, lib_cmd ofrece un pequeño juego de comandos de biblioteca generales que se pueden usar en lugar de cmd_proc para mostrar el contenido de la biblioteca o para expulsar grandes cantidades de volúmenes a un único CAP (como el AEM de SL3000).
Cualquier usuario del grupo de ACSLS puede realizar estas operaciones, incluso root
.
La utilidad lib_cmd
puede usarse en modo interactivo o en modo de lotes. El modo interactivo se invoca mediante el comando solamente, sin argumentos.
lib_cmd
El modo interactivo admite las funciones "help", que enumeran todos los posibles subcomandos y argumentos. Dentro del contexto de cada subcomando, se puede mostrar una lista de posibles argumentos y opciones a petición. Cuando tenga dudas sobre las posibles cadenas de entrada válidas, puede pulsar <Enter
> para obtener una lista de todos los posibles argumentos para el contexto inmediato.
No se ofrece interactividad en el modo de lotes a fin de admitir mejor el uso de esta utilidad con secuencias de comandos generadas por el usuario. En el modo de lotes, todas las opciones y los argumentos deseados deben enviarse con el comando. De lo contrario, se muestra un mensaje de error.
-f
(especificación de entrada de archivo de comandos)
Cuando se solicita la opción -f
, la utilidad ejecuta el juego de comandos que encuentra en el archivo de entrada especificado. El archivo de entrada debe contener solo solicitudes completamente formadas.
En esta sección, se describen los subcomandos.
assign drive drive_id lib_id
Asigna la unidad especificada a la biblioteca especificada. El drive_id
se expresa mediante la notación estándar para unidades de una biblioteca física (acs,lsm,panel,drive
). El argumento lib_id
es el ID asignado de la biblioteca lógica. Los ID de biblioteca lógica comienzan a 1001 y aumentan incrementalmente a medida que se crean bibliotecas.
unassign drive lib_id logical_drive_id
Elimina la unidad lógica especificada de la configuración de biblioteca lógica. La unidad se especifica mediante su dirección lógica (que comienza con la dirección 500). El ID de biblioteca lógica es un número de cuatro dígitos (a partir de 1001).
assign volume vol_id | vol-range lib_id
Asigna un volumen para uso exclusivo dentro de una biblioteca lógica. El volumen se expresa mediante el formato de etiqueta de seis caracteres o de códigos de barras estándar. La biblioteca se expresa mediante el ID numérico de biblioteca lógica. El volumen debe poder asignarse. Es decir, no debe estar asignado, tener propietario ni estar montado, reservado, en tránsito ni en uso de ninguna otra forma.
Se especifica un rango mediante una cadena de valor ACSII bajo y una cadena de valor ASCII alto separadas por un guion. Cuando se solicita un rango de volumen, lib_cmd
busca volúmenes en el ACS de respaldo dentro del rango especificado. Cualquier volumen del rango que pueda asignarse se asigna a la biblioteca lógica especificada.
unassign volume vol_id | vol-range lib_id
Elimina un volumen del inventario de biblioteca lógica. El volumen debe residir en su celda de origen y no puede reservarse para una operación de movimiento pendiente.
Se especifica un rango mediante una cadena de valor ACSII bajo y una cadena de valor ASCII alto separadas por un guion. Cuando se solicita un rango de volumen, lib_cmd
busca volúmenes en la biblioteca lógica especificada dentro del rango especificado. Se anula la asignación de los volúmenes asignados de la biblioteca que están dentro del rango pero no están en uso.
create library lib_name backing_acs cell_capacity drive_capacity
Crea una nueva biblioteca lógica. Después de create library
, se requieren cuatro argumentos en este orden: nombre de alias de biblioteca (cadena); ID de ACS de respaldo (entero), número de celdas de almacenamiento (entero) y número de ranuras de unidad (entero).
create mapping initiator_id target_id library_id
Establece una relación iniciador-destino (cliente-servidor) para la biblioteca especificada.
edit library lib_id [-n name ] [-c capacity ] [-d drive_slots ] [-f volume_label_format [6|8p|8s|all] [-x imp/exp_cell_count ]
Altera la configuración de la biblioteca lógica existente. La biblioteca específica se expresa mediante el ID numérico de cuatro dígitos. Se puede proporcionar cualquier opción individual, y solo ese campo se modifica por medio del argumento suministrado con la opción. Entre las opciones, se incluyen:
-n
: nombre de alias de biblioteca
-c
: capacidad de celda de almacenamiento lógico
-d
: número de ranuras de unidad lógica
-f
: formato de etiqueta de volumen
-x
: número de celdas de importación/exportación (de CAP) lógicas
El formato de etiqueta de volumen se puede expresar con cualquiera de las siguientes opciones:
6
: etiquetas de volúmenes heredados de seis caracteres
8p
: ocho caracteres con un prefijo de código de tipo de medio
8s
: ocho caracteres con un sufijo de código de tipo de medio
all
: se aceptan todos los formatos de etiqueta
refresh initiator
Recupera todos los iniciadores conocidos actualmente para ACSLS.
refresh target
Recupera todos los destinos conocidos actualmente para ACSLS.
delete initiator initiator_id (y/n)
Elimina el iniciador especificado de la configuración. Se requiere una aceptación (y) para confirmar la supresión especificada.
delete library lib_id (y/n)
Elimina la biblioteca lógica especificada de la configuración de ACSLS. Esto genera una operación delete
en cascada, que disocia las unidades y los volúmenes asignados de la biblioteca. Se debe poner la biblioteca fuera de línea antes de intentar la supresión. La eliminación falla si uno o más de los volúmenes lógicos de la biblioteca están en uso actualmente. Se requiere una aceptación (y) para confirmar la supresión especificada.
delete mapping lib_id (y/n)
Elimina todas las asignaciones iniciador-destino de la biblioteca lógica especificada. La operación desactiva todas las conexiones de clientes actuales. Se requiere una aceptación (y) para confirmar la supresión especificada.
delete target target_id (y/n)
Elimina el destino especificado de la configuración. Se requiere una aceptación (y) para confirmar la supresión especificada.
display drive drive_id [-t drive_type ] [-p acs_id | all ] [-l lib_id | all ] [-u acs_id ]
Genera un resumen de la unidad especificada o de todas las unidades de la biblioteca especificada.
La pantalla incluye la dirección física y lógica de las unidades, el tipo de unidad, el estado de unidad y, si drive_status
indica in_use
, se muestra el VOLSER
del cartucho montado.
------------------------ 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 -------------------------------------------------------------
Si se ejecuta display drive all
sin opciones, la utilidad genera una lista de todos los volúmenes incluidos en cada ACS físico.
Si se transfiere la opción -t
, solo se muestran las unidades del tipo de unidad especificado.
La opción -p
limita la visualización a las unidades del ACS físico especificado.
Si se incluye la opción -l
, se muestran solo las unidades asignadas a la biblioteca lógica especificada. Si se especifica all
después de la opción -l
, se genera una visualización que muestra todas las unidades asociadas con cada una de las bibliotecas lógicas configuradas.
La opción -u
solo muestra las unidades no asignadas del ACS asociado. Esta opción debe estar seguida de un argumento que especifique el ACS deseado.
display initiator
Genera una lista de todos los iniciadores identificados por ACSLS. Cada iniciador aparece con su world wide name y el nombre de alias.
display library [ -l lib_id | all ][ -p acs_id | all ]
Muestra los atributos del ID de biblioteca solicitado. Especifique -l
para bibliotecas lógicas o -p
para ACS físicos.
Si se especifica -l
, la utilidad genera un resumen de la configuración de biblioteca lógica, de la siguiente manera:
ID numérico, nombre, estado (estado deseado)
ID de ACS de respaldo, estado (estado deseado).
Número de celdas de importación/exportación asignadas
Número de ranuras de unidad asignadas
Número de unidades asignadas
Número de celdas de almacenamiento asignadas
Número de celdas libres
Número de volúmenes asignados (cantidad de estos que no están accesibles)
Formato de etiqueta de volumen
-----------------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) --------------------------------------------------------
Los volúmenes que no están accesibles son volúmenes asignados que están fuera del alcance de la biblioteca lógica, por cualquiera de los siguientes motivos:
El volumen se ha expulsado de la biblioteca física.
La aplicación de cliente ha marcado el volumen para eject
.
El volumen asignado reside en la biblioteca física, pero la biblioteca lógica ha superado su capacidad de almacenamiento.
Si se especifica el argumento all
en lugar del lib_id
numérico, la visualización se repite para cada biblioteca lógica configurada. En el modo de lotes, transferir -l
sin argumento tiene el mismo efecto que si se usa el argumento all
.
Cuando se especifica la opción -p
con un ID de ACS específico, la utilidad genera una visualización que resume la configuración de biblioteca para ese 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 --------------------------------------------------------------------------
Si se transfiere el argumento all
con la opción -p
, la visualización se repite para cada ACS físico configurado.
El argumento all
es la visualización por defecto para solicitudes en el modo de lotes. La opción -p
sin argumento tiene el mismo efecto que si se solicita all
.
display mapping [ lib_id | all ]
Genera una lista de asignaciones iniciador-destino para cada ID de biblioteca (o todas las bibliotecas).
display volume [ vol_id ] | vol-range ] [ -p [ acs_id | all ] [ -l [ lib_id | all ] [ -u acs_id ]
Genera información resumida para el juego de volúmenes o el volumen especificado:
----------------------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 -------------------------------------------------------------
Si se monta el volumen, la dirección lógica y la ubicación física reflejan la dirección de la unidad en la que se monta el volumen. De lo contrario, se indican las direcciones lógica y física de origen de los volúmenes. La dirección lógica se completa solamente en casos en los que se ha asignado el volumen a una biblioteca lógica.
Se puede especificar un rango de volúmenes mediante una cadena de valor ACSII bajo y una cadena de valor ACSII alto separadas por un guion. La visualización muestra un resumen de estado para cada volumen del rango especificado.
Si se envía display volume all
sin opciones, la visualización muestra todos los volúmenes incluidos en cada ACS físico.
Si el ID de ACS físico se transfiere con la opción -p
, la lista se limita a los volúmenes que residen en ese ACS físico específico. Si se envía all
con
-p
, se muestran los volúmenes incluidos en todos los ACS físicos.
Si se transfiere el ID numérico de una biblioteca lógica (lib_id
) con la opción -l
, solo se muestra el juego de volúmenes asociados con esa biblioteca lógica específica. Si se transfiere la palabra all
con la opción -l
, la utilidad muestra todos los volúmenes asociados con cada biblioteca lógica configurada.
La opción -u
genera una visualización que se limita a los volúmenes no asignados incluidos en el ACS físico especificado.
eject cap <cap_id> [-verbose] volume <vol_id...vol_id> | file <path_to_volume_list>
lib_cmd
eject
admite operaciones de expulsión, incluida la capacidad de especificar listas extensas de volúmenes (más de 42). Se pueden introducir volúmenes como entrada de usuario o mediante la especificación de la ruta a un archivo de texto que incluya una lista de volúmenes. Se pueden introducir varios volúmenes en una línea, en mayúsculas o minúsculas.
<cap_id>
Debe ser un CAP específico o existente en la configuración de biblioteca.
No se admiten comodines.
Está disponible una lista de CAP.
[-verbose | -v]
La opción verbose
especifica que se muestren todos los volúmenes.
El valor por defecto NO es verbose y muestra hasta 10 volúmenes más un recuento.
<vol_id>
Se pueden especificar uno o más identificadores de volumen por línea.
En modo interactivo, pulse <Return>
para finalizar la lista.
<path_to_volume_list>
Especifique una ruta relativa o completa al archivo de texto.
Se pueden especificar varios identificadores de volumen por línea.
Todas las líneas de comentario (que comienzan con "#") y las líneas en blanco se omiten.
No hay un límite conocido para la cantidad de volúmenes que pueden especificarse en cualquiera de los formatos. ACSLS lleva a cabo una única operación de expulsión una vez que se han proporcionado todos los volúmenes y continúa completando el CAP especificado según sea necesario hasta que se hayan expulsado todos los volúmenes posibles.
La visualización de salida incluye un informe de recuentos de volúmenes (volúmenes especificados, volúmenes expulsados o no expulsados). La opción verbose
genera una salida que muestra todos los volúmenes (por defecto, se genera una vista previa de 10 volúmenes para cada lista). Para los volúmenes no expulsados, se muestra una línea que indica el identificador de volumen y el motivo.
vary drive lib_id drive_id [online|offline|diagnostic]
Cambia el estado deseado de la unidad lógica al estado especificado (en línea, fuera de línea, diagnóstico).
vary library lib_id [online|offline|diagnostic]
Cambia el estado deseado de la biblioteca lógica al estado especificado (en línea, fuera de línea, diagnóstico).
El uso de lib_cmd
en el modo de lotes permite realizar tareas administrativas más complejas. Por ejemplo, las operaciones que asignan o anulan la asignación de varios volúmenes o unidades, con frecuencia, se logran más eficazmente en el modo de lotes.
En este ejemplo, asignaremos todas las unidades 9840 en la guía 2 de un módulo de SL8500 a la biblioteca lógica 1002.
Ejecute lib_cmd
para enumerar todas las unidades no asignadas en acs-0 y ejecute grep
para filtrar solamente las unidades 9840 que residen en la guía 2 (acs-0, lsm-1).
$ lib_cmd display drive -u 0 | grep 9840 | grep 0,1,.,.
Todas las unidades no asignadas de la guía 2 se mostrarán en una visualización de cinco campos:
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
Para los fines de esta descripción, solo se requiere el ID de unidad de esta visualización, de modo que se imprime solamente el primer campo, mediante 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
Con la misma sentencia de impresión awk
, podemos agregar texto a fin de construir los comandos necesarios para asignar las unidades a la biblioteca lógica 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
Una vez que esté satisfecho con el texto del comando, puede dirigir la salida a un archivo de texto:
$ lib_cmd display drive -u 0 | grep 9840 | grep 0,1,.,. | awk '{print "assign drive "$1" 1002"}' > /tmp/assignDr
Por último, puede editar el archivo de comandos para realizar los cambios que desee y luego ejecutar el archivo mediante 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
Utilice el comando de visualización lib_cmd
para confirmar la asignación:
$ 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