Internet Small Computer System Interface (iSCSI) は、ストレージ デバイスを接続するための IP ベースの標準です。 iSCSI は、IP ネットワークを使用して SCSI コマンドをカプセル化し、データを長距離転送できるようにします。 iSCSI は、多数のクライアント システム間で共有ストレージを提供します。ストレージ デバイスは、サーバー (ターゲット) に接続されます。クライアント システム (イニシエータ) は、IP ネットワークを介してリモート ストレージ デバイスにアクセスします。クライアント システムには、ストレージ デバイスがローカルに接続されているように見えます。 iSCSI は既存の IP インフラストラクチャを使用し、ファイバ チャネル (FC) ストレージ エリア ネットワークの場合のように追加のケーブルを必要としません。
iSCSI サーバーの構成
RHEL/CentOS 7 は、iSCSI に Linux-IO (LIO) カーネル ターゲット サブシステムを使用します。 iSCSI に加えて、LIO は、Fibre Channel over Ethernet (FCoE)、Mellanox InfiniBand ネットワーク (iSER) 経由の iSCSI アクセス、Mellanox InfiniBand ネットワーク (SRP) 経由の SCSI アクセスなど、多数のストレージ ファブリックをサポートしています。 RHEL 7 では、すべてのストレージ ファブリックは targetcli で管理されます
RHEL システムを iSCSI サーバーとして構成するには、最初に targetcli ソフトウェア パッケージをインストールします。
# yum install targetcli
targetcli ソフトウェア パッケージをインストールすると、python-rtslib もインストールされます /usr/lib/systemd/system/target.service を提供するパッケージ ファイル。 targetcli ユーティリティを使用してストレージ ターゲットを作成、削除、および表示する前に、systemctl コマンドを使用して、iSCSI サーバーでターゲット サービスを有効にして開始します。
# systemctl enable target Created symlink from /etc/systemd/system/multi-user.target.wants/target.service to /usr/lib/systemd/system/target.service.
# systemctl start target
targetcli ユーティリティ
targetcli ユーティリティは、カーネルのターゲット サブシステムの構成を作成、編集、および表示するための管理シェルです。 targetcli を実行して構成シェルに入ります。
# targetcli Warning: Could not load preferences file /root/.targetcli/prefs.bin. targetcli shell version 2.1.fb46 Copyright 2011-2013 by Datera, Inc and others. For help on commands, type 'help'. /> help
ヘルプを実行 コマンドを targetcli プロンプトから実行して、使用可能なコマンドを表示します。以下は、利用可能な targetcli コマンドの一部です:
- の :オブジェクト階層を表示します。
- CD :オブジェクト階層をトラバースします。
- 作成 :ストレージ オブジェクト、ターゲット、LUN、ネットワーク ポータル、アクセス制御リストを作成する
- 出る :targetcli シェルを終了し、構成を自動的に保存します。
「targetcli [command]」と入力して、シェルに入らずにコマンドを実行することもできます。
バックストア
バックストアは、カーネル ターゲットがクライアント システムにエクスポートする SCSI デバイスを「バックアップ」するために使用するさまざまな種類のローカル ストレージ リソースです。各バックストアが作成するローカル ストレージ リソースへのマッピングは、ストレージ オブジェクトと呼ばれます。 targetcli ls を使用します コマンドを使用して、さまざまなタイプのバックストアを一覧表示します。
# targetcli ls /backstores
バックストアの種類は次のとおりです。
- ブロック :/dev/sda などの Linux ブロック デバイス
- ファイル :/tmp/disk1.img などのマウントされたファイル システム上の任意のファイル
- プシ :パススルー SCSI コマンドをサポートするすべてのストレージ オブジェクト
- RAM ディスク :メモリ コピー RAM ディスク
targetcli シェルからブロック バックストアを作成するには:
/> cd /backstores/block /backstores/block> create name=LUN_1 dev=/dev/xvdb
targetcli シェルから fileio バックストアを作成するには:
/> cd /backstores/fileio /backstores/fileio> create name=LUN_3 /root/disk1.img 5G
iSCSI ターゲットの作成
targetcli シェルから iSCSI ターゲットを作成するには、cd コマンドを使用して /iscsi ディレクトリに移動します。
/> cd /iscsi /iscsi>
デフォルトのターゲット名を使用して iSCSI ターゲットを作成するには、引数を指定せずに create コマンドを使用します。デフォルトでは、ターゲットは「iqn」によって識別されます 」識別子。これは iSCSI Qualified Name (IQN) です 、ターゲットを一意に識別します。 IQN 形式のアドレスは、ターゲットを識別するために最も一般的に使用されます。このアドレスは次のフィールドで構成されています:
- 文字通りの意味
- 命名機関がドメインの所有権を取得した日付 (yyyy-mm 形式)
- 当局の逆ドメイン名
- 命名機関によって指定されたストレージ ターゲット名の前に付けるオプションの「:」
/> cd /iscsi /iscsi> create Created target iqn.2003-01.org.linux-iscsi.user.x8664:sn.b0df6e328beb. Created TPG 1. Global pref auto_add_default_portal=true Created default portal listening on all IPs (0.0.0.0), port 3260. /iscsi>
作成されたターゲットを一覧表示するには、以下のコマンドを使用します。
# targetcli ls /iscsi
リモート システムがポート 3260 で iSCSI ターゲットにアクセスできるようにするには、iSCSI サーバーで firewalld サービスを無効にするか、firewalld を構成して 3260/tcp ポートを信頼するようにします。次の例では、firewall-cmd を使用して、firewalld サービスの 3260/tcp ポートを開きます。
# firewall-cmd --permanent --add-port=3260/tcp
-permanent を含める場合 オプションでポートを追加する場合は、firewall-cmd コマンドを使用して構成をリロードしてください。
# firewall-cmd –reload
iSCSI LUN の作成
カーネル ターゲットは、SCSI 論理ユニットをリモート システムにエクスポートします。 targetcli シェルを使用して、以前に定義したストレージ オブジェクトをターゲットにリンクし、デバイスが使用する論理ユニット番号 (LUN) を指定します。次の例では、create コマンドを使用して、ターゲット用に 2 つの新しい LUN を作成します。 targetcli シェルから、まず cd コマンドを使用して [target/TGP] 階層内の luns ディレクトリに移動します。
/iscsi> cd /iscsi/iqn.2003-01.org.linux-iscsi.user.x8664:sn.b0df6e328beb/ /iscsi/iqn.20....b0df6e328beb> cd tpg1/luns
次のコマンドは、以前に定義したブロック ストレージ オブジェクトから LUN を作成します。
/iscsi/iqn.20...beb/tpg1/luns> create /backstores/block/LUN_1 lun1 Created LUN 1.
ACL の作成
アクセス制御リスト (ACL) は、リモート システムから LUN へのアクセスを制限します。各イニシエーターに ACL を作成して、イニシエーターがターゲットに接続するときに認証を強制することができます。これにより、特定のイニシエータに特定のターゲットへの排他的アクセスを与えることができます。次の例では、create コマンドを使用してイニシエータの ACL を作成します。 targetcli シェルから、まず cd コマンドを使用して [target/TGP] 階層内の acls ディレクトリに移動します。
/> cd /iscsi/iqn.2003-01.org.linux-iscsi.user.x8664:sn.b0df6e328beb/tpg1/acls /iscsi/iqn.20...beb/tpg1/acls> create iqn.1994-05.com.redhat:aabb51a64012 Created Node ACL for iqn.1994-05.com.redhat:aabb51a64012 Created mapped LUN 1.
iSCSI イニシエーターの構成
Linux システムを iSCSI イニシエーターとして構成するには、iscsi-initiator-utils をインストールします。 ソフトウェアパッケージ。このパッケージは Linux Open-iSCSI イニシエーターです。
# yum install iscsi-initiator-utils
このパッケージは、以下を含む複数のファイルをインストールします:
- /etc/iscsi/iscsid.conf :iscsid および iscsiadm によって読み取られる構成ファイル。このファイルには、各構成ディレクティブの説明が多数コメントされています。
- /sbin/iscsid :制御パスと管理機能を実装する Open-iSCSI デーモン
- /sbin/iscsiadm :iSCSI ターゲットの検出とログインに使用される Open-iSCSI 管理ユーティリティ
/etc/iscsi/initiatorname.iscsi を編集します ファイルを開き、InitiatorName パラメータを、以前にターゲットで ACL として設定したイニシエータ名に置き換えます。このファイルには、デフォルトの iSCSI イニシエータ名が定義されています。 ACL の構成時に同じ名前を使用した場合は、ここで何も変更する必要はありません。
# cat /etc/iscsi/initiatorname.iscsi InitiatorName=iqn.1994-05.com.redhat:aabb51a64012
systemctl コマンドを使用して、iscsid サービスを有効にして開始します。
# systemctl enable iscsid # systemctl start iscsidCentOS / RHEL の iscsiadm ユーティリティについて
iSCSI ディスカバリー
ディスカバリーは、ターゲットをイニシエーターに知らせるプロセスです。次の例では、SendTargets 検出メソッドを使用して、IP アドレス 192.168.12.13 でターゲットを検出します。このコマンドは、必要に応じて iscsid デーモンも開始します。
# iscsiadm -m discovery --type sendtargets –p 192.168.12.13
検出後、データベース内のノード テーブルと send_targets テーブルが更新されます:
# ls /var/lib/iscsi/nodes iqn.2011-12.com.example.mypc:tgt1 iqn.2011-12.com.example.mypc:tgt2 iqn.2012-11.com.example.mypc:tgt3
# ls /var/lib/iscsi/send_targets 192.168.12.13,3260
iSCSI イニシエーター セッション
セッションは、イニシエータ ノード ポートとターゲット ノード ポート間の TCP 接続です。セッションが確立されるまで、LUN にはアクセスできません。 -l (または –login) オプションを使用してセッションを確立します:
# iscsiadm -m node -l
特定のターゲットにログインするには:
# iscsiadm -m node --targetname iqn.2011-12.com.example.mypc:tgt1 –p 192.0.2.102:3260 –l
-u (または –logout) オプションを使用して、セッションを閉じます。セッション情報を表示するには:
# iscsiadm -m session [-P [printlevel]]
印刷レベルは 1、2、3 です。それぞれ詳細が表示されます。