Showing posts with label iSCSI. Show all posts
Showing posts with label iSCSI. Show all posts

March 21, 2011

CentOS5におけるudevを用いたiSCSIのデバイス名固定 とパーティションノードの作成に関して

iSCSIのデバイス名が固定されず不便なので、udevをつかってデバイス名を固定する
この手順は、multipath を使用していないホストのためだけに使用
multipathを使用する場合はこちら

まず、/etc/scsi_id.config ファイルを編集
options=-b の行がコメントアウトしてあることを確認し、以下の行を追加
options=-g
次に対象のiSCSIデバイス(/dev/sdX)のUUIDを調べる
# scsi_id -g -s /block/sdX
3600a0b800013275100000015427b625e
最後に、/ect/udev/rules.d/20-iscsi.rulesを作成し
KERNEL=="sd*", BUS=="scsi", PROGRAM="/lib/udev/scsi_id -g -s /block/%k", RESULT=="3600a0b800013275100000015427b625e", NAME="mydevice"
を記述して終わり
再接続すれば/dev/mydeviceができている.

[2011/11/15追記]
この手法でiscsiのブロックデバイスの名前を固定しても各パーティションまでは名前が固定されない。
つまり、
# parted /dev/mydevice
などとしてパーティションを切っても、mydevice1は見えず、/dev/sd*1だけが見える。
仮想マシンにブロックデバイスごと提供する場合は問題ないが、マウントして使う場合はだいぶ難儀なので、これを解決するためにパーティションノードも作成する。/ect/udev/rules.d/20-iscsi.rulesを
KERNEL=="sd*", BUS=="scsi", PROGRAM="/lib/udev/scsi_id -g -s /block/%k", RESULT=="3600a0b800013275100000015427b625e", NAME{all_partitions}="mydevice"
とする。これでmydevice1~15が作成される。
(1つしかパーティションを切ってなくても15個できるがキニシナイ)
cf. http://www.gentoo.gr.jp/transdocs/udevrules/udevrules.html#usbstorage-extra

検索で引っかかるサイトの記述が細かいところで抜けていて死ぬ

参考
http://www.gentoo.gr.jp/transdocs/udevrules/udevrules.html
http://docs.redhat.com/docs/ja-JP/Red_Hat_Enterprise_Linux/5/html/Virtualization/sect-Virtualization-Virtualized_block_devices-Configuring_persistent_storage_in_Red_Hat_Enterprise_Linux_5.html

March 19, 2011

CentOS5におけるiSCSIイニシエータの導入・設定

iSCSIイニシエータ環境を整える
# yum install iscsi-initiator-utils
# chkconfig iscsid on
# service iscsid start
でイニシエータを導入・起動

前回設定したターゲットを登録・接続テストを行う
# iscsiadm -m discovery --type sendtargets -p targetip
# iscsiadm -m node targetip,1 -T targetname -l
# iscsiadm -m session -P 3
できちんと出てきていれば問題なし
ログアウトしておく
# iscsiadm -m node targetip,1 -T targetname --logout
一度接続したターゲットに関しては/var/lib/iscsi/nodes 以下にコンフィグファイルが配置される
iscsi(not iscsid)を有効にしておくとコンフィグファイルを読み込んで自動で接続する
iscsi(not iscsid)はlibvirtを使う場合はバッティングするため無効にしておく必要がある
iscsiを有効にしている環境で、自動接続したくない場合は/var/lib/iscsi/nodes以下のdefaultファイルを
node.startup=automatic
↓
node.startup=manual
と修正するか
# iscsiadm --mode node --op update --targetname targetname --name=node.startup --value=manual
を実行する

/etc/iscsi/iscsid.confのnode.startupを変更しておけばnode 登録をした時に automatic になるか manual になるかの規定値を変更できる

また、iscsi-targetは、イニシエータが正常なログアウト処理を行わずに停止した場合、そのイニシエータに対するセッションを保持し続ける。このイニシエータがログアウト処理をせずに再起動され、ターゲットにログインしようとすると、ターゲット側には同一パス・同一イニシエータ名のセッションが残っているため、ターゲットはこのログインを拒否する。このため、このイニシエータはストレージにアクセスできなくなってしまう。これを避けるためイニシエータの起動スクリプトを変更する。
サービスiscsiおよびiscsidの起動スクリプト(initscript)/etc/init.d/{iscsi,iscsid}を修正する。これらのスクリプト中、再起動・停止(RUNLEVEL 6および0)のときに以降の処理を行わない部分があるので、これをコメントアウトし、ターゲットからのログアウトを実行するように変更する。
上記二つの起動スクリプトのstopに対し
#if [ "$RUNLEVEL" = "6" -o "$RUNLEVEL" = "0" -o "$RUNLEVEL" = "1" ]; then
#        success
#        return
#fi
と、該当箇所をコメントアウトする。
ただし、lvm, dm, mdなどマウントしたあとのiSCSIボリュームをいじっているモノとの
RUNLEVEL6,0時の挙動に関しては注意が必要

以上

参考:
http://ken-etsu-tech.blogspot.com/2008/03/rhcs-iscsi-dm-mp-clvm-and-gfs4iscsi.html
http://www.asahi-net.or.jp/~aa4t-nngk/iscsi.html

CentOS5におけるiSCSIターゲットの導入・設定

iSCSIターゲット環境を整える
iSCSI Enterprise Tagetを導入する
# cd /usr/local/src
# wget http://downloads.sourceforge.net/project/iscsitarget/iscsitarget/1.4.20.2/iscsitarget-1.4.20.2.tar.gz
現在運用してるkernelにあわせてkernel-develを導入しておく。
また、現在運用していないkernel,kernel-develはremoveしておくとWarningが出ない。
kernel,kernel-develの準備ができたら
# rpmbuild -ta iscsitarget-1.4.20.2.tar.gz
# cd /usr/src/redhat/RPMS
# rpm -ihv iscsitarget* kmod-iscsitarget*
で導入完了。
続いて、設定を行う。設定ファイル/etc/iet/ietd.confを編集する
以下の内容を追記
Target iqn.2011-03.com.example,iscsi:lvm01
 Lun 0 Path=/dev/VolGroup00/lvm01,Type=blockio
 MaxConnections 1
ここでTarget に設定する文字列は "iqn.[ドメイン取得年]-[ドメイン取得月].[ドメイン名 (逆順)]:[任意の識別子]" という形式で指定する必要がある
また、上記の例ではLVMの論理ボリュームをブロックデバイスとして供出している
/etc/sysconfig/networkに設定されたhost名等と相違無いことを確認
# chkconfig iscsi-target on
して再起動
再起動後/var/log/messagesにエラーがはかれていないことを確認
iptablesを設定している場合はiscsi-targetのためにudp,tcpの3260番を解放
アクセス制限は/etc/iet/initiators.allowにて行う
現在動いている設定は
# cat /proc/net/iet/volume
現在のTargetへの接続状況については
# cat /proc/net/iet/session
で確認できる。

正しく設定されているかをイニシエータを用意して確認、別のマシンで
# yum install iscsi-initiator-utils
# chkconfig iscsi on
# service iscsi start
でイニシエータを導入・起動
接続テストを行う
# iscsiadm -m discovery --type sendtargets -p targetip
# iscsiadm -m node targetip,1 -T targetname -l
# iscsiadm -m session -P 3
できちんと出てきていれば問題なし
ログアウトは
# iscsiadm -m node targetip,1 -T targetname --logout
また、経路の多重化を行う場合は下記を参照
http://ken-etsu-tech.blogspot.com/2008/03/rhcs-iscsi-dm-mp-clvm-and-gfs3iscsi.html
http://ken-etsu-tech.blogspot.com/2008/03/rhcs-iscsi-dm-mp-clvm-and-gfs5device.html

以上