Articulo de referencia

LIO (objetivo SCSI)

Jerome Martin"},"developer":{"wt":"Datera, Inc."},"released":{"wt":"{{start date|2011|1|14}}"},"discontinued":{"wt":""},"programming language":{"wt":"[[C (programming language)|...

Linux -IO ( LIO ) es una implementación de código abierto de la interfaz de sistema de computadora pequeña (SCSI) incluida en el núcleo de Linux . [ 1 ]

A diferencia de los iniciadores, que dan comienzo a las sesiones, LIO funciona como un destino, presentando uno o más números de unidad lógica (LUN) a un iniciador SCSI , recibiendo comandos SCSI y gestionando las transferencias de datos de entrada/salida.

LIO admite una amplia gama de protocolos de almacenamiento y redes de transporte, incluidos, entre otros, Fibre Channel over Ethernet (FCoE), Fibre Channel , IEEE 1394 e iSCSI .

Se utiliza en varias distribuciones de Linux y es una opción popular para entornos en la nube debido a su integración con herramientas como QEMU / KVM , libvirt y OpenStack .

El proyecto LIO es mantenido por Datera , un proveedor de soluciones de almacenamiento con sede en Silicon Valley. El 15 de enero de 2011, LIO se integró en la rama principal del kernel de Linux con la versión 2.6.38, que se lanzó oficialmente el 14 de marzo de 2011. [ 2 ] [ 3 ] Las versiones posteriores del kernel de Linux han introducido módulos de tejido adicionales para ampliar su compatibilidad.

LIO compite con otros módulos de destino SCSI en el ecosistema Linux. El SCSI Target Framework (SCST) [ 4 ] es una alternativa destacada para la funcionalidad general de destino SCSI, mientras que para destinos específicos de iSCSI, los más antiguos iSCSI Enterprise Target (IET) y SCSI Target Framework (STGT) también tienen adopción en la industria. [ 5 ] [ 6 ]

Fondo

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 [ 7 ] definen los comandos [ 8 ] y los protocolos del procesador de comandos SCSI (enviados en SCSI CDB ), así como 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 las órdenes del iniciador y ejecuta las transferencias de datos de E/S necesarias . El destino SCSI suele exportar una o más LUN para que los iniciadores operen sobre ellas.

El dispositivo LIO Linux SCSI Target implementa un destino SCSI genérico que proporciona acceso remoto a la mayoría de los tipos de dispositivos de almacenamiento de datos a través de todos los protocolos y arquitecturas de almacenamiento más comunes. LIO no accede directamente a los datos ni se comunica directamente con las aplicaciones.

Arquitectura

Arquitectura LIO

LIO implementa una arquitectura modular y extensible en torno a un motor de procesamiento de comandos SCSI paralelizado. [ 9 ]

El motor de destino SCSI de LIO es independiente de los módulos de tejido o tipos de almacenamiento posterior específicos. Por lo tanto, LIO admite la combinación de cualquier número de tejidos y almacenamientos posteriores al mismo tiempo. El motor de destino SCSI de LIO implementa un conjunto completo de características SPC-3/SPC-4 [ 10 ] con soporte para características de gama alta, incluidas las reservas persistentes (PR) SCSI-3/SCSI-4, la asignación asimétrica de unidades lógicas (ALUA) SCSI-4, las API de VMware vSphere para la integración de matrices (VAAI), [ 11 ] T10 DIF , etc.

LIO es configurable a través de una API del kernel basada en configfs [ 12 ] y se puede administrar a través de una interfaz de línea de comandos y una API ( targetcli ).

Objetivo SCSI

El concepto de destino SCSI no se limita a dispositivos físicos en un bus SCSI, sino que proporciona un modelo generalizado para todos los receptores en una red lógica SCSI. Esto incluye sesiones SCSI a través de interconexiones sin bus SCSI físico. Conceptualmente, el destino SCSI proporciona un servicio o servidor de almacenamiento en bloques genérico en este escenario.

Almacenes traseros

Los sistemas de almacenamiento secundario proporcionan al dispositivo SCSI de destino acceso generalizado a los dispositivos de almacenamiento de datos mediante su importación a través de los controladores de dispositivo correspondientes. Estos sistemas no tienen por qué ser dispositivos SCSI físicos.

Los tipos de medios de almacenamiento interno más importantes son:

  • Bloque : El controlador de bloques permite usar dispositivos de bloques Linux sin procesar como almacenamiento secundario para la exportación a través de LIO. Esto incluye dispositivos físicos, como discos duros (HDD) , unidades de estado sólido (SSD) , CD / DVD , discos RAM , etc., y dispositivos lógicos, como volúmenes RAID de software o hardware o volúmenes LVM .
  • Archivo : El controlador de archivos permite utilizar archivos que pueden residir en cualquier sistema de archivos Linux o sistema de archivos en clúster como almacenamiento de respaldo para la exportación a través de LIO.
  • Raw : El controlador raw permite utilizar memoria no estructurada como almacenamiento de respaldo para la exportación a través de LIO.

Como resultado, LIO proporciona un modelo generalizado para exportar almacenamiento en bloques.

Módulos de tela

Los módulos de tejido implementan la interfaz del destino SCSI encapsulando y abstraiendo las propiedades de las distintas interconexiones compatibles. Los siguientes módulos de tejido están disponibles.

FCoE

Almacenamiento combinado y red de área local

El módulo de tejido 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 un gran número de proveedores de redes y almacenamiento, forma parte del estándar FC-BB-5 del Comité Técnico T11. [ 13 ]

LIO es compatible con todas las tarjetas de red Ethernet estándar.

El módulo de tejido FCoE fue aportado por Cisco e Intel y lanzado con Linux 3.0 el 21 de julio de 2011. [ 14 ]

Canal de fibra

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 [ 15 ] del Comité Internacional de Normas de Tecnología de la Información (INCITS).

El módulo de tejido Fibre Channel de QLogic admite velocidades de 4 y 8 gigabits con los siguientes adaptadores HBA:

  • Serie QLogic 2400 (QLx246x), 4GFC
  • Serie QLogic 2500 (QLE256x), 8GFC (totalmente cualificado)

El módulo de tejido Fibre Channel [ 16 ] y el controlador de bajo nivel [ 17 ] (LLD) se lanzaron con Linux 3.5 el 21 de julio de 2012. [ 18 ]

Con Linux 3.9, también se admiten los siguientes adaptadores HBA y CNA de QLogic:

  • Serie QLogic 2600 (QLE266x), 16GFC, SR-IOV
  • Serie QLogic 8300 (QLE834x), 16 GFS/10 GbE, PCIe Gen3 SR-IOV
  • Serie QLogic 8100 (QLE81xx), 8GFC/10 GbE, PCIe Gen2

Esto convierte a LIO en el primer objetivo de código abierto en admitir Fibre Channel de 16 gigabits.

IEEE 1394

LIO Firewire Target para Mac OS X

El módulo de interconexión 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 ordinario.

IEEE 1394 es un estándar de interfaz de bus serie para comunicaciones de alta velocidad y transferencia de datos isócrona en tiempo real. Fue desarrollado por Apple como "FireWire" a finales de la década de 1980 y principios de la de 1990, y los ordenadores Macintosh han sido compatibles con el "modo de disco de destino FireWire" desde 1999. [ 19 ]

El módulo de tejido FireWire SBP-2 se lanzó con Linux 3.5 el 21 de julio de 2012. [ 18 ] [ 20 ]

iSCSI

El módulo de interconexión iSCSI ( Internet Small Computer System Interface ) permite el transporte de tráfico SCSI a través de redes IP estándar.

Mediante la transmisión de sesiones SCSI a través de redes IP, iSCSI se utiliza para facilitar la transferencia de datos en intranets y gestionar el almacenamiento a larga distancia. iSCSI permite transmitir datos a través de redes de área local (LAN), redes de área amplia (WAN) o Internet, y posibilita el almacenamiento y la recuperación de datos de forma independiente y transparente a la ubicación.

El módulo de tejido iSCSI LIO también implementa una serie de características iSCSI avanzadas que aumentan el rendimiento y la resiliencia, como las conexiones múltiples por sesión (MC/S) y los niveles de recuperación de errores 0-2 (ERL=0,1,2).

LIO es compatible con todas las tarjetas de red Ethernet estándar.

El módulo de tejido iSCSI se lanzó con Linux 3.1 el 24 de octubre de 2011. [ 21 ]

iSER

Las redes que admiten acceso directo a memoria remota (RDMA) pueden usar el módulo de tejido iSCSI Extensions for RDMA (iSER) para transportar tráfico iSCSI . iSER permite transferir datos directamente hacia y desde búferes de memoria de computadora SCSI remotos sin copias de datos intermedias ( ubicación directa de datos o DDP) mediante RDMA. [ 22 ] RDMA es compatible con redes InfiniBand , con redes Ethernet con puenteo de centro de datos (DCB) a través de RDMA sobre Ethernet convergente (RoCE) y con redes Ethernet estándar con controladores de motor de descarga TCP mejorado iWARP .

El módulo de tejido iSER fue desarrollado conjuntamente por Datera y Mellanox Technologies , y se lanzó por primera vez con Linux 3.10 el 30 de junio de 2013. [ 23 ]

Precio de venta sugerido

El módulo de estructura del protocolo SCSI RDMA (SRP) permite el transporte de tráfico SCSI a través de redes RDMA (véase más arriba). En 2013, SRP era más utilizado que iSER, aunque presenta limitaciones, ya que SCSI es un protocolo exclusivamente punto a punto, mientras que iSCSI es totalmente enrutable. El módulo de estructura SRP admite los siguientes adaptadores de canal de host (HCA) de Mellanox:

  • Mellanox ConnectX-2 VPI PCIe Gen2 HCAs (8 carriles), puerto único/doble QDR 40  Gbit/s
  • Mellanox ConnectX-3 VPI PCIe Gen3 HCAs (8 carriles), puerto único/doble FDR 56  Gbit/s
  • Mellanox ConnectX-IB PCIe Gen3 HCAs (16 carriles), puerto único/doble FDR 56  Gbit/s

El módulo de tejido SRP se lanzó con Linux 3.3 el 18 de marzo de 2012. [ 24 ]

En 2012, la revista c't midió un rendimiento de casi 5000  MB/s con LIO SRP Target a través de 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.

USB

El módulo de interconexión 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 ordinario.

El USB se diseñó a mediados de la década de 1990 para estandarizar la conexión de periféricos informáticos y también se ha generalizado para los dispositivos de almacenamiento de datos.

El módulo de tejido USB Gadget se lanzó con Linux 3.5 el 21 de julio de 2012. [ 25 ]

Targetcli

targetcli es una interfaz de línea de comandos (CLI) de administración de nodo único en el espacio de usuario para LIO. [ 26 ] Admite todos los módulos de tejido y se basa en una arquitectura modular y extensible, con módulos enchufables para módulos de tejido o funcionalidades adicionales.

targetcli proporciona una interfaz de línea de comandos (CLI) que utiliza una biblioteca de destino genérica subyacente a través de una API bien definida. De este modo, la CLI puede reemplazarse o complementarse fácilmente con una interfaz de usuario (UI) que emplee otras metáforas, como una interfaz gráfica de usuario (GUI).

targetcli está implementado en Python y consta de tres módulos principales:

  • la biblioteca rtslib y la API subyacentes . [ 27 ]
  • el configshell , que encapsula los atributos específicos de fabric en los archivos 'spec' correspondientes.
  • la propia consola targetcli .

En la wiki de LIO se pueden encontrar instrucciones detalladas sobre cómo configurar los objetivos LIO. [ 26 ]

Distribuciones de Linux

targetcli y LIO vienen incluidos por defecto en la mayoría de las distribuciones de Linux. A continuación, se presenta un resumen de las más populares, junto con las fechas de su inclusión inicial:

Véase también

Notas

  1. La versión de distribución donde LIO se incluyó por primera vez.
  2. RHEL 6 incluía LIO, pero era la opción predeterminada solo para destinos FCoE, mientras que STGT se usaba para iSCSI. En RHEL 7 beta, LIO es la opción predeterminada para FCoE, iSCSI y para Mellanox InfiniBand iSER/SRP. [ 28 ]

Referencias

  1. "LIO" . Linux-IO, la wiki de destinos SCSI de Linux . 12 de marzo de 2016. Archivado del original el 20 de agosto de 2022.
  2. Linus Torvalds (14 de enero de 2011). "Fusión trivial" . Kernel.org . Consultado el 28 de septiembre de 2019 .
  3. Thorsten Leemhuis (2 de marzo de 2011). "Registro del kernel: disponible en 2.6.38 (Parte 4): almacenamiento" . Heise en línea.
  4. "Una historia de dos objetivos SCSI" . Lwn.net. Archivado del original el 2 de febrero de 2014. Consultado el 20 de enero de 2014 .
  5. Haas, Florian (mayo de 2012). "¡Replica todo! Almacenamiento iSCSI de alta disponibilidad con DRBD y Pacemaker" . Linux Journal . Recuperado el 28 de septiembre de 2019 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  6. Bolkhovitin, Vladislav (11 de abril de 2018). "SCST vs STGT" . Subsistema de destino SCSI genérico para Linux . Recuperado el 1 de abril de 2019 .
  7. Comité Técnico T10. "Interfaces de almacenamiento SCSI" . t10.org . Consultado el 24 de diciembre de 2012 .{{cite web}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
  8. Manual de referencia de comandos SCSI (PDF) . 100293068, Rev. C. Scotts Valley: Seagate Technology. Abril de 2010. Archivado del original (PDF) el 31 de julio de 2012. Consultado el 25 de diciembre de 2012 .
  9. Bellinger, Nicholas (2009). Estado actual y futuro de iSCSI en la plataforma Linux (PDF) . Conferencia Linux Plumbers.
  10. Ralph Weber (17 de enero de 2011). "Comandos primarios SCSI - 4 (SPC-4)" . t10.org . Consultado el 7 de marzo de 2011 .
  11. "API de vStorage para la integración de matrices" . Linux-IO, la wiki de destinos SCSI de Linux . 7 de agosto de 2015. Archivado del original el 20 de agosto de 2022.
  12. Jonathan Corbet (24-08-2005). "Configfs - una introducción" . lwn.net . Consultado el 07-03-2011 .
  13. "Fibre Channel: Backbone - 5 revisión 2.00" (PDF) . Norma Nacional Estadounidense para la Tecnología de la Información. Comité Internacional de Normas de Tecnología de la Información, Grupo Técnico T11. 4 de junio de 2009. Consultado el 5 de mayo de 2011 .
  14. Linus Torvalds (18-04-2011). " [ SCSI ] tcm_fc: Añadiendo proveedor FC_FC4 (tcm_fc) para soporte de destino FCoE (TCM - núcleo de destino)" . Kernel.org . Consultado el 28-09-2019 .
  15. "Página principal de T11" . t11.org . Consultado el 25 de diciembre de 2012 .
  16. Linus Torvalds (15-05-2012). " [ SCSI ] tcm_qla2xxx: Agregar módulo de tejido de la serie >= 24xx para target-core" . Kernel.org . Consultado el 28-09-2019 .
  17. Linus Torvalds (15 de mayo de 2012). " [ SCSI ] qla2xxx: Agregar infraestructura de modo de destino LLD para la serie >= 24xx" . Kernel.org . Consultado el 28 de septiembre de 2019 .
  18. ^ Thorsten Leemhuis (3 de julio de 2012) . "Kernel Log: Próximamente en 3.5 (Parte 2): sistemas de archivos y almacenamiento" . Heise en línea . Consultado el 14 de enero de 2013 .
  19. "Cómo usar y solucionar problemas del modo de disco de destino FireWire" . apple.com . Consultado el 24 de diciembre de 2012 .
  20. Linus Torvalds (15 de abril de 2012). "sbp-target: Fusión inicial del soporte para el modo de destino firewire/ieee-1394" . Kernel.org . Consultado el 28 de septiembre de 2019 .
  21. Linus Torvalds (27-07-2011). "Fusión iSCSI" . Kernel.org . Consultado el 28-09-2019 .
  22. RFC 5041 
  23. Linus Torvalds (30-04-2013). "Fusionar la rama 'for-next-merge'"" . Kernel.org . Consultado el 28 de septiembre de 2019 .
  24. Linus Torvalds (18 de enero de 2012). "Fusión de InfiniBand/SRP" . Kernel.org . Consultado el 28 de septiembre de 2019 .
  25. "Fusionar la rama 'usb-target-merge'"" . Kernel.org . Consultado el 28 de septiembre de 2019 .
  26. 1 2 "Targetcli" . Linux-IO, la wiki de destinos SCSI de Linux . 09/12/2012. Archivado del original el 02/03/2013 . Recuperado el 25/12/2012 .
  27. Jerome Martin (2011-08-03). "Paquete rtslib" . daterainc.com . Consultado el 2012-12-25 .
  28. "Capítulo 6. Almacenamiento" . Access.redhat.com . Consultado el 20 de enero de 2014 .
  • Sitio web oficial en Wayback Machine (archivado el 13/10/2022)
  • Sitio web de Datera