El Linux-IO Target (LIO) es una implementación de objetivo de interfaz de sistema de computadora pequeña (SCSI) de código abierto incluida con el kernel de Linux . [1]
A diferencia de los iniciadores, que inician sesiones, LIO funciona como un objetivo, presentando uno o más números de unidad lógica (LUN) a un iniciador SCSI , recibiendo comandos SCSI y administrando las transferencias de datos de entrada/salida. [2]
LIO admite una amplia gama de protocolos de almacenamiento y estructuras de transporte, incluidos, entre otros, Fibre Channel over Ethernet (FCoE), Fibre Channel , IEEE 1394 e iSCSI . [3]
Se utiliza en varias distribuciones de Linux y es una opción popular para entornos de nube debido a su integración con herramientas como QEMU / KVM , libvirt y OpenStack . [4]
El proyecto LIO es mantenido por Datera, Inc. , [ dudoso – discutir ] un proveedor de soluciones de almacenamiento con sede en Silicon Valley. El 15 de enero de 2011, LIO se fusionó con la línea principal del núcleo Linux con la versión 2.6.38, que se lanzó oficialmente el 14 de marzo de 2011. [5] [6] Las versiones posteriores del núcleo Linux han introducido módulos de estructura adicionales para ampliar su compatibilidad. [ cita requerida ]
LIO compite con otros módulos de destino SCSI en el ecosistema Linux. SCSI Target Framework (SCST) [7] es una alternativa destacada para la funcionalidad general de destino SCSI, mientras que para destinos específicos de iSCSI, los antiguos iSCSI Enterprise Target (IET) y SCSI Target Framework (STGT) también han sido adoptados por la industria. [8] [9]
El estándar SCSI proporciona una abstracción semántica extensible para dispositivos de almacenamiento de datos informáticos y se utiliza con sistemas de almacenamiento de datos. Los estándares SCSI T10 [10] definen los comandos [11] y los protocolos del procesador de comandos SCSI (enviados en bases de datos SCSI ), y las interfaces eléctricas y ópticas para diversas implementaciones.
Un iniciador SCSI es un punto final que inicia una sesión SCSI . Un destino SCSI es el punto final que espera los comandos del iniciador y ejecuta las transferencias de datos de E/S requeridas . El destino SCSI generalmente exporta uno o más LUN para que los iniciadores operen en ellos.
El objetivo SCSI de Linux LIO implementa un objetivo SCSI genérico que proporciona acceso remoto a la mayoría de los tipos de dispositivos de almacenamiento de datos en todos los protocolos y estructuras de almacenamiento predominantes. LIO no accede directamente a los datos ni se comunica directamente con las aplicaciones.
LIO implementa una arquitectura modular y extensible alrededor de un motor de procesamiento de comandos SCSI paralelizado. [12]
El motor de destino SCSI de LIO es independiente de módulos de estructura específicos o tipos de backstore. Por lo tanto, LIO admite la combinación y combinación de cualquier cantidad de estructuras y backstores al mismo tiempo. El motor de destino SCSI de LIO implementa un conjunto integral de características SPC-3/SPC-4 [13] con soporte para características de alta gama, incluidas las reservas persistentes (PR) SCSI-3/SCSI-4, la asignación de unidad lógica asimétrica (ALUA) SCSI-4, las API de VMware vSphere para la integración de matrices (VAAI), [14] T10 DIF , etc.
LIO se puede configurar a través de una API de kernel basada en configfs [15] y se puede administrar a través de una interfaz de línea de comandos y una API ( targetcli ).
El concepto de un destino SCSI no se limita a los dispositivos físicos en un bus SCSI, sino que proporciona un modelo generalizado para todos los receptores en una estructura SCSI lógica. Esto incluye sesiones SCSI a través de interconexiones sin ningún bus SCSI físico. Conceptualmente, el destino SCSI proporciona un servicio o servidor de almacenamiento en bloque genérico en este escenario.
Los back-stores proporcionan al destino SCSI un acceso generalizado a los dispositivos de almacenamiento de datos importándolos a través de los controladores de dispositivos correspondientes. Los back-stores no necesitan ser dispositivos SCSI físicos.
Los tipos de medios de almacenamiento trasero más importantes son:
Como resultado, LIO proporciona un modelo generalizado para exportar almacenamiento en bloques.
Los módulos de estructura implementan el front-end del objetivo SCSI encapsulando y abstrayendo las propiedades de las diversas interconexiones admitidas. Están disponibles los siguientes módulos de estructura.
El módulo de estructura Fibre Channel over Ethernet (FCoE) permite el transporte de tráfico del protocolo Fibre Channel (FCP) a través de redes Ethernet sin pérdidas . La especificación, respaldada por una gran cantidad de proveedores de redes y almacenamiento, es parte del estándar FC-BB-5 del Comité Técnico T11. [16]
LIO admite todas las NIC Ethernet estándar.
El módulo de estructura FCoE fue aportado por Cisco e Intel , y lanzado con Linux 3.0 el 21 de julio de 2011. [17]
Fibre Channel es una tecnología de red de alta velocidad que se utiliza principalmente para redes de almacenamiento. Está estandarizada en el Comité Técnico T11 [18] del Comité Internacional de Normas de Tecnologías de la Información (INCITS).
El módulo de estructura QLogic Fibre Channel admite velocidades de 4 y 8 gigabits con los siguientes HBA:
El módulo de estructura Fibre Channel [19] y el controlador de bajo nivel [20] (LLD) se lanzaron con Linux 3.5 el 21 de julio de 2012. [21]
Con Linux 3.9, también se admiten los siguientes HBA y CNA QLogic:
Esto convierte a LIO en el primer objetivo de código abierto que admite el canal de fibra de 16 gigabits.
El módulo de estructura FireWire SBP-2 permite a Linux exportar dispositivos de almacenamiento local a través de IEEE 1394 , de modo que otros sistemas puedan montarlos como un dispositivo de almacenamiento IEEE 1394 normal.
IEEE 1394 es un estándar de interfaz de bus serial para comunicaciones de alta velocidad y transferencia de datos isócrona en tiempo real. Fue desarrollado por Apple como "FireWire" a fines de la década de 1980 y principios de la de 1990, y las computadoras Macintosh admiten el "modo de disco de destino FireWire" desde 1999. [22]
El módulo de red FireWire SBP-2 se lanzó con Linux 3.5 el 21 de julio de 2012. [21] [23]
El módulo de estructura de interfaz de sistema de computadora pequeña de Internet ( iSCSI ) permite el transporte de tráfico SCSI a través de redes IP estándar.
Al transportar sesiones SCSI a través de redes IP, iSCSI se utiliza para facilitar las transferencias de datos a través de intranets y administrar el almacenamiento a largas distancias. iSCSI se puede utilizar para transmitir datos a través de redes de área local (LAN), redes de área amplia (WAN) o Internet, y puede permitir el almacenamiento y la recuperación de datos independientes de la ubicación y transparentes a la ubicación.
El módulo de estructura iSCSI de LIO también implementa una serie de funciones iSCSI avanzadas que aumentan el rendimiento y la resiliencia, como múltiples conexiones por sesión (MC/S) y niveles de recuperación de errores 0-2 (ERL=0,1,2).
LIO admite todas las NIC Ethernet estándar.
El módulo de estructura iSCSI se lanzó con Linux 3.1 el 24 de octubre de 2011. [24]
Las redes que admiten acceso directo a memoria remota (RDMA) pueden utilizar el módulo de estructura iSCSI Extensions for RDMA (iSER) para transportar tráfico iSCSI . iSER permite transferir datos directamente dentro y fuera de los buffers de memoria de computadora SCSI remota sin copias de datos intermedias ( colocación directa de datos o DDP) mediante RDMA. [25] RDMA es compatible con redes InfiniBand , en Ethernet con redes de puentes de centros de datos (DCB) a través de RDMA sobre Ethernet convergente (RoCE) y en redes Ethernet estándar con controladores de motor de descarga TCP mejorados iWARP .
El módulo de estructura iSER fue desarrollado en conjunto por Datera y Mellanox Technologies , y se lanzó por primera vez con Linux 3.10 el 30 de junio de 2013. [26]
El módulo de estructura del protocolo SCSI RDMA (SRP) permite el transporte de tráfico SCSI a través de redes RDMA (ver arriba). A partir de 2013, SRP se utilizó más ampliamente que iSER, aunque es más limitado, ya que SCSI es solo un protocolo peer to peer, mientras que iSCSI es completamente enrutable. El módulo de estructura SRP admite los siguientes adaptadores de canal de host (HCA) Mellanox:
El módulo de estructura SRP se lanzó con Linux 3.3 el 18 de marzo de 2012. [27]
En 2012, la revista c't midió un rendimiento de casi 5000 MB/s con LIO SRP Target en un puerto Mellanox ConnectX-3 en modo FDR de 56 Gbit/s en un sistema Sandy Bridge PCI Express 3.0 con cuatro tarjetas de memoria flash Fusion-IO ioDrive PCI Express.
El módulo USB Gadget permite a Linux exportar dispositivos de almacenamiento local a través del bus serie universal (USB), de modo que otros sistemas puedan montarlos como un dispositivo de almacenamiento normal.
El USB fue diseñado a mediados de la década de 1990 para estandarizar la conexión de los periféricos de computadora , y también se ha vuelto común para los dispositivos de almacenamiento de datos.
El módulo de red USB Gadget se lanzó con Linux 3.5 el 21 de julio de 2012. [28]
targetcli es una interfaz de línea de comandos (CLI) de gestión de nodo único de espacio de usuario para LIO. [29] Admite todos los módulos de estructura y se basa en una arquitectura modular y extensible, con módulos complementarios para módulos de estructura o funcionalidades adicionales.
targetcli proporciona una CLI que utiliza una biblioteca de destino genérica subyacente a través de una API bien definida. Por lo tanto, la CLI se puede reemplazar o complementar fácilmente con una interfaz de usuario con otras metáforas, como una GUI.
targetcli está implementado en Python y consta de tres módulos principales:
Se pueden encontrar instrucciones detalladas sobre cómo configurar objetivos LIO en la wiki de LIO. [29]
Targetcli y LIO están incluidos en la mayoría de las distribuciones Linux de forma predeterminada. A continuación, se incluye una descripción general de las más populares, junto con las fechas de inclusión iniciales:
{{cite web}}
: CS1 maint: numeric names: authors list (link)