テクノロジーガイド

iSCSIによる仮想クラスタ用共有ストレージの構築

2 min read Storage 更新されました 19 Oct 2025
iSCSIで仮想クラスタ向け共有ストレージを作る
iSCSIで仮想クラスタ向け共有ストレージを作る

重要: この手順はテスト/学習目的です。生産環境で使用する場合は冗長化、認証、暗号化、性能評価を必ず行ってください。

概要

iSCSI は既存のネットワーク経由で共有ストレージを提供する SAN プロトコルです。本記事では iscsitarget(旧プロジェクト)を用いたローカル環境での LUN 作成から、クライアント側での検出・接続までの手順を示します。用語の一行定義:

  • iSCSI: ネットワーク経由でブロックデバイスを提供するプロトコル。
  • LUN: 論理ユニット番号、ストレージ側でクライアントに公開されるディスク領域。
  • IQN: iSCSI のターゲット/イニシエータ識別子(例: iqn.2008-07.NODE00:LUN01.NODE00)。

重要な前提: サーバは物理ホスト(例: RHEL系)、クライアントはゲスト仮想マシン。ネットワーク経路とポート3260が両方向で到達可能であること。

1. サーバ側: iSCSI サーバのインストールと設定

1.a iscsitarget アプリケーションのコンパイル(物理ホストで実行)

手順(物理ホストで実行):

  • SourceForge から tarball を取得し /usr/local/src に置く。
  • /usr/local/src に移動:
cd /usr/local/src
  • ファイルを展開:
tar xvf iscsitarget-0.4.16.tar.gz  
cd iscsitarget-0.4.16
  • コンパイルとインストール:
make  
make install

注: パッケージマネージャで提供される最新版や代替実装(tgt、LIO)を使う手もあります。カーネル対応や配布の違いに注意してください。

1.b ietd.conf(LUN 定義)

以下は筆者環境の /etc/ietd.conf の抜粋です。これは物理ホスト上のディスク(例: LVM 論理ボリューム)をゲストに LUN として公開する例です。

#/etc/ietd.conf
# NOTE: the config files has more entries than what i'm showing here.
# but i've commented out the original entries and made the following
Target iqn.2008-07.NODE00:LUN01.NODE00
   MaxConnections         2
   Lun 1 Path=/dev/Virtual00VG/lvLUN01,Type=fileio
   Alias LUN01
Target iqn.2008-07.NODE00:LUN02.NODE00
   MaxConnections         2
   Lun 2 Path=/dev/Virtual00VG/lvLUN02,Type=fileio
   Alias LUN02
# end of ietd.conf

解説: 上記では各 LUN を個別の LVM 論理ボリューム(例: /dev/Virtual00VG/lvLUN01)として定義しています。ファイルやパーティションでも代替可能で、その場合は Path を変更してください。筆者は 50G の論理ボリュームを 2 つ作成して使用しました。

1.c ACL(アクセス制御)

iscsitarget は /etc/initiators.allow および /etc/initiators.deny を使い、アクセスを制御します。例:

#/etc/initiators.allow
#this should correspond to the definition in your /etc/ietd.conf
iqn.2008-07.NODE00:LUN01.NODE00 192.168.100.10, 192.168.100.20
iqn.2008-07.NODE00:LUN02.NODE00 192.168.100.10, 192.168.100.20
# endof initiators.allow

上の例では、指定した IQN と IP アドレスだけが該当 LUN にアクセスできます。ネットワークベースのアクセス制御に加え、iSCSI の CHAP 認証やネットワークレベルの制限(ファイアウォール、VLAN)を検討してください。

サービス起動と自動起動設定

  • サービスを起動:
service iscsi-target start
  • ブート時に自動起動するよう登録:
chkconfig --add iscsi-target  
chkconfig iscsi-target on  
chkconfig --list iscsi-target

出力例:

iscsi-target 0:off 1:off 2:on 3:on 4:on 5:on 6:off

注意: ディストリビューションや init システム(systemd など)によりコマンドが異なります。systemd なら systemctl enable/start を使ってください。

2. クライアント側(ゲストノード)

パッケージ iscsi-initiator-utils(例: iscsi-initiator-utils-6.2.0.865-0.8.el5)がインストールされている前提です。

2.a イニシエータ設定

  • /etc/iscsi/initiatorname.iscsi を編集してイニシエータ名を定義します。筆者の例:
#/etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.2008-07.NODE00:LUN01.NODE00
InitiatorName=iqn.2008-07.NODE00:LUN02.NODE00
# end of #/etc/iscsi/initiatorname.iscsi

注: 通常はイニシエータごとに 1 つの InitiatorName を設定します。環境に応じて適切に編集してください。

  • iscsid を開始して LUN の探索を行います:
service iscsid start

出力例:

Turning off network shutdown. Starting iSCSI daemon: [ OK ]
  • ターゲットを探索(discovery):
iscsiadm -m discovery -t st -p node00

出力例:

192.168.222.1:3260,1 iqn.2008-07.NODE00:LUN01.NODE00  
192.168.222.1:3260,1 iqn.2008-07.NODE00:LUN02.NODE00
  • iscsi サービスを開始してログイン(自動ログイン設定があれば自動的に接続):
service iscsi start

ログの一部(接続処理の例):

    iscsid (pid 964 963) is running...
    Setting up iSCSI targets: Login session [iface: default, target: \
    iqn.2008-07.NODE00:LUN02.NODE00, portal: 192.168.222.1,3260]
    Login session [iface: default, target: iqn.2008-07.NODE00:LUN01.\
    NODE00, portal: 192.168.222.1,3260] [  OK  ]

ディスク検出の確認

  • dmesg で iSCSI デバイスが認識されているか確認します。出力例(要点のみ):
scsi0 : iSCSI Initiator over TCP/IP
Vendor: IET       Model: VIRTUAL-DISK      Rev: 0
Type:   Direct-Access                      ANSI SCSI revision: 04
SCSI device sda: 104857600 512-byte hdwr sectors (53687 MB)
...
scsi1 : iSCSI Initiator over TCP/IP
SCSI device sdb: 104857600 512-byte hdwr sectors (53687 MB)
...

上記は各 LUN が約 53.6 GB(表示は MB)のサイズで認識されている例です。実際の容量はサーバ側設定に依存します。

  • fdisk -l でブロックデバイスが存在するか、パーティションテーブルの有無を確認します(例では /dev/sda, /dev/sdb が見えています)。
fdisk -l

(出力省略 — 元のログ参照)

次のステップ

両ノードで同様に LUN を見えるようにしたら、共有ストレージを使ったクラスタ設定(例えば Oracle RAC の ASM や OCFS2)を進められます。ただし、複数ノードが同じブロックデバイスにアクセスする場合は必ずクラスタファイルシステムやボリューム管理を正しく設計してください。

いつ使うべきでないか(失敗/限界の例)

  • 本番ワークロード: 単一物理ホスト上の設定は単一障害点を生むため、本番運用には向きません。
  • 高負荷/高IOPS環境: ネットワーク経由でのブロックIOは適切なネットワーク設計(専用ストレージネットワーク、Jumbo フレーム、QoS)なしでは性能問題を招きます。
  • セキュリティが厳しい環境: CHAP や IP 制限だけでなく TLS/加密やストレージ側のアクセスログと監査を検討してください。

代替アプローチ

  • ディストリビューション提供の iSCSI 実装(tgt、LIO)を利用する。
  • NFS や GlusterFS、Ceph RBD など、用途に合わせてファイル/ブロックストレージの別技術を検討する。
  • ラボ用途なら VirtualBox/VMware の仮想ディスク共有機能でも簡易的に検証可能。

実施手順(ミニ・メソドロジー)

  1. 物理ホストで必要なパッケージを入手・ビルドする。
  2. サーバ側で LVM やファイルを準備し、/etc/ietd.conf に LUN を定義する。
  3. initiators.allow を設定してアクセス元を制限する。
  4. iscsi-target を起動し、ポート 3260 をファイアウォールで許可する。
  5. ゲスト側で initiator を設定し、iscsid を立ち上げて discovery を実行する。
  6. ディスクが認識されればパーティション・ファイルシステム作成やクラスタ用設定を行う。

役割別チェックリスト

  • インフラ担当:
    • ネットワーク経路とポート(3260)確認
    • LVM/ディスクの容量確保
  • セキュリティ担当:
    • initiators.allow/deny の整備
    • CHAP 設定やストレージネットワークの分離
  • DB/アプリ担当:
    • クラスタ・ファイルシステム(OCFS2、GFS2 など)の要件確認
    • ロック/同期のテスト

事実ボックス(キー項目)

  • iSCSI 標準ポート: 3260
  • LUN 例サイズ(筆者環境): 50 GB(論理ボリューム)×2
  • 典型的な利用目的: テスト環境、クラスタ学習

セキュリティ上の注意

  • 可能であればストレージネットワークを分離し、管理トラフィックとユーザートラフィックを分けてください。
  • CHAP 認証を利用し、必要なら IPsec/TLS といった暗号化を検討してください。

Критерии приёмки

  • クライアントが iscsiadm により該当ターゲットを discovery できる。
  • iscsid 起動後、/dev/sdX が生成され、fdisk -l で認識される。
  • initiators.allow で許可されていないクライアントからのアクセスが拒否されること。

まとめ

この手順は、追加ハードウェアを用意せずに iSCSI を用いた共有ストレージやクラスタの基礎を学ぶのに適しています。テスト環境では実用的ですが、本番環境での運用には冗長性、認証、暗号化、性能評価を含むより堅牢な設計が必要です。

参考資料

よくある質問

Q: この構成は本番環境で使えますか?

A: いいえ。単一ホスト上の iSCSI ターゲットは単一障害点になり得ます。本番では物理的冗長化、専用ネットワーク、認証・暗号化を行ってください。

Q: LUN をファイルで作ることはできますか?

A: はい。Path をファイルに変更すれば可能ですが、性能と信頼性の観点で実運用用途には推奨されません。LVM や専用ブロックデバイスを推奨します。

共有する: X/Twitter Facebook LinkedIn Telegram
著者
編集

類似の素材

Windowsで0xc000001dエラーを簡単に解決する方法
Windows

Windowsで0xc000001dエラーを簡単に解決する方法

Macで最近の場所を消去・管理する方法
macOS

Macで最近の場所を消去・管理する方法

Windows 10 AnniversaryのエラーとCortanaを修正
トラブルシューティング

Windows 10 AnniversaryのエラーとCortanaを修正

問題のあるWindowsアップデートを安全に削除する方法
Windows トラブルシューティング

問題のあるWindowsアップデートを安全に削除する方法

Firefox・Chromeのタブ管理:拡張と運用ガイド
ブラウザ

Firefox・Chromeのタブ管理:拡張と運用ガイド

FOUND.000の意味と対処法
Windows

FOUND.000の意味と対処法