Linux -IO ( LIO ) は、Linux カーネルに含まれるオープンソースの小型コンピュータシステムインターフェース(SCSI) ターゲット実装です。[ 1 ]
セッションを開始するイニシエータとは異なり、LIOはターゲットとして機能し、1つ以上の論理ユニット番号(LUN)をSCSIイニシエータに提示し、SCSIコマンドを受信し、入出力データ転送を管理します。
LIOは、 Fibre Channel over Ethernet(FCoE)、Fibre Channel、IEEE 1394、iSCSIなどを含む(ただしこれらに限定されない)幅広いストレージプロトコルとトランスポートファブリックをサポートしています。
これは複数のLinuxディストリビューションで利用されており、 QEMU / KVM、libvirt、OpenStackなどのツールとの統合により、クラウド環境で人気のある選択肢となっています。
LIO プロジェクトは、シリコンバレーに拠点を置くストレージ ソリューション プロバイダーであるDateraによって維持されています。2011 年 1 月 15 日、LIO はバージョン 2.6.38 でLinux カーネルのメインラインに統合され、2011 年 3 月 14 日に正式にリリースされました。[ 2 ] [ 3 ]以降の Linux カーネルのバージョンでは、互換性を拡張するために追加のファブリック モジュールが導入されています。
LIO は Linux エコシステム内の他の SCSI ターゲット モジュールと競合しています。SCSIターゲット フレームワーク(SCST) [ 4 ]は一般的な SCSI ターゲット機能の有力な代替手段ですが、iSCSI 固有のターゲットについては、古いiSCSI エンタープライズ ターゲット (IET)とSCSI ターゲット フレームワーク (STGT)も業界で採用されています。[ 5 ] [ 6 ]
SCSI規格は、コンピュータのデータストレージデバイスのための拡張可能な意味的抽象化を提供し、データストレージシステムで使用されます。SCSI T10規格[ 7 ]は、SCSIコマンドプロセッサのコマンド[ 8 ]とプロトコル( SCSI CDBで送信される)、およびさまざまな実装のための電気的および光学的インターフェースを定義します。
SCSIイニシエータは、 SCSIセッションを開始するエンドポイントです。SCSIターゲットは、イニシエータからのコマンドを待機し、必要なI/Oデータ転送を実行するエンドポイントです。SCSIターゲットは通常、イニシエータが操作するための1つ以上のLUNをエクスポートします。
LIO Linux SCSIターゲットは、汎用的なSCSIターゲットを実装しており、一般的なストレージファブリックとプロトコルを介して、ほとんどのデータストレージデバイスタイプへのリモートアクセスを提供します。LIOはデータに直接アクセスしたり、アプリケーションと直接通信したりすることはありません。

LIOは、並列化されたSCSIコマンド処理エンジンを中心としたモジュール式で拡張可能なアーキテクチャを実装しています。[ 9 ]
LIO SCSI ターゲット エンジンは、特定のファブリック モジュールやバックストア タイプに依存しません。そのため、LIO は任意の数のファブリックとバックストアを同時に混在させることができます。LIO SCSI ターゲット エンジンは、SCSI-3/SCSI- 4パーシステント リザベーション(PR)、SCSI-4 非対称論理ユニット割り当て(ALUA)、VMware vSphere API のアレイ統合(VAAI)、[ 11 ] T10 DIFなど、ハイエンド機能をサポートする包括的な SPC-3/ SPC-4 [ 10 ]機能セットを実装しています。
LIOはconfigfsベースの[ 12 ]カーネルAPIを介して設定可能であり、コマンドラインインターフェースとAPI(targetcli)を介して管理できます。
SCSIターゲットの概念は、SCSIバス上の物理デバイスに限定されるものではなく、論理SCSIファブリック上のすべてのレシーバーに対する汎用モデルを提供するものです。これには、物理的なSCSIバスが全く存在しないインターコネクトを介したSCSIセッションも含まれます。概念的には、このシナリオにおいてSCSIターゲットは汎用的なブロックストレージサービスまたはサーバとして機能します。
バックストアは、対応するデバイスドライバを介してデータストレージデバイスをインポートすることで、SCSIターゲットに汎用的なアクセス機能を提供します。バックストアは物理的なSCSIデバイスである必要はありません。
最も重要なバックストアメディアの種類は以下のとおりです。
その結果、LIOはブロックストレージをエクスポートするための汎用的なモデルを提供する。
ファブリックモジュールは、サポートされている各種インターコネクトの特性をカプセル化および抽象化することにより、SCSIターゲットのフロントエンドを実装します。利用可能なファブリックモジュールは以下のとおりです。

Fibre Channel over Ethernet (FCoE) ファブリックモジュールは、損失のないイーサネットネットワークを介してファイバーチャネルプロトコル (FCP) トラフィックを伝送することを可能にします。多数のネットワークおよびストレージベンダーによってサポートされているこの仕様は、技術委員会 T11 FC-BB-5 標準の一部です。[ 13 ]
LIOはすべての標準イーサネットNICをサポートしています。
FCoEファブリックモジュールはCiscoとIntelによって提供され、2011年7月21日にLinux 3.0とともにリリースされました。[ 14 ]
ファイバーチャネルは、主にストレージネットワークに使用される高速ネットワーク技術です。国際情報技術標準化委員会(INCITS)の技術委員会T11 [ 15 ]で標準化されています。
QLogicファイバーチャネルファブリックモジュールは、以下のHBAで4ギガビットおよび8ギガビットの速度をサポートします。
ファイバーチャネルファブリックモジュール[ 16 ]と低レベルドライバ[ 17 ](LLD)は、2012年7月21日にLinux 3.5とともにリリースされました。[ 18 ]
Linux 3.9では、以下のQLogic製HBAおよびCNAもサポートされています。
これにより、LIOは16ギガビットファイバーチャネルをサポートする初のオープンソースターゲットとなった。

FireWire SBP-2ファブリックモジュールを使用すると、LinuxはローカルストレージデバイスをIEEE 1394経由でエクスポートできるため、他のシステムはそれらを通常のIEEE 1394ストレージデバイスとしてマウントできます。
IEEE 1394 は、高速通信と等時性リアルタイムデータ転送のためのシリアルバスインターフェース規格です。1980年代後半から 1990 年代初頭にかけてAppleによって「FireWire」として開発され、 Macintoshコンピュータは 1999 年以降「FireWire ターゲットディスクモード」をサポートしています。[ 19 ]
FireWire SBP-2ファブリックモジュールは、2012年7月21日にLinux 3.5とともにリリースされました。[ 18 ] [ 20 ]
インターネット・スモールコンピュータシステムインターフェース(iSCSI)ファブリックモジュールは、標準的なIPネットワークを介してSCSIトラフィックを転送することを可能にする。
iSCSIは、IPネットワーク上でSCSIセッションを伝送することで、イントラネット上でのデータ転送を容易にし、長距離にわたるストレージ管理を可能にします。iSCSIは、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、またはインターネット上でデータを送信するために使用でき、場所を選ばず、場所を透過したデータストレージとデータ取得を実現します。
LIO iSCSIファブリックモジュールは、セッションあたりの複数接続(MC/S)やエラー回復レベル0~2(ERL=0、1、2)など、パフォーマンスと回復力を向上させる高度なiSCSI機能も多数実装しています。
LIOはすべての標準イーサネットNICをサポートしています。
iSCSIファブリックモジュールは、 2011年10月24日にLinux 3.1とともにリリースされました。[ 21 ]
リモートダイレクトメモリアクセス(RDMA)をサポートするネットワークは、 iSCSIトラフィックを転送するためにiSCSI Extensions for RDMA (iSER) ファブリックモジュールを使用できます。iSER は、RDMA を使用して、中間データコピーなしでリモート SCSI コンピュータのメモリバッファにデータを直接転送したり、そこからデータを転送したりすることを可能にします (直接データ配置または DDP)。[ 22 ] RDMA は、 InfiniBandネットワーク、コンバージドイーサネット (RoCE) 上の RDMAを介したデータセンターブリッジング(DCB) ネットワーク上のイーサネット、およびiWARP拡張TCP オフロードエンジンコントローラを備えた標準イーサネットネットワークでサポートされています。
iSERファブリックモジュールはDateraとMellanox Technologiesによって共同開発され、2013年6月30日にLinux 3.10で初めてリリースされました。[ 23 ]
SCSI RDMAプロトコル(SRP)ファブリックモジュールは、RDMA(上記参照)ネットワークを介したSCSIトラフィックの転送を可能にします。2013年時点では、SRPはiSERよりも広く使用されていましたが、SCSIはピアツーピアプロトコルであるのに対し、iSCSIは完全にルーティング可能であるため、SRPには制限があります。SRPファブリックモジュールは、以下のMellanoxホストチャネルアダプタ(HCA)をサポートしています。
SRPファブリックモジュールは、2012年3月18日にLinux 3.3とともにリリースされました。[ 24 ]
2012年、c't誌は、 Sandy Bridge PCI Express 3.0システムにFusion-IO ioDrive PCI Expressフラッシュメモリカードを4枚搭載し、Mellanox ConnectX-3ポート1つを56 Gbit/s FDRモードで使用した場合、LIO SRP Targetで約5000 MB/ sのスループットを測定した。
USBガジェットファブリックモジュールを使用すると、Linuxはローカルストレージデバイスをユニバーサルシリアルバス(USB)経由でエクスポートできるため、他のシステムがそれらを通常のストレージデバイスとしてマウントできるようになります。
USBは1990年代半ばにコンピュータ周辺機器の接続を標準化するために設計され、データストレージデバイスでも広く普及するようになった。
USB Gadgetファブリックモジュールは、2012年7月21日にLinux 3.5とともにリリースされました。[ 25 ]
targetcliは、LIO用のユーザー空間シングルノード管理コマンドラインインターフェイス(CLI)です。[ 26 ]すべてのファブリックモジュールをサポートし、モジュール式で拡張可能なアーキテクチャに基づいており、追加のファブリックモジュールや機能のためのプラグインモジュールを備えています。
targetcliは、明確に定義されたAPIを通じて汎用ターゲットライブラリを利用するCLIを提供します。そのため、CLIはGUIなどの他のメタファーを用いたUIに容易に置き換えたり、補完したりすることができます。
targetcliはPythonで実装されており、主に3つのモジュールで構成されています。
LIOターゲットの設定方法に関する詳細な手順は、LIO wikiに記載されています。[ 26 ]
targetcliとLIOは、ほとんどのLinuxディストリビューションにデフォルトで含まれています。以下に、最も一般的なディストリビューションと、それらに最初に含まれた時期の概要を示します。
{{cite web}}: CS1メンテナンス: アーカイブサービスは非推奨になりました (リンク){{cite web}}: CS1 maint: 数値名: 著者リスト (リンク)