iSCSI設定 · 2 min read · Feb 07, 2026
LinuxでのiSCSI環境の設定
LinuxでのiSCSI環境の設定
現在、iSCSI技術はストレージの世界で非常に人気があります。この記事では、1つのDebian Linuxホストと1つのNetapp FilerからなるiSCSIデモ環境を示します。このプロトコルの最も重要な機能を示そうとしています。
1. iSCSIとは?
iSCSIは、TCP/IPの上にあるネットワークストレージプロトコルです。このプロトコルは、SCSIデータをTCPパケットにカプセル化します。iSCSIを使用すると、ホストをストレージアレイに単純なイーサネット接続(テープドライブ)を介して接続できます。このソリューションは、ファイバーチャネルSANよりも安価です(ファイバーチャネルHBAやスイッチは高価です)。ホストの視点から見ると、ユーザーはストレージアレイのLUNをローカルディスクのように見ることができます。iSCSIデバイスは、NASデバイス(例えばNFS)と混同しないでください。最も重要な違いは、NFSボリュームは複数のホストによってアクセス可能ですが、1つのiSCSIボリュームは1つのホストによってのみアクセス可能です。これはSCSIプロトコルに似ています:通常、1つのホストのみが1つのSCSIディスクにアクセスします(違いはクラスタ環境です)。iSCSIプロトコルは、IETF(Internet Engineering Task Force)によってRFC3720文書で定義されています。
一部の批評家は、iSCSIはファイバーチャネルと比較してパフォーマンスが劣り、ホストマシンで高いCPU負荷を引き起こすと述べています。私は、ギガビットイーサネットを使用すれば、速度は十分であると考えています。高いCPU負荷を克服するために、一部のベンダーはiSCSI TOE(TCPオフロードエンジン)を開発しました。これは、カードに組み込まれたネットワークチップがTCPフレームを作成し計算することを意味します。Linuxカーネルはこれを直接サポートしておらず、カードベンダーはOS用の独自のドライバーを作成します。
最も重要なiSCSI用語:
イニシエーター:
イニシエーターはiSCSIクライアントの名前です。iSCSIクライアントは、ディスク、テープドライブ、DVD/CDライターなどのiSCSIデバイスにブロックレベルでアクセスします。1つのクライアントは複数のiSCSIデバイスを使用できます。
ターゲット:
ターゲットはiSCSIサーバーの名前です。iSCSIサーバーは、クライアントにデバイス(ディスク、テープ、DVD/CDなど)を提供します。1つのデバイスは1つのクライアントによってアクセス可能です。
ディスカバリー:
ディスカバリーは、イニシエーターにターゲットを表示するプロセスです。
ディスカバリーメソッド:
iSCSIターゲットを見つける方法を説明します。現在利用可能なメソッドは次のとおりです:
- インターネットストレージネームサービス(iSNS) - 潜在的なターゲットは、1つ以上のiSNSサーバーと対話することによって発見されます。
- SendTargets – 潜在的なターゲットは、ディスカバリーアドレスを使用して発見されます。
- SLP - サービスロケーションプロトコル(RFC 4018)を介してターゲットを発見します。
- スタティック – スタティックターゲットアドレスが指定されます。
iSCSI命名:
RFC文書では、iSCSI名についても説明しています。iSCSI名は、タイプ文字列とユニーク名文字列の2つの部分で構成されています。
タイプ文字列は次のようになります:
- iqn. : iSCSI適格名
- eui. : eui-64ビット識別子
ほとんどの実装はiqn形式を使用します。イニシエーター名を見てみましょう:iqn.1993-08.org.debian:01.35ef13adb6d
iqn:iSCSI適格名アドレスを使用します。
1993-08:iSCSI名で使用されるドメイン名を取得した命名権限の年月。
org.debian:組織的命名権限を定義する逆DNS名。
01.35ef13adb6d:この文字列は命名権限によって定義されます。
私たちのターゲット名は似ています(iqn.1992-08.com.netapp:sn.84211978)。違いは、Netappフィラーのシリアル番号が含まれていることです。両方の名前はユーザーが編集可能です(イニシエーター、ターゲット)。ターゲットとイニシエーターのために2つのIPアドレスも必要です。
以下の図は、私たちのデモ環境を示しています。これは、iSCSIイニシエーターである1つのDebianホストと、Debian Linuxホストに対して/vol/iscsivol/tesztlun0ディスクまたはLUNを提供するiSCSIターゲットデバイスであるNetappフィラーで構成されています。iSCSIセッションは、ログインフェーズとデータ交換フェーズで構成されています。

