En el almacenamiento informático SCSI , las computadoras y los dispositivos de almacenamiento utilizan un modelo de comunicación cliente-servidor. El ordenador es un cliente que solicita al dispositivo de almacenamiento que realice un servicio, por ejemplo, leer o escribir datos. La arquitectura de comando SCSI se definió originalmente para buses SCSI paralelos , pero se ha implementado con cambios mínimos para su uso con Fibre Channel , iSCSI , SCSI conectado en serie 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 . Luego se pueden transferir unidades de información de datos entre la computadora y el dispositivo. Finalmente, el dispositivo envía una unidad de información de respuesta a la computadora.
Los comandos SCSI se envían en un bloque descriptor de comandos (CDB), que consta de un código de operación de un byte (código de operación) 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 en orden alfabético de código de operación o descripción. En los estándares SCSI publicados, los comandos se designan como "obligatorios", "opcionales" o "exclusivos del proveedor". Sólo se requieren los comandos obligatorios de 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 del 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 del CDB. Las longitudes son las siguientes:
Cuando un comando se define en varios tamaños de CDB, la longitud del CDB se proporciona entre paréntesis después del nombre del comando, por ejemplo, READ(6) y READ(10).