# LIO Unified Target

„LIO Unified Target“ ist ein multiprotokollfähiges SCSI-Target-Modul für den Linux-Kernel ab Version 2.6.38. Es ersetzt damit das bisherige STGT-Target. LIO unterstützt aktuell die Protokolle iSCSI, Fibre Channel, FCoE und InfiniBand (SRP und iSER). Neben der x86-Mikroprozessor-Architektur werden IA-64, ARM, MIPS und POWER unterstützt. Das Konzept des Unified-Target-Modul wird vor allem für den Zugriff auf eine Vielzahl von Speichermedien über eine Vielzahl von Protokollen benötigt. LIO als Unified-Target-Modul greift dabei weder selbst auf Daten zu, noch kommuniziert es direkt mit den Applikationen. Aufgabe von LIO ist es, die Semantik verschiedener SCSI-Targets nahtlos zu abstrahieren.

## Architektur
### SCSI-Target-Modul

LIO ist modular um ein zentrales SCSI-Target-Modul aufgebaut. Der Begriff SCSI-Target wird in diesem Zusammenhang nicht nur für dienstleistende Geräte an einem SCSI-Bus verwendet, sondern ganz allgemein für die Befehle empfangende Seite einer SCSI-Verbindung, also auch von SCSI-Verbindungen, die über Netzwerke völlig ohne physikalischen SCSI-Bus arbeiten. Für diese Verbindungen ist das SCSI-Target-Modul in diesem Fall der dienstleistende Server.

### Backstores

Um diese Dienstleistung erbringen zu können, benötigt das SCSI-Target-Modul Speichermedien, die je nach Ausführung ihrerseits SCSI-Targets sein können, aber nicht müssen. Die Verbindung zu einer Vielzahl unterschiedlicher Speichermedien wird von sogenannten Backstores geleistet, die als Backend am SCSI-Target-Modul arbeiten. Backstores können über eine Schnittstelle zur Abstraktion von Speichergeräten des Storage Hardware Abstraction Layer (S-HAL) im Linux-Kernel mit dem SCSI-Target-Modul verbunden werden. Das SCSI-Target-Modul unterstützt dabei den SCSI-3 Standard für sämtliche Backstores. Ein spezielles Loopback-Modul erlaubt die Integration von RAM-Disks oder SSD-Speicher. Über das FILEIO-Modul können Dateien aus beliebigen Dateisystemen als Speichermedium eingebunden werden.

### Fabric-Module

Ein Fabric-Modul (eng. „Gewebe“ oder „Gefüge“) stellt die Dienste des SCSI-Target-Modul über ein konkretes Protokoll zur Verfügung. Es gibt Fabric-Module für Fibre Channel, FCoE (Fibre Channel over Ethernet) SCSI über IP-Netze und andere. Damit lassen sich sogenannte Storage Area Networks (SAN) aufbauen.

### Initiator

Neben dem SCSI-Target wird von Datera auch noch ein Open Source iSCSI-Initiator names Core-iSCSI bereitgestellt. Ein besonderes Merkmal ist die Unterstützung mehrerer Verbindungen pro Session (Multiple iSCSI connections per iSCSI session – MC/S). Auf diese Weise wird eine verbesserte Verfügbarkeit und Durchsatz ermöglicht. Der Standard-Linux-iSCSI-Initiator unterstützt dieses Feature nicht. Core-iSCSI erlaubt darüber hinaus das Booten von Servern über ein iSCSI-SAN (diskless boot).

## Features

LIO unterstützt den iSCSI-Standard sowie Persistent Reservations und ALUAs (Asymmetric Logical Unit Assignment) des SPC-4 SCSI-Standards.
Zusammen mit der Replikationssoftware DRBD und der Clustersoftware Corosync lassen sich hochverfügbare Speichersysteme aufbauen. Der RTSdirector implementiert ein eigenes Multinode-Cluster mit linearer Skalierbarkeit.
Die Konfiguration erfolgt über das Linux configfs, die Administration über ein Kommando-Zeilen-Tool (RTSadmin). Mit Erscheinen der Version 2 ist es möglich, Fibre Channel, FCoE und InfiniBand Konfigurationen zu administrieren. Die Version 2 wurde dual lizenziert und die Community Version 'targetcli' ist unter der AGPL erschienen.
LIO wurde von der Firma Datera entwickelt und wird von einigen Herstellern von Speichersystemen (engl.: „storage appliances“) integriert (Buffalo, Netgear, Pure Storage, QNAP, Synology etc.).