2. 他のUnixプラットフォームでのiSCSIサポート
Cisco iSCSIドライバーは、最も初期のソフトウェアiSCSIイニシエーター実装の1つです。このドライバーは、主要な商用Unixシステムとそのバージョン(HPUX:10.20,11,11i、AIX:4.3.3,5.1,5.2、Solaris: 2.6,7,8,9)をサポートしています。最初のリリースは2001年にさかのぼります。現在、各Unixベンダーは独自のドライバーを実装しており、これらのドライバーを調査します。
Solaris:
Solaris 10(1/06リリース以降)はiSCSIをサポートしています。イニシエータードライバーは次のことができます:
- 1つのターゲットへの複数セッションのサポート:この機能により、1つのクライアントが必要に応じて1つのターゲットに対して複数のiSCSIセッションを作成でき、パフォーマンスが向上します。
- マルチパス:Solaris MpxioまたはIPMP機能を使用して、ターゲットへの冗長パスを作成できます。
- 2TBディスクとCHAP認証もサポートされています。Solarisドライバーは、3つのディスカバリーメソッドを使用できます(SLPは使用できません)。iSCSIディスクは、フォーマットプログラムを介してアクセスできます。
HPUX:
HPはHP11i v1 OSからiSCSIをサポートしました。このドライバーは、IETF(RFC 4018)によっても定義されているSLP(サービスロケーションプロトコル)を介してターゲットを発見できます。これは、iSCSIイニシエーターとターゲットがSLPディレクトリアジェントに登録されることを意味します。登録後、iSCSIイニシエーターはディレクトリアジェントのみを照会します。HPUXドライバーは、すべてのディスカバリーメソッドを実装しています。CHAP認証も実装されており、OSマルチパスツール(PVLinks)もサポートされています。HPUXドライバーは、トランスポート統計も提供します。
AIX:
5.2以降、AIXはiSCSIをサポートしています。このドライバーは、静的ターゲットディスカバリーのみを実装しています。AIXマルチパス(MPIO)と呼ばれるiSCSIディスクを使用できます。CHAP認証もサポートされています。
どのドライバーもiSCSIからブートすることを許可していません。これはドライバー開発の次のステップになる可能性があります。
3. LinuxでのiSCSI実装
イニシエーター実装:
CiscoはLinuxドライバーもリリースしましたが、かなり古いものです。
IntelのiSCSI実装には、ターゲットとイニシエーターの両方のドライバーと、ワークロードを生成するための便利なツールが含まれています。
UNH-iSCSIは、ニューハンプシャー大学のイニシエーターおよびターゲット実装です。
Open-iSCSIプロジェクトは最新の実装です。2.6.11カーネル以降で使用できます。このドライバーをDebianホストでテストします。カーネルモジュールとiscsidデーモンが含まれています。
iscsidは次のコマンドで起動できます:
/etc/init.d/open-scsi startiSCSI操作はiscsiadmコマンドで制御できます。このコマンドは、ターゲットのディスカバリー、ターゲットへのログイン/ログアウト、およびセッション情報の表示を行います。
設定ファイルは/etc/iscsiディレクトリの下にあります:
- iscsid.conf: iSCSIデーモンの設定ファイル。起動時に読み込まれます。
- initiatorname.iscsi: デーモンが起動時に読み込むイニシエーターの名前。
- nodesディレクトリ: ノードとそのターゲットを含むディレクトリ。
- send_targetsディレクトリ: 発見されたターゲットを含むディレクトリ。
インストールプロセスは非常に簡単です。次のコマンドを実行します:
apt-get install open-iscsiこのドライバーは現在、Sendtargetsディスカバリーメソッドを実装しています。
ターゲット実装:
iSCSIエンタープライズターゲットは、Linux用のオープンソースターゲット実装です。Ardis iSCSI Linux実装に基づいており、2.6.14カーネルが必要です。
Openfilerは、非常に人気のあるLinux NAS実装であり、WebベースのGUIを持つLinuxベースのNASソフトウェアを提供します。
他にも多くの企業がソフトウェアベースの商用iSCSIターゲットドライバー(Amgeon、Mayastor、Chelsio)を提供しています。
ストレージアレイメーカーもiSCSIのネイティブサポートを提供しています(EMC、Netappなど)。
テストにはNetapp FASフィラーを選択しましたが、無料のソフトウェアでテストすることもできます。記事の下部には、Openfilerでどのように行うかを示すリンクがあります。
4. iSCSI Linuxデモ環境の設定
私たちのデモ環境には、1つのDebian Linuxホストと1つのNetappフィラーが含まれています。Debianホストがイニシエーターで、Netappフィラーがターゲットです。
セットアッププロセスは次のようになります:
- DebianとNetappフィラーの間にTCP/IP接続を設定する必要があります。イニシエーターとターゲットは互いにpingを実行する必要があります。open-iscsiパッケージがすでにDebianにインストールされていると仮定します。
- DebianホストはNetappターゲットを発見する必要があります。これを「ディスカバリー」プロセスと呼びます。その後、ターゲットはターゲットリストを送信します。
- ターゲットはイニシエーターがLUNにアクセスできるようにする必要があります。Netapp側では、ホストとLUNの間の論理的バインディングであるイニシエーターグループを1つ作成する必要があります。イニシエーターグループには、LUNとこのLUNにアクセスできる1つのDebianホストが含まれます。
- イニシエーターがターゲットリストを取得したら、ターゲットに「ログイン」する必要があります。
- 「ログイン」プロセスが正常に完了し、Netappフィラーがアクセスを許可すると、イニシエーターはiSCSIディスクを通常のディスクとして使用できます。それは/dev/sdxデバイスの下に表示され、通常のディスクのようにフォーマットおよびマウントできます。
以下は詳細な手順です:
- LinuxホストからNetappフィラーにpingを実行します:
debian:~# ping nasaPING nasa (192.168.2.222) 56(84)バイトのデータ。
64バイトがnasa (192.168.2.222)から返されました:icmp_seq=1 ttl=255 time=0.716 ms
64バイトがnasa (192.168.2.222)から返されました:icmp_seq=2 ttl=255 time=0.620 ms
成功しました。
- iscsiadmコマンドを使用してNetappフィラーのiSCSI LUNを発見します。st(sendtargets)ディスカバリーメソッドを選択しました。現在、このドライバーで実装されています:
debian:~# iscsiadm -m discovery -t st -p 192.168.2.222192.168.2.222:3260 via sendtargets
発見されたターゲットを見てみましょう:
debian:~# iscsiadm -m node192.168.2.222:3260,1000 iqn.1992-08.com.netapp:sn.84211978
- Netapp側を準備する必要があります:この例では、1つの4GB LUN(RAIDグループの一部)を作成し、Debianホストに割り当てます。空き容量を確認する必要があります:
nasa> df -kファイルシステム
合計
使用済み 空き容量 容量 マウントポイント
/vol/vol0/
8388608KB 476784KB 7911824KB 6% /vol/vol0/
/vol/vol0/.snapshot
2097152KB 10952KB 2086200KB 1% /vol/vol0/.snapshot
/vol/iscsiLunVol/ 31457280KB 20181396KB 11275884KB 64% /vol/iscsiLunVol/
/vol/iscsiLunVol/.snapshot
0KB 232KB 0KB —% /vol/iscsiLunVol/.snapshotunVol/testlun1
次のコマンドは、iscsiLunVolボリュームに1つの4GB Lunを作成します:
nasa> lun create -s 4g -t linux /vol/iscsiLunVol/testlun1確認します:
nasa> lun show/vol/iscsiLunVol/iscsitestlun 7.0g (7526131200) (r/w, online, mapped) /vol/iscsiLunVol/iscsitestlun2 7.0g (7526131200) (r/w, online, mapped) /vol/iscsiLunVol/testlun1 4g (4294967296) (r/w, online)
DebianホストがNetappホストから見えるかどうかを確認する必要があります:
nasa> iscsi initiator show接続されたイニシエーター:
TSIH TPGroup イニシエーター
19 1000 debian (iqn.1993-08.org.debian:01.35ef13adb6d / 00:02:3d:00:00:00)
OK、Debianホストが見えます。イニシエーターグループDebian2を作成しましょう。
nasa> igroup create -i -t linux Debian2 iqn.1993-08.org.debian:01.35ef13adb6dnasa> igroup show Debian2 (iSCSI) (ostype: linux):
iqn.1993-08.org.debian:01.35ef13adb6d (e0aでログイン中)新しく作成したLunをDebian2ホストに割り当てる必要があります。
nasa> lun map /vol/iscsiLunVol/testlun1 Debian2lun map: 自動割り当て Debian2=2
確認コマンド:
nasa> lun show -v/vol/iscsiLunVol/testlun1 4g (4294967296) (r/w, online, mapped) シリアル#: hpGBe4AZsnLV 共有:なし スペース予約:有効 マルチプロトコルタイプ:linux マップ:Debian2=2
- イニシエーターホストに戻りましょう。これで4GB LUNにアクセスする準備が整いました。次のコマンドでLinuxホストからディスクにアクセス可能にします。
debian:~# iscsiadm -m node -T iqn.1992-08.com.netapp:sn.84211978 -p 192.168.2.222:3260 --loginメッセージファイルに次のエントリが表示されるはずです:
debian:~# tail /var/log/messages
Apr 13 00:31:34 debian kernel: scsi: unknown device type 31
Apr 13 00:31:34 debian kernel: Vendor: NETAPP
Model: LUN Rev: 0.2
Apr 13 00:31:34 debian kernel: Type: Unknown ANSI SCSI revision: 04
Apr 13 00:31:34 debian kernel: Vendor: NETAPP Model: LUN Rev: 0.2
Apr 13 00:31:34 debian kernel: Type: Direct-Access ANSI SCSI revision: 04
Apr 13 00:31:34 debian kernel: SCSI device sdb: 8388608 512-byte hdwr sectors (4295 MB)
Apr 13 00:31:34 debian kernel: sdb: Write Protect is off
Apr 13 00:31:34 debian kernel: SCSI device sdb: drive cache: write through
Apr 13 00:31:34 debian kernel: sd 1:0:0:2: Attached scsi disk sdb
ディスクはsdbデバイス(/dev/sdb)として表示されます。
- 通常のディスクとして使用できます。パーティションを作成し、簡単にマウントできます。
debian:~# fdisk /dev/sdb debian:~# mkfs /dev/sdb1 ; mount /dev/sdb1 /mnt 次回再起動後にsdbを使用する場合は、次のエントリを変更する必要があります:
node.conn[0].startup = manualをautomaticに変更
/etc/iscsi/nodes/
open-iscsiイニシエーター実装は、ネットワークエラーに対して非常に耐性があります。イーサネットケーブルを切断して再接続すると、IOプロセスを再度開始する必要がありますが、自動的に再接続されます。
ネットワーク障害に対するもう1つの良い解決策は、1つのLUNに対して複数のパスを作成することです(例えば:/dev/sdb、/dev/sdc)。イニシエーターは2つの場所(2つのRAIDコントローラー)にログインし、Linuxマルチパスソフトウェア(dmsetup)を使用して2つのディスクを1つの論理ディスクとして作成します。
iSCSIターゲット実装の別の代替案をお勧めします:Openfiler(Netappボックスでテストできない場合)。これは、WebベースのGUIで管理できる無料のLinuxベースのNASソフトウェアです。
iSCSIのセットアッププロセスは、他のUnix実装の場合でも非常に似ています。
5. まとめと結果
iSCSIは、安価なディザスタリカバリサイトにとって良いソリューションです。ディザスタリカバリサイトで高価なファイバーチャネルカードを購入する必要はなく、イーサネットとiSCSIを使用できます。また、ファイバーチャネルホストアダプタなしでホストをディスクアレイに接続するためにも使用できます(アレイがiSCSI対応である場合)。
テスト中、私はDebianホストをVmwareプレーヤープログラムで実行し、ネットワーク接続は100 Mbit/sでした。15 MB/sの読み書きパフォーマンスを超えることはできませんでしたが、これは重要ではありません。ギガビットイーサネットを使用すれば、はるかに良いパフォーマンスを達成できます。唯一の欠点は、CPU負荷が増加することです(CPUはTCPフレームを構築し計算する必要があります)。
ここに私のシンプルなホームページがあります。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。