http://www.oss-d.net/iscsi
http://www.mazn.net/blog/2009/03/20/199.html
http://hp.vector.co.jp/authors/VA022911/tec/centos/iscsi.htm
http://d.hatena.ne.jp/greenballs/20090202/1233533983
http://ameblo.jp/it-tutor/theme2-10016328276.html
http://www.ranonet.com/linux/tips/016_iscsiinitiator.shtml
http://tomo.ac/goodstream/iscsi/setup-centos5.html
Linux を iSCSI のターゲットにする(サーバ)
インストール
yum install scsi-target-utils
iSCSIで公開する場所の準備
/dev/sdb1
などを直接公開しない場合は
dd if=/dev/zero of=/iscsi/disk.img bs=100M count=0 seek=1 または dd if=/dev/zero of=/iscsi/disk.img bs=1M count=1024
などのようにディスクイメージを作成する
ターゲットデーモン開始
/etc/init.d/tgtd start
ターゲットの登録
tgtadm --lld iscsi --op new --mode target --tid 1 --targetname iscsi.test1
ターゲットの表示
tgtadm --lld iscsi --op show --mode target
ターゲットにデバイスを設定
tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 --backing-store /iscsi/disk.img
コマンド実行時に
tgtadm: invalid request
等のエラーが出る場合は SELinux が影響している可能性あり。
その場合はSELinux を無効するとか、SELinux の設定を見直す。
ターゲットのアクセス権限を設定
全ての接続を許可する場合
tgtadm --lld iscsi --op bind --mode target --tid 1 --initiator-address=ALL
IPで制限する場合
tgtadm --lld iscsi --op bind --mode target --tid 1 --initiator-address=192.168.1.0/24
設定ファイルで設定する場合
vi /etc/tgt/targets.conf
で
<target iscsi.test1> backing-store /mnt/iscsi/disk.img initiator-address ALL write-cache off </target>
などのように追加
Linux から ターゲットを利用する(クライアント)
インストール
yum install iscsi-initiator-utils
ターゲットを検索
iscsiadm --mode discovery --type sendtargets --portal 192.168.137.135
--portal の後のIPは、ターゲットのIP
登録ノード一覧表示
iscsiadm --mode node
ターゲットの詳細表示
iscsiadm --mode node -T ターゲット
ターゲットにログイン
iscsiadm --mode node --login
ターゲットを指定する場合
iscsiadm -m node -T iscsi.test -l
ログインノード一覧表示
iscsiadm --mode session
ターゲットからログアウト
iscsiadm -m node -T iscsi.test -u
ログインしているiscsiのデバイス名を確認する
# ls -l /dev/disk/by-path/ | grep iscsi lrwxrwxrwx 1 root root 9 7月 17 2010 ip-192.168.12.254:3260-iscsi-iqn.2004-08.jp.buffalo:TS-RIGL795-001D73260795:array1 -> ../../sdb lrwxrwxrwx 1 root root 10 7月 17 2010 ip-192.168.12.254:3260-iscsi-iqn.2004-08.jp.buffalo:TS-RIGL795-001D73260795:array1-part1 -> ../../sdb1
デバイス確認
fdisk -l
パーティッション作成、マウント、フォーマット
fdisk /dev/hdd
p パーティション情報の表示
n 新たに領域を作成
w 書き込み
mke2fs -j /dev/hdd1 mount /dev/hdd1 /mnt/iscsi
とか。ext4の場合は
mkfs.ext4 /dev/sdb1
とか。
登録ノードの削除 (※discoveryによる一括登録を行った場合は、接続サーバの削除を行う)
iscsiadm --mode node --op delete --targetname iscsi.test
ターゲットとIPアドレス、ポートも指定して削除する場合
iscsiadm -m node -o delete iqn.2013-03.net.unix-power:samba2.sdb -p 192.168.12.21
接続サーバの削除
iscsiadm --mode discovery --op delete --portal 192.168.1.34
起動時にiSCSI上のLVMが認識させる
http://d.hatena.ne.jp/naga_sawa/20120429/1335693402
- ロード順序が LVM -> iSCSI なので、起動時に iSCSI 上のボリュームがアクティブにならない。
- 全デバイスが有効になってから vgchange -ay するスクリプトを組むのが逃げ道。
- RHEL6.3では改善するかも
スクリプトを作成して対応する
iscsi, iscsid が走ってから実際に iSCSI ボリュームが認識されるまでタイムラグがあるようなので、ウエイト(iscsi_ready_wait)を仕込んでるので適宜調整。
# vi /etc/init.d/iscsimount #!/bin/bash # # iscsimount mount LVM group on iSCSI partitions # # Author: naga_sawa # # chkconfig: 2345 98 03 # description: mount LVM group on iSCSI partitions # # processname: iscsimount # pidfile: /var/lock/subsys/iscsimount ### BEGIN INIT INFO # Provides: iscsimount # Required-Start: libvirtd # Required-Stop: libvirtd # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: mount LVM group on iSCSI partitions # Description: This is a script for mounting LVM group on iSCSI partitions # by /etc/fstabs ### END INIT INFO # Source function library. . /etc/rc.d/init.d/functions RETVAL=0 prog=iscsimount iscsi_ready_wait=5 start() { sleep $iscsi_ready_wait vgchange -ay mount -a touch /var/lock/subsys/iscsimount } stop() { rm -f /var/lock/subsys/iscsimount } case "$1" in start) echo -n $"Starting $prog: " start ;; stop) echo -n $"Stopping $prog: " stop RETVAL=$? ;; *) # do not advertise unreasonable commands that there is no reason # to use with this device echo $"Usage: $0 {start|stop}" exit 1 esac if [ $RETVAL = 0 ] ; then echo_success echo else echo_failure echo fi exit $RETVAL
起動時にこのスクリプトが走るようにする
# chmod 755 /etc/init.d/iscsimount # chkconfig --add iscsimount # chkconfig --list iscsimount iscsimount 0:off 1:off 2:on 3:on 4:on 5:on 6:off
fstab にLVMボリュームを登録
下記のデバイス名を固定するスクリプトを仕込めば、デバイス名を固定できる。
でも、デバイス名を固定しなくても、UUIDが分かればマウントできる。
/etc/fstab
/dev/VolGroup等のデバイス名を指定する方法とUUIDを指定する方法がある。
# vi /etc/fstab /dev/VolGroup02/test /mnt/iscsi/virtimages1 ext4 _netdev 0 0
または
UUID=100c65bb-71fd-484d-9b90-a013035d0abf /mnt/iscsi/virtimages1 ext4 _netdev 0 0
_netdev オプションは、ネットワークが開始されるまでマウントを待つという意味
UUIDを調べるには
blkid コマンドを使う
# blkid /dev/vg_host/lv_root /dev/vg_host/lv_root: UUID="5febb0c7-7f32-4d32-8050-efcde3128538" TYPE="ext4" # blkid /dev/vg_host/lv_swap /dev/vg_host/lv_swap: UUID="fb403fa9-fbbf-491d-b198-63da8ad694ca" TYPE="swap" # blkid /dev/vg_host/lv_images /dev/vg_host/lv_images: UUID="100c65bb-71fd-484d-9b90-a013035d0abf" TYPE="ext4"
または、LVM論理ボリュームが認識されている状態で
# ll /dev/mapper/ 合計 0 crw-rw---- 1 root root 10, 58 4月 22 19:26 2012 control lrwxrwxrwx 1 root root 7 4月 22 19:26 2012 vg_host-lv_root -> ../dm-0 lrwxrwxrwx 1 root root 7 4月 22 19:26 2012 vg_host-lv_swap -> ../dm-1 lrwxrwxrwx 1 root root 7 4月 22 19:38 2012 vg_host-lv_images -> ../dm-2
これで、vg_xxx-lv_xxx と dm-x の対応がわかるので、目的の LogicalVolume がどの dm に対応してるか確認する。
次に UUID と dm-x の対応を調べる
# ll /dev/disk/by-uuid/ 合計 0 lrwxrwxrwx 1 root root 10 4月 22 19:38 2012 100c65bb-71fd-484d-9b90-a013035d0abf -> ../../dm-2 lrwxrwxrwx 1 root root 10 4月 22 19:26 2012 438fc77d-a0a4-4738-8ee9-abc704ac16b3 -> ../../sda1 lrwxrwxrwx 1 root root 10 4月 22 19:26 2012 5febb0c7-7f32-4d32-8050-efcde3128538 -> ../../dm-0 lrwxrwxrwx 1 root root 10 4月 22 19:26 2012 fb403fa9-fbbf-491d-b198-63da8ad694ca -> ../../dm-1
vg_host の lv_images は dm-2 にマッピングされていて、UUID が 100c65bb-71fd-484d-9b90-a013035d0abf ということがわかる。
udevを用いたiSCSIのデバイス名固定
http://mogtechblog.blogspot.jp/2011/03/centos5udeviscsi.html
iSCSIのデバイス名が固定されないのでちょっと不便。
そんなときの対応。
/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{all_partitions}="mydevice"
を記述する。
(1つしかパーティションを切ってなくても15個できるがキニシナイ)
トラブル対応
ブロック書込みエラー
iSCSIにLVMを構築して運用中に、原因は不明だが、ブロック書込みエラー的なエラーが出ることがある。
とりあえず、一度アンマウントして、LVMを認識しなおせば復活できる。
#umount /mnt/hoge #vgchange -a n VolGroup1 #vgchange -a y VolGroup1 #mount /mnt/hoge
[カテゴリ: OS > Linux]
[通知用URL]
Tweet
最終更新時間:2016年11月18日 23時14分25秒