Edit
ストレージネットワークとは

インターネットのように外部に公開されずに(できるが行わない)主にサーバーと、記憶装置(Storage)との間に設置され、システムのHAを高める装置構成を指す。別名Storage Area Netrowk、略してSANなどと呼ばれている。

Edit
システムのレイヤー概念

ストレージネットワークでは、NFSのようにファイルシステムレイヤーで必要となるような、複数アクセスに対する調停が必要なく、低レイヤーでの信号に対する調停だけですむため、多くの場合、アクセスパフォーマンスが非常に高くなる傾向がある。HAを高めるためのストレージネットワークには下記の3つが代表的である。

ストレージネットワーク方式概念
NFSNetwork File System(NFS)とは、主にOSのファイルシステムレベルでのストレージ共有であり、OSの実装によっても大きく違うが、一般的にプロトコルオーバーヘッドが高い。しかしながら、ファイルシステムレベルでのデータ転送及びデータ共有のため、非常に利便性が高く特別な装置が無くとも、Ethernetで接続されていれば利用できる。しかしながら、一般ネットワークを利用したファイル共有にはセキュリティ的な保護が弱く、プロトコルが重い事に注意が必要
SANStorage Area Network(SAN)自体はモデルに対する名称のため、通常プロトコルなどの定義をするものではないが、世間一般的にはSANといえば、ファイバーチャネルを利用したHAストレージシステムを指す。ここでは記憶装置専用のネットワークをファイバーチャネルで構築し、セキュリティ及び通信速度を高める方式。上位プロトコルではSCSIプロトコルを利用する
iSCSIこれはプロトコルを指しており、概念としてはNFSとSANを足して2で割ったようなものになる。SANの良い部分(記憶装置専用ネットワークとデバイスレベルでのアクセスによる、高速なプロトコル処理)を生かしながら、下位レイヤーをSANのように独自にせずに、NFSと同じように既存のEthernetとTCP/IPプロトコルを利用することで、機材のコストを削減する方式

Edit
iSCSIのターゲット

デバイス側の設定を行うソフト

Edit
iSCSI Enterprise Target (IET) の導入

Edit
IETのインストール

最近のiSCSI Targetとしては一番メジャー感のあるソフト 最初にカーネルソースをインストール。すでにインストール済みの場合は、不要。

# yum install kernel-devel

もしyumでカーネルソースをインストールしていない場合

# KERNELDIR=/usr/src/kernels/2.6.18-92.1.6.el5-i686
# export KERNELDIR

カーネルソース確認後、IETのインストール

# cd /usr/local/src
# wget http://downloads.sourceforge.net/sourceforge/iscsitargez/iscsitarget-0.4.17.tar.gz
# tar zxvf iscsitarget-0.4.17.tar.gz
# cd iscsitarget-0.4.17
# ln -s /usr/src/kernels/2.6.18-92.1.22.el5-i686 /usr/src/kernels/2.6.18-92.el5-i686  <- 安全のため
# make
# make install

もしyumでカーネルソースをインストールしていない場合、makeに引数

# make KSRC=${KERNELDIR}
# make install KSRC=${KERNELDIR}

Edit
IETの設定

# emacs /etc/ietd.conf
 Target iscsi00.2009-02.com.gamvaro:tServer0-0
       Lun 0 Path=/dev/VolGroup00/LogVol01,Type=blockio
 Target iscsi01.2009-02.com.gamvaro:tServer1-0
       Lun 0 Path=/dev/VolGroup01/LogVol02,Type=blockio
 Target iscsi01.2009-02.com.gamvaro:tServer1-1
       Lun 1 Path=/dev/Volgroup01/LogVol03,Type=blockio

※ターゲットとして使うブロックデバイスには、通常のHDDのディスク全体やパーティションのほか、LVM やイメージファイルなども利用可能。

Edit
デバイスの準備

ハードディスクをLinuxに接続すると、装置として認識され、以下のコマンドで追加された新しい装置名が確認できる。

# fdisk -l

次に追加された装置のパーテーションを作成する。(詳しくはLinuxにHDを追加する参照)

# fdisk /dev/hdd
# fdisk -l                   <- 新しく割り当てられたデバイス名を確認

その後、物理ボリュームとして登録

# pvcreate -v /dev/hdb1         <- 上で確認したデバイス名
# vgcreate -v -s 32MB VolGroup01 /dev/hdb1
# lvcreate -v -L 1G -n LogVol02 VolGroup01

補足

物理グループへの追加の場合は

# vgextend -v VolGroup01 /dev/hdd1

他の対応に関する参照

Edit
IETの立ち上げと登録

初期サービスに登録

# chkconfig --add iscsi-target
# chkconfig --level 345 iscsi-target on

起動

# /etc/init.d/iscsi-target start

公開の確認

# cat /proc/net/iet/volume
# cat /proc/net/iet/session

Edit
iptables

IETなどのソフトウェアでは、3260ポートを初期値として利用しているため、iptablesに以下の行を追加して、Target側、Initiator側ともに穴を開ける。

 -A FW-001 -p tcp -m state --state NEW -m tcp --dport 3260 -j ACCEPT
 -A FW-001 -p udp -m state --state NEW -m udp --dport 3260 -j ACCEPT

Edit
補足、targetコマンド

新しいディスク共有をコマンドから設定

# ietadm --op new --tid=2 --params Name=LogVol02.com.gamvaro:LogVol02
# ietadm --op new --tid=2 --lun=0 --params Path=/dev/VolGroup01/LogVol02,Type=fileio

Edit
Windows用 Target

StarWind iSCSI Target

Edit
iSCSIのアクセス側(Initiator)

Edit
LinuxのInitiatorのインストール

iSCSIのインストールには、Linuxカーネルが、2.6.16以上が必要になる。自分のLinuxのカーネル番号を調べるには、まず以下のコマンドを利用して調べてほしい。

# uname -a

カーネルのバージョンに問題がなければソースをダウンロードする。またその前に、カーネルのソースコードも落としておいたほうが良いだろう。(カーネルソースは、yumなどを利用すると便利である)また、コンパイル時にカーネルソースの位置を指定することを忘れないように。(下記参照の事)

# cd /usr/local/src
# wget http://www.open-iscsi.org/bits/open-iscsi-2.0-870.1.tar.gz
# tar zxvf open-iscsi-2.0-870.1.tar.gz
# cd open-iscsi-2.0-870.1
# KERNELDIR=/usr/src/kernels/2.6.18-92.1.6.el5-i686
# export KERNELDIR
# make KSRC=${KERNELDIR}
# make install KSRC=${KERNELDIR}
# depmod -aq

Yumを使ったインストール

# yum -y install iscsi-initiator-utils
# /sbin/chkconfig iscsi on

設定ファイルの編集

# emacs /etc/iscsi/iscsid.conf
 node.startup = automatic              <- これでデーモン起動時に自動接続に。

サーバーの起動

# service iscsi start

Edit
Initiatorの設定

ディスクの割り振りまでは、以下のステップで接続する。

  1. Discoveryで、指定のIPアドレスに立ち上がっているiSCSIターゲットにIP接続する。
    # iscsiadm -m discovery -t sendtargets -p 192.168.0.100
  2. Loginで、IP接続されたターゲットが提供しているディスクを選択し、sessionを張る。
    # iscsiadm -m node -p 192.168.0.100 -T iscsi00.2009-02.com.gamvaro:tServer0-0 --login
  3. これで、デバイスとして登録されます。
    # fdisk -l

Edit
iscsiadmのコマンド説明

-mモード。discovery(IP登録),node(ノード操作),session(session操作),fw(特殊なモード),iface のいずれかを指定
-tDisoveryモードのタイプ。当然ながらDiscoveryモード時(-m discovery)のみ指定可能。通常はsendtargetsを指定、ほかにiSNS, SLP, fwなどがある。
-oOption指定、new, delete, update, show の4つが選択可能。nodeモード,ifaceモード時のみ指定可能
-Llogin allオプション。基本はall、ほかにもmanual,automatic指定もある
-Ulogout allオプション。基本はall、ほかにもmanual,automatic指定もある
-pIPアドレスとポートを指定( 例 192.168.0.100:3260 )。デフォルト値は3260
-Tターゲット名(IQN)を指定
-l, --loginターゲットにログイン(session)
-u, --logoutターゲットからログアウト(session)
-k=0すべての接続を即時カット、主にShutdown時に利用

参考

Discoveryiscsiadm -m discovery -t sendtargets -p 192.168.0.100
DiskにLoginiscsiadm -m node -T iqn.2001-05.com.gamvaro:test -p 192.168.0.100 --login
Login ALLiscsiadm -m node -L all
Logoutモードiscsiadm -m node -T iqn.2001-05.com.gamvaro:test -p 192.168.0.100 --logout
ノードリストiscsiadm -m node
node情報表示iscsiadm -m node -T iqn.2001-05.com.gamvaro:test -p 192.168.0.100
node情報削除iscsiadm -m node -o delete -T iqn.2001-05.com.gamvaro:test

Edit
WindowsからiSCSIに接続する

Edit
ダウンロード

もちろんではあるが、IPを利用してネットワークに接続できるiSCSIであるから、Windowsからの接続も可能である。しかしながら現状ではOS標準ではないため、Microsoftから Initiator のダウンロードが必要になる。(ただしWindowsVistaからは標準になっている)

Microsoft iSCSI Software Initiator Version 2.08

Edit
MAC OSXからISCSI

globalSAN iSCSIを使って接続

Edit
利用の手順

ダウンロード後、ダブルクリックでインストールするとシステムのインストールと共に設定プログラムがスタートメニューに登録される。この設定プログラムを起動し、以下の手順でサーバーの登録を行う。

  1. Target Portalタブを選択し、「Add」ボタンを押す。
  2. iSCSIが稼動しているサーバーのIP(ドメイン名も可能)とソケット番号を入力し「OK」を押してメイン設定画面に戻る。
  3. Available Targetsタブを選択すると、先ほど登録したサーバーの状況が表示される。
  4. そこで先ほど登録したサーバーを選択して、下の「Log On」ボタンを押してサーバーと接続する。
  5. これで通常のHDとしてWindowsが認識するので、コントロールパネルの管理ツールなどから、通常のハードディスクの追加と同じようにフォーマットしたりドライブ名を割り振ったりする。

Edit
リンク

Edit
iSCSI関係