En el almacenamiento informático SCSI , las computadoras y los dispositivos de almacenamiento utilizan un modelo de comunicación cliente-servidor. La computadora es un cliente que solicita al dispositivo de almacenamiento que realice un servicio, por ejemplo, leer o escribir datos. La arquitectura de comandos SCSI se definió originalmente para buses SCSI paralelos, pero se ha trasladado con cambios mínimos para su uso con Fibre Channel , iSCSI , Serial Attached SCSI y otras capas de transporte.
En el protocolo SCSI, el iniciador envía una unidad de información de comando SCSI al dispositivo de destino . A continuación, se pueden transferir unidades de información de datos entre la computadora y el dispositivo. Por último, el dispositivo envía una unidad de información de respuesta a la computadora.
Los comandos SCSI se envían en un bloque de descripción de comandos (CDB), que consta de un código de operación de un byte (opcode) seguido de cinco o más bytes que contienen parámetros específicos del comando. Al recibir y procesar el CDB, el dispositivo devolverá un byte de código de estado y otra información.
El resto de este artículo contiene una lista de comandos SCSI, que se pueden ordenar por código de operación o por orden alfabético de descripción. En los estándares SCSI publicados, los comandos se designan como "obligatorios", "opcionales" o "exclusivos del proveedor". Solo los comandos obligatorios son necesarios para todos los dispositivos. Hay enlaces a descripciones detalladas de los comandos SCSI más comunes. Algunos códigos de operación producen efectos diferentes, aunque generalmente comparables, en diferentes tipos de dispositivos; por ejemplo, el código de operación 0x01 recalibra una unidad de disco buscando el sector físico cero, pero rebobina el medio en una unidad de cinta.
Originalmente, los 3 bits más significativos de un código de operación SCSI especificaban la longitud de la CDB. Sin embargo, cuando se crearon CDB de longitud variable, esta correspondencia cambió y se debe examinar todo el código de operación para determinar la longitud de la CDB. Las longitudes son las siguientes:
Cuando un comando se define en múltiples tamaños de CDB, la longitud de la CDB se proporciona entre paréntesis después del nombre del comando, por ejemplo, READ(6) y READ(10).