SCST es una pila de software de destino SCSI con licencia GPL . Los objetivos de diseño de esta pila de software son un alto rendimiento, una alta confiabilidad, una estricta conformidad con los estándares SCSI existentes , ser fácil de extender y fácil de usar. SCST no solo admite múltiples protocolos SCSI ( iSCSI , FC , SRP , ...) sino que también admite múltiples interfaces de almacenamiento local (paso a través de SCSI, E/S de bloque y E/S de archivo) y también controladores de almacenamiento implementados en el espacio de usuario a través del controlador scst_user. [1]
Para alcanzar el máximo rendimiento, SCST se ha implementado como un conjunto de controladores de núcleo. SCST se combina a menudo con RAID , deduplicación de datos y/o software de clúster de alta disponibilidad para aumentar su funcionalidad. La pila de software SCST es el software base de muchos sistemas SAN . [2] Se han establecido varios récords mundiales con sistemas SAN basados en SCST. [3] [4] [5] [6]
SCST compite con LIO Target por el mismo propósito de proporcionar un módulo de destino SCSI genérico dentro del núcleo Linux. [7] Para el propósito más específico de proporcionar un destino iSCSI de Linux , los módulos IET y STGT más antiguos también disfrutan del soporte de la industria. [8]
Entre 2013 y 2017, SCST fue mantenido principalmente por personal de SanDisk , después de que Fusion-io adquiriera la empresa emergente ID7 en 2013, una fuerza impulsora detrás de SCST [9] [10] [11] y después de que SanDisk adquiriera Fusion-io en 2014. [12]
Arquitectura
El SCST consta de tres grupos de módulos:
El núcleo SCST, un motor independiente del protocolo para procesar comandos SCSI.
Los controladores de destino que reciben comandos SCSI de un iniciador SCSI, pasan estos SCSI al núcleo SCST y envían respuestas al iniciador.
Controladores de almacenamiento, también conocidos como controladores de dispositivos que interactúan con el medio de almacenamiento. Las interfaces de almacenamiento local admitidas son SCSI, dispositivo de bloque, archivo y scst_user. scst_user es un protocolo específico de SCST que permite la implementación eficiente de controladores de almacenamiento en el espacio de usuario.
La configuración de todos estos módulos se realiza a través de una interfaz sysfs . Aunque la configuración directa de SCST a través de su interfaz sysfs es conveniente, la herramienta denominada scstadmin permite controlar SCST a través de su interfaz sysfs y también guardar y restaurar la configuración de SCST.
Los siguientes aspectos de diseño ayudan a SCST a alcanzar el alto rendimiento por el que se conoce a este proyecto:
La cantidad de subprocesos por dispositivo de almacenamiento que procesa comandos SCSI es configurable.
Todas las funciones del controlador de destino y del controlador de almacenamiento invocadas por el núcleo SCST son asincrónicas, al menos cuando el núcleo Linux lo permite. Por ejemplo, todavía no es posible realizar E/S asincrónicas o directas desde dentro del núcleo Linux. [13]
Se asocia una máquina de estados finitos a cada comando SCSI, lo que permite que un único subproceso de comandos procese varios comandos SCSI simultáneamente.
Incluso cuando se utilizan varios subprocesos por dispositivo de almacenamiento, todos estos subprocesos comparten el mismo contexto de programador de E/S. Esta compartición mejora significativamente el rendimiento cuando se utiliza, por ejemplo, el programador de E/S CFQ .
Un caché vectorial de dispersión y recolección. Este caché evita tener que asignar memoria a través del núcleo para cada comando SCSI.
Acceso sin bloqueo a ciertas estructuras de datos necesarias para procesar comandos SCSI. Esto también significa que se debe suspender la E/S antes de poder modificar cualquiera de las estructuras de datos a las que se accede sin bloqueo. [14]
Los comandos SCSI pueden ser enviados por un controlador de destino al núcleo SCST desde el contexto de softirq. Esto da como resultado una menor cantidad de cambios de contexto en comparación con tener que enviar comandos SCSI desde el contexto de subproceso. [15]
En 2004 se anunció el proyecto SCST, que proporcionaba compatibilidad con Fibre Channel e iSCSI. El objetivo iSCSI inicial de SCST se basaba en la implementación del objetivo iSCSI UNH-IOL. [17]
En esa época, Ardis Technologies desarrolló un conjunto de software de objetivos iSCSI alternativos. [18]
El software iSCSI Enterprise Target, anunciado en 2005, es una evolución adicional de la pila Ardis. [19] [20]
Más tarde, en 2005, Chelsio anunció un controlador de destino iSCSI SCST para la familia de adaptadores Ethernet Chelsio T2. [21]
En 2006 se agregó un controlador de destino para tarjetas LSI/MPT. [22]
Más tarde en este año se agregó la herramienta scstadmin. Esta herramienta permite guardar y restaurar la configuración SCST desde o hacia un archivo. [23]
En 2007, el parche de destino iSCSI UNH-IOL en el proyecto SCST fue reemplazado por una bifurcación de IET. [24]
En 2008, Mellanox donó un controlador de objetivo SRP . [25] Posteriormente, Bart Van Assche optimizó este controlador. [26]
En 2009, Marvell donó un controlador de destino para sus tarjetas SAS. [27]
También en 2009, Emulex anunció un controlador objetivo para tarjetas adaptadoras Emulex Fibre Channel / FCoE . [28] [29] [30]
El mismo año se agregó una interfaz sysfs a SCST junto a la interfaz procfs ya existente.
En 2010, Cisco donó un controlador de destino FCoE [31] y Bart Van Assche adaptó el controlador de destino SCSI del IBM System p a SCST. [32]
En 2011, se agregó soporte ALUA implícito al núcleo SCST y a la herramienta de configuración scstadmin. [33] Los tres scripts de inicio (scst, iscsi-scst y qla2x00t) se fusionaron en un solo script de inicio, lo que simplificó la instalación y la administración de SCST.
En 2013, se agregó soporte para QLogic InfiniBand HCA en el controlador de destino SRP. [34]
En enero de 2014, Mellanox donó una implementación de controlador de objetivo iSER al proyecto SCST. [35]
En mayo de 2014, QLogic puso a disposición un controlador de destino QLogic de 16 Gbit/s y también anunció que se haría cargo del mantenimiento del controlador de destino QLogic de SCST. [36]
En 2016, se agregó soporte para E/S de archivos directa y con buffer asincrónico y también una infraestructura de medición de latencia más potente.
En 2019, se modificó el núcleo SCST para que la E/S siga funcionando a toda velocidad si se agrega o quita un LUN o un dispositivo de almacenamiento.
^ Van Assche, Bart (19 de agosto de 2015). SCST, un marco de trabajo de destino SCSI (PDF) . LinuxCon North America 2015. Seattle.
^ Bolkhovitin, Vladislav (20 de diciembre de 2012). "Usuarios de SCST".
^ "Nuevo récord mundial de computación en la nube de VMmark establecido con Cisco UCS, VMware y Fusion-io". Fusion-io. 10 de mayo de 2013. Archivado desde el original el 2 de julio de 2014. Consultado el 12 de agosto de 2018 .
^ "HP alcanza dos nuevos puntos de referencia de virtualización n.º 1 en VMmark con ION Data Accelerator". Fusion-io. 12 de septiembre de 2013. Archivado desde el original el 16 de junio de 2014. Consultado el 12 de agosto de 2018 .
^ "HP alcanza récords mundiales en rendimiento de virtualización de servidores blade 2P y de montaje en rack 2P en la prueba de referencia VMmark 2.5.1" (PDF) . HP. Octubre de 2013.
^ "El K2 alcanza los dos millones de IOPS utilizando un único sistema de almacenamiento totalmente flash". Kaminario. 4 de octubre de 2012.
^ "Una historia de dos objetivos SCSI [LWN.net]".
^ Florian Haas, "Replica todo! Almacenamiento iSCSI de alta disponibilidad con DRBD y Pacemaker", (sección Linux iSCSI: una historia de cuatro objetivos) Linux Journal, número 217, mayo de 2012
^ Meyer, David (18 de marzo de 2013). "Fusion-io elige a la empresa de almacenamiento definido por software ID7 para el negocio SCST". Gigaom . Consultado el 20 de julio de 2014 .
^ O'Brien, Kevin (18 de marzo de 2013). "Fusion-io adquiere ID7, desarrolladores de SCST" . Consultado el 20 de julio de 2014 .
^ "Fusion-io ID7: aceleración del almacenamiento compartido con soluciones definidas por software". Fusion-io . Archivado desde el original el 4 de agosto de 2014 . Consultado el 12 de agosto de 2018 .
^ Iyer, Jay (23 de julio de 2014). "SanDisk completa la adquisición de Fusion-io". SanDisk .
^ Edge, Jake (3 de abril de 2012). "Cumbre sobre almacenamiento, sistemas de archivos y gestión de memoria de Linux 2012: día 1".
^ Van Assche, Bart (25 de diciembre de 2012). "Bloqueo más detallado en SCST".
^ Boljovitin, Vladislav; Van Assche, Bart (26 de septiembre de 2012). "SCST LÉAME".
^ Palekar, Ashish; Ganapathy, Narendran; Chadda, Anshul; Russell, Robert D. (2001). "Diseño e implementación de un objetivo SCSI de Linux para redes de área de almacenamiento". Actas de la 5.ª edición anual de Linux Showcase & Conference . 5. USENIX Association: 11–18. CiteSeerX 10.1.1.61.2706 .
^ Bolkhovitin, Vladislav. "ANUNCIO de un sistema de destino SCSI genérico de nivel medio para Linux (SCST) con controladores de destino".
^ Fujita, Tomonori; Masanori, Ogawara (2004). "Análisis del software de destino iSCSI". Actas del taller internacional sobre arquitectura de redes de almacenamiento y E/S paralelas - SNAPI '04 . ACM. págs. 25–32. doi :10.1145/1162628.1162632. ISBN9781450378222. Número de identificación del sujeto 14730273.
^ Fujita, Tomonori (1 de junio de 2004). "iSCSI Enterprise Target".
^ Fujita, Tomonori (1 de marzo de 2005). "ANUNCIO del software de destino empresarial iSCSI".
^ Smith, Randy (7 de septiembre de 2005). "Chelsio ofrece una familia de productos iSCSI de última generación con avances en rendimiento y densidad de puertos". Chelsio.
^ Habbinga, Erik (13 de diciembre de 2006). "Controlador de destino LSI/MPT".
^ Buechler, Mark R. (14 de noviembre de 2006). "Commit inicial de scstadmin".
^ Bolkhovitin, Vladislav (15 de agosto de 2007). "Confirmación inicial de iSCSI-SCST".
^ Pham, Vu (17 de mayo de 2008). "Confirmación inicial del controlador de destino SRP".
^ Van Assche, Bart (20 de diciembre de 2010). "PARCHE 4/7 scst: Agregar controlador de destino SRP".
^ Yan, Andi (14 de abril de 2009). "Controlador de destino para tarjetas SAS Marvell 88SE64xx(3G) y 88SE94xx(6G)".
^ Bolkhovitin, Vladislav (8 de julio de 2009). "ANUNCIO de compatibilidad del controlador de destino SCST con adaptadores FC/FCoE lpfc de Emulex".
^ Lane, Katherine (15 de septiembre de 2009). "SDK aporta valor mejorado y una oportunidad de mercado ampliada a los desarrolladores de soluciones de almacenamiento de centros de datos". Emulex. Archivado desde el original el 15 de octubre de 2009. Consultado el 10 de agosto de 2018 .
^ "TargetConnect Software Developer Kit: Accelerate, Simplify and Enhance Target Driver Development". Emulex. 15 de septiembre de 2009. Archivado desde el original el 14 de octubre de 2009. Consultado el 10 de agosto de 2018 .
^ Eykholt, Joe (20 de febrero de 2010). "Confirmación inicial del controlador de destino FCoE".
^ Van Assche, Bart (20 de diciembre de 2010). "PARCHE 5/7 ibmvstgt: Puerto de tgt a SCST".
^ Van Assche, Bart (11 de mayo de 2011). "PATCH scst: agregue soporte ALUA implícito".
^ Van Assche, Bart (17 de marzo de 2013). "PATCH ib_srpt: Agrega compatibilidad con HCA de QLogic InfiniBand".
^ Burman, Yan (21 de enero de 2014). "Compatibilidad de iSER con SCST en el parche 0/9".
^ Grigsby, Duane (20 de mayo de 2014). "Compatibilidad con HBA FC/FCoE 16G de QLogic".
Enlaces externos
Enterprise Storage OS (ESOS): una plataforma de almacenamiento a nivel de bloque, de alto rendimiento y de código abierto.
Bill Childers, OpenFiler: un dispositivo de almacenamiento en red de código abierto, Linux Journal número 181, mayo de 2009.
Errol Neal, SSD + ZFS/bcache/EnhanceIO + SCST = ¿Matriz de almacenamiento híbrida?, ha-guru.com, 22 de julio de 2014.