Small Computer System Interface ( SCSI , / ˈskʌzi / SKUZ -ee ) [ 2] es un conjunto de estándares para conectar y transferir físicamente datos entre computadoras y dispositivos periféricos , mejor conocido por su uso con dispositivos de almacenamiento como unidades de disco duro . SCSI se introdujo en la década de 1980 y ha tenido un uso generalizado en servidores y estaciones de trabajo de alta gama, con nuevos estándares SCSI publicados tan recientemente como SAS-4 en 2017.
Los estándares SCSI definen comandos , protocolos, interfaces eléctricas, ópticas y lógicas . El estándar SCSI define conjuntos de comandos para tipos específicos de dispositivos periféricos ; la presencia de "desconocido" como uno de estos tipos significa que, en teoría, se puede utilizar como interfaz para casi cualquier dispositivo, pero el estándar es muy pragmático y está dirigido a requisitos comerciales. El SCSI paralelo inicial se utilizaba más comúnmente para unidades de disco duro y unidades de cinta , pero puede conectar una amplia gama de otros dispositivos, incluidos escáneres y unidades de CD , aunque no todos los controladores pueden manejar todos los dispositivos.
El estándar SCSI ancestral, X3.131-1986, generalmente conocido como SCSI-1, fue publicado por el comité técnico X3T9 del Instituto Nacional Estadounidense de Estándares (ANSI) en 1986. SCSI-2 se publicó en agosto de 1990 como X3.T9.2/86-109, con revisiones posteriores en 1994 y la posterior adopción de una multitud de interfaces. Los refinamientos posteriores han dado como resultado mejoras en el rendimiento y soporte para una capacidad de almacenamiento de datos cada vez mayor. [3]
SCSI se deriva de Shugart Associates System Interface (SASI), [4] desarrollado a principios de 1979 [5] y divulgado públicamente en 1981. [1] Larry Boucher es considerado el "padre" de SASI y, en última instancia, de SCSI debido a su trabajo pionero primero en Shugart Associates y luego en Adaptec , que fundó en 1981. [6]
Un controlador SASI proporcionaba un puente entre la interfaz de bajo nivel de una unidad de disco duro y un ordenador anfitrión, que necesitaba leer bloques de datos. Las placas controladoras SASI eran normalmente del tamaño de una unidad de disco duro y normalmente se montaban físicamente en el chasis de la unidad. SASI, que se utilizaba en minicomputadoras y en los primeros microordenadores, definía la interfaz como el uso de un conector plano de 50 pines que se adoptó como conector SCSI-1. SASI es un subconjunto totalmente compatible de SCSI-1, de modo que muchos, si no todos, de los controladores SASI existentes en ese momento eran compatibles con SCSI-1. [7]
Alrededor de 1980, NCR Corporation había estado desarrollando un estándar de interfaz competidor con el nombre de BYSE. En el verano de 1981, NCR abandonó sus esfuerzos internos a favor de seguir con SASI y mejorar su diseño para sus propios sistemas informáticos. Sin embargo, temiendo que su extensión del estándar SASI indujera confusión en el mercado, NCR canceló brevemente su contrato con Shugart. Las mejoras propuestas por NCR al diseño de SCSI despertaron el interés de Optimem, una subsidiaria de Shugart, que solicitó que NCR y Shugart colaboraran en un estándar unificado. En octubre de 1981, las dos empresas acordaron desarrollar SASI en conjunto y presentar su estándar conjuntamente con ANSI. [8] [9]
Hasta al menos febrero de 1982, ANSI desarrolló la especificación como "SASI" y "Shugart Associates System Interface". [10] Sin embargo, el comité que documentó el estándar no permitió que se le pusiera el nombre de una empresa. Se dedicó casi un día entero a acordar el nombre del estándar "Small Computer System Interface", que Boucher pretendía que se pronunciara "sexy", pero Dal Allan de ENDL [11] pronunció el nuevo acrónimo como "scuzzy" y así se mantuvo. [12]
La planta de NCR en Wichita, Kansas, desarrolló el primer chip controlador SCSI de la industria, el NCR 5385, lanzado en 1983. Según sus desarrolladores, el chip funcionó la primera vez que fue probado. [13] [14] Varias empresas, como Adaptec y Optimem, fueron las primeras en apoyar el SCSI. [10] A fines de 1990, al menos 45 fabricantes ofrecían 251 modelos de adaptadores host SCSI paralelos . [15] Hoy, dichos adaptadores host han sido reemplazados en gran medida por los adaptadores host SCSI seriales (SAS), más rápidos. [16]
La referencia "pequeña" en "interfaz de sistema informático pequeño" es histórica; desde mediados de la década de 1990, SCSI ha estado disponible incluso en los sistemas informáticos más grandes.
Desde su estandarización en 1986, SCSI se ha utilizado comúnmente en las líneas de computadoras Amiga , Atari , Apple Macintosh y Sun Microsystems y en los sistemas de servidores PC. Apple comenzó a utilizar el ATA paralelo (PATA, también conocido como IDE ) menos costoso para sus máquinas de gama baja con el Macintosh Quadra 630 en 1994, y lo agregó a sus computadoras de escritorio de gama alta comenzando con el Power Macintosh G3 en 1997. Apple abandonó por completo el SCSI integrado en favor de IDE y FireWire con el Power Mac G3 (azul y blanco) en 1999, mientras que todavía ofrecía un adaptador de host PCI SCSI como opción en los modelos Power Macintosh G4 (gráficos AGP). [17] Sun cambió su gama de gama baja a Parallel ATA (PATA) con la introducción de sus estaciones de trabajo de gama baja Ultra 5 y 10 que usaban el controlador IDE CMD640 y continuó esta tendencia con los sistemas de nivel de entrada Blade 100 y 150 posteriores y no cambió a la interfaz SATA contemporánea incluso con la introducción del Blade 1500 en 2003, mientras que el Blade 2500 de gama alta lanzado al mismo tiempo usaba Ultra320 Parallel SCSI-3. Sun se pasó a las interfaces SATA y SAS con sus últimas estaciones de trabajo basadas en UltraSPARC-III en 2006 con el Ultra 25 de nivel de entrada y el Ultra 45 de gama media. Commodore incluyó SCSI en los sistemas Amiga 3000/3000T y fue un complemento de los modelos Amiga 500/2000 anteriores. A partir de los sistemas Amiga 600/1200/4000, Commodore cambió a la interfaz IDE. Atari incluyó el sistema SCSI como estándar en sus modelos de ordenador Atari MEGA STE , Atari TT y Atari Falcon . El sistema SCSI nunca ha sido popular en el mundo de los IBM PC de bajo precio, debido al menor coste y al rendimiento adecuado del estándar de disco duro ATA. Sin embargo, las unidades SCSI e incluso los RAID SCSI se hicieron comunes en las estaciones de trabajo de PC para la producción de vídeo o audio.
Las versiones físicas recientes de SCSI (SAS ( Serial Attached SCSI ), FCP (SCSI over Fibre Channel Protocol ) y UAS ( USB Attached SCSI )) rompen con el bus SCSI paralelo tradicional y realizan transferencias de datos a través de comunicaciones en serie utilizando enlaces punto a punto . Aunque gran parte de la documentación de SCSI habla de la interfaz paralela, todos los esfuerzos de desarrollo modernos utilizan interfaces en serie. Las interfaces en serie tienen una serie de ventajas sobre la SCSI paralela, incluidas velocidades de datos más altas, cableado simplificado, mayor alcance, aislamiento de fallas mejorado y capacidad de dúplex completo . La razón principal para el cambio a las interfaces en serie es el problema de desfase de reloj de las interfaces paralelas de alta velocidad, que hace que las variantes más rápidas de SCSI paralela sean susceptibles a problemas causados por el cableado y la terminación. [18]
El iSCSI no físico conserva el paradigma SCSI básico , especialmente el conjunto de comandos, casi sin cambios, mediante la incorporación de SCSI-3 sobre TCP/IP . Por lo tanto, iSCSI utiliza conexiones lógicas en lugar de enlaces físicos y puede ejecutarse sobre cualquier red que admita IP. Los enlaces físicos reales se realizan en capas de red inferiores , independientemente de iSCSI. Predominantemente, se utiliza Ethernet , que también es de naturaleza serial.
SCSI es popular en estaciones de trabajo, servidores y dispositivos de almacenamiento de alto rendimiento. Casi todos los subsistemas RAID en servidores han utilizado algún tipo de unidades de disco duro SCSI durante décadas (inicialmente SCSI paralelo, Fibre Channel provisionalmente, recientemente SAS), aunque varios fabricantes ofrecen subsistemas RAID basados en SATA como una opción más económica. Además, SAS ofrece compatibilidad con dispositivos SATA, lo que crea una gama mucho más amplia de opciones para subsistemas RAID junto con la existencia de unidades SAS nearline (NL-SAS). En lugar de SCSI, las computadoras de escritorio y portátiles modernas generalmente usan interfaces SATA para unidades de disco duro internas, y NVMe sobre PCIe está ganando popularidad ya que SATA puede generar cuellos de botella en las unidades de estado sólido modernas .
SCSI está disponible en una variedad de interfaces. La primera fue SCSI paralela (también llamada Interfaz Paralela SCSI o SPI), que utiliza un diseño de bus paralelo . Desde 2005, SPI fue reemplazada gradualmente por Serial Attached SCSI (SAS), que utiliza un diseño serial pero conserva otros aspectos de la tecnología. Muchas otras interfaces que no dependen de estándares SCSI completos aún implementan el protocolo de comandos SCSI; otras abandonan por completo la implementación física, pero conservan el modelo arquitectónico SCSI . iSCSI , por ejemplo, utiliza TCP/IP como mecanismo de transporte, que se transporta con mayor frecuencia a través de Gigabit Ethernet o enlaces de red más rápidos .
Las interfaces SCSI se han incluido a menudo en ordenadores de varios fabricantes para su uso en sistemas operativos Microsoft Windows , Mac OS clásico , Unix , Amiga y Linux , ya sea implementadas en la placa base o mediante adaptadores enchufables. Con la llegada de las unidades SAS y SATA , se dejó de incluir SCSI en paralelo en las placas base. [19]
Inicialmente, la interfaz paralela SCSI (SPI) era la única interfaz que utilizaba el protocolo SCSI. Su estandarización comenzó como un bus de 8 bits de un solo extremo en 1986, que transfería hasta 5 MB/s, y evolucionó hacia un bus diferencial de bajo voltaje de 16 bits capaz de transferir hasta 320 MB/s. El último estándar SPI-5 de 2003 también definió una velocidad de 640 MB/s que no se logró.
Las especificaciones SCSI paralelas incluyen varios modos de transferencia sincrónicos para el cable paralelo y un modo asincrónico. El modo asincrónico es un protocolo clásico de solicitud/confirmación que permite que los sistemas con un bus lento o sistemas simples también utilicen dispositivos SCSI. Los modos sincrónicos más rápidos se utilizan con más frecuencia.
Los cables SCSI paralelos internos suelen ser cintas , con dos o más conectores de 50, 68 u 80 pines adjuntos. Los cables externos suelen estar blindados (pero pueden no estarlo), con conectores de 50 o 68 pines en cada extremo, según el ancho de bus SCSI específico compatible. El conector único de 80 pines (SCA) se utiliza normalmente para dispositivos conectables en caliente .
El canal de fibra se puede utilizar para transportar unidades de información SCSI, tal como se define en el protocolo de canal de fibra para SCSI (FCP). Estas conexiones se pueden conectar en caliente y normalmente se implementan con fibra óptica.
El sistema SCSI conectado en serie (SAS) utiliza un cable de alimentación y datos Serial ATA modificado .
iSCSI (Internet Small Computer System Interface) normalmente utiliza conectores y cables Ethernet como transporte físico, pero puede funcionar sobre cualquier transporte físico capaz de transportar IP .
El protocolo SCSI RDMA (SRP) es un protocolo que especifica cómo transportar comandos SCSI a través de una conexión RDMA confiable. Este protocolo puede ejecutarse a través de cualquier transporte físico compatible con RDMA, por ejemplo, InfiniBand o Ethernet cuando se utiliza RoCE o iWARP .
USB Attached SCSI permite que los dispositivos SCSI utilicen el Bus Serie Universal .
El protocolo de transporte de interfaz de automatización/unidad (ADT) se utiliza para conectar dispositivos de medios extraíbles, como unidades de cinta, con los controladores de las bibliotecas (dispositivos de automatización) en las que están instalados. El estándar ADI especifica el uso de RS-422 para las conexiones físicas. El estándar ADT-2 de segunda generación define iADT, el uso del protocolo ADT sobre conexiones IP (protocolo de Internet), como por ejemplo sobre Ethernet . Los estándares de comandos de interfaz de automatización/unidad (ADC, ADC-2 y ADC-3) definen los comandos SCSI para estas instalaciones.
Además de muchas implementaciones de hardware diferentes, los estándares SCSI también incluyen un amplio conjunto de definiciones de comandos. La arquitectura de comandos SCSI se definió originalmente para buses SCSI paralelos , pero se ha trasladado con cambios mínimos para su uso con iSCSI y SCSI serial. Otras tecnologías que utilizan el conjunto de comandos SCSI incluyen la interfaz de paquetes ATA , la clase de almacenamiento masivo USB y FireWire SBP-2 .
En la terminología SCSI, la comunicación se produce entre un iniciador y un destino . El iniciador envía un comando al destino, que luego responde. Los comandos SCSI se envían en un bloque descriptor de comandos ( CDB ). El CDB consta de un código de operación de un byte seguido de cinco o más bytes que contienen parámetros específicos del comando.
Al final de la secuencia de comandos, el destino devuelve un byte de código de estado , como 00h para éxito, 02h para un error (llamado condición de verificación ) o 08h para ocupado. Cuando el destino devuelve una condición de verificación en respuesta a un comando, el iniciador generalmente emite un comando de detección de solicitud SCSI para obtener un calificador de código de clave ( KCQ ) del destino. La secuencia de condición de verificación y detección de solicitud implica un protocolo SCSI especial llamado condición de lealtad contingente .
Existen cuatro categorías de comandos SCSI: N (sin datos), W (escritura de datos desde el iniciador al destino), R (lectura de datos) y B (bidireccional). En total, existen alrededor de 60 comandos SCSI diferentes , y los más utilizados son:
A cada dispositivo del bus SCSI se le asigna un número de identificación o ID SCSI único. Los dispositivos pueden incluir varias unidades lógicas, que se direccionan mediante un número de unidad lógica (LUN). Los dispositivos simples tienen solo un LUN, mientras que los dispositivos más complejos pueden tener varios LUN.
Un dispositivo de almacenamiento de "acceso directo" (es decir, de tipo disco) consta de una serie de bloques lógicos, direccionados por una Dirección de Bloque Lógico ( LBA ). Una LBA típica equivale a 512 bytes de almacenamiento. El uso de las LBA ha evolucionado con el tiempo, por lo que se proporcionan cuatro variantes de comandos diferentes para leer y escribir datos. Los comandos Read(6) y Write(6) contienen una dirección LBA de 21 bits. Los comandos Read(10), Read(12), Read Long, Write(10), Write(12) y Write Long contienen una dirección LBA de 32 bits más varias otras opciones de parámetros.
La capacidad de un dispositivo de "acceso secuencial" (es decir, de tipo cinta) no se especifica porque depende, entre otras cosas, de la longitud de la cinta, que no se identifica de forma legible por máquina. Las operaciones de lectura y escritura en un dispositivo de acceso secuencial comienzan en la posición actual de la cinta, no en un LBA específico. El tamaño de bloque en los dispositivos de acceso secuencial puede ser fijo o variable, según el dispositivo específico. Los dispositivos de cinta como la cinta de 9 pistas de media pulgada , DDS (cintas de 4 mm físicamente similares a DAT ), Exabyte , etc., admiten tamaños de bloque variables.
En un bus SCSI paralelo, un dispositivo (por ejemplo, un adaptador host, una unidad de disco) se identifica mediante un "SCSI ID", que es un número en el rango de 0 a 7 en un bus estrecho y en el rango de 0 a 15 en un bus ancho. En los modelos anteriores, un puente físico o un interruptor controlan el SCSI ID del iniciador ( adaptador host ). En los adaptadores host modernos (desde aproximadamente 1997), realizar operaciones de E/S al adaptador establece el SCSI ID; por ejemplo, el adaptador a menudo contiene un programa de ROM opcional (SCSI BIOS) que se ejecuta cuando se inicia la computadora y ese programa tiene menús que permiten al operador elegir el SCSI ID del adaptador host. Alternativamente, el adaptador host puede venir con software que debe instalarse en la computadora host para configurar el SCSI ID. El SCSI ID tradicional para un adaptador host es 7, ya que ese ID tiene la máxima prioridad durante el arbitraje de bus (incluso en un bus de 16 bits).
El ID SCSI de un dispositivo en un gabinete de unidad que tiene una placa posterior se establece mediante puentes o mediante la ranura en el gabinete en el que está instalado el dispositivo, según el modelo del gabinete. En este último caso, cada ranura en la placa posterior del gabinete envía señales de control a la unidad para seleccionar un ID SCSI único. Un gabinete SCSI sin placa posterior a menudo tiene un interruptor para cada unidad para elegir el ID SCSI de la unidad. El gabinete está empaquetado con conectores que deben enchufarse a la unidad donde normalmente se ubican los puentes; el interruptor emula los puentes necesarios. Si bien no existe un estándar que haga que esto funcione, los diseñadores de unidades generalmente configuran sus encabezados de puente en un formato consistente que coincide con la forma en que se implementan estos interruptores.
La comunidad de TI recomienda que se configure el disco duro de arranque (o el primero) con el ID SCSI 0. El ID SCSI 2 suele reservarse para la unidad de disquete, mientras que el ID SCSI 3 suele reservarse para la unidad de CD-ROM. [20]
Tenga en cuenta que un dispositivo de destino SCSI (que puede denominarse "unidad física") a veces se divide en "unidades lógicas" más pequeñas. Por ejemplo, un subsistema de disco de alta gama puede ser un único dispositivo SCSI pero contener docenas de unidades de disco individuales, cada una de las cuales es una unidad lógica. Además, una matriz RAID puede ser un único dispositivo SCSI, pero puede contener muchas unidades lógicas, cada una de las cuales es un disco "virtual" (un conjunto de bandas o un conjunto de espejos construido a partir de partes de unidades de disco reales). El ID SCSI, WWN, etc. en este caso identifica todo el subsistema, y un segundo número, el número de unidad lógica (LUN), identifica un dispositivo de disco (real o virtual) dentro del subsistema.
Es bastante común, aunque incorrecto, referirse a la unidad lógica en sí como un "LUN". [21] A veces, de manera redundante, el LUN real puede llamarse "número de LUN" o "identificación de LUN". [22]
En los protocolos de transporte SCSI modernos, existe un proceso automatizado para el "descubrimiento" de los identificadores. El iniciador SSA (normalmente el ordenador host a través del "adaptador host") "recorre el bucle" para determinar qué dispositivos están conectados y luego asigna a cada uno un valor de "conteo de saltos" de 7 bits. Los iniciadores de bucle arbitrado de canal de fibra (FC-AL) utilizan el LIP (protocolo de inicialización de bucle) para interrogar a cada puerto de dispositivo para obtener su WWN ( nombre mundial ). Para iSCSI, debido al alcance ilimitado de la red (IP), el proceso es bastante complicado. Estos procesos de descubrimiento ocurren en el momento de encendido/inicialización y también si la topología del bus cambia más tarde, por ejemplo, si se agrega un dispositivo adicional.
SCSI tiene el mecanismo de identificación CTL (Canal, Destino o Número de Unidad Física, Número de Unidad Lógica) por adaptador de bus host , o el mecanismo de identificación HCTL (HBA, Canal, PUN, LUN), un adaptador host puede tener más de un canal. [23]
Si bien todos los controladores SCSI pueden trabajar con dispositivos de almacenamiento de lectura/escritura, es decir, discos y cintas, algunos no funcionarán con otros tipos de dispositivos; es probable que los controladores más antiguos estén más limitados, [24] a veces por su software de controlador, y se agregaron más tipos de dispositivos a medida que SCSI evolucionó. Incluso los CD-ROM no son manejados por todos los controladores. El tipo de dispositivo es un campo de 5 bits informado por un comando de consulta SCSI; los tipos de dispositivos periféricos SCSI definidos incluyen, además de muchas variedades de dispositivos de almacenamiento, impresoras, escáneres, dispositivos de comunicaciones y un tipo de "procesador" general para dispositivos que no se enumeran de otra manera.
En servidores SCSI más grandes, los dispositivos de unidad de disco se alojan en un gabinete inteligente que admite SCSI Enclosure Services (SES) . El iniciador puede comunicarse con el gabinete mediante un conjunto especializado de comandos SCSI para acceder a la energía, la refrigeración y otras características no relacionadas con los datos.
En 1979, la empresa desarrolló el primer controlador que utilizaba la interfaz SASI... en colaboración con Shugart Associates.
NCR Corp., División de Microelectrónica ha anunciado el lanzamiento de su controlador de un solo chip NCR 5385. NCR es el primero en utilizar el protocolo de Interfaz de Sistema de Computadora Pequeña (SCSI).
El comando lun se utiliza para crear y administrar luns[...]
Si no se especifica un ID de LUN, se selecciona automáticamente el número más pequeño [...].