ubuntu10.04 の IET (iSCSI Enterprise Target) を使ってみた
サーバ仮想化の世界では、もうiSCSIは当たり前になってきましたね。
テスト用にあまったNetBookをiSCSIターゲットにしようと色々試みたのですが FreeNASやOpenfilerなど便利なものがあれど、Acerの安いNetbookではNICが認識してくれず、まともにインストールできたのはUbuntu10.04ぐらいでしたので、Ubuntuで使えるiSCSIターゲットのIETを使ってみました。
IETをインストール
apt-getでさくっとインストール。
# apt-get install iscsitarget
自動起動するように設定。
# apt-get install rcconf # rcconf --on iscsitarget # cat /etc/default/iscsitarget ISCSITARGET_ENABLE=true # /etc/init.d/iscsitarget restart
大まかな手順
ietadmコマンドの部分は特になくてもできます。1, 3 だけでOKです。
- LVMでiSCSI用のボリューム作成
- ietadmコマンドでターゲット設定
- ターゲットを作成
- LUNを追加
- 必要であれば認証を設定
- /etc/iet.confに記述して起動時に有効にする。
LVMでiSCSI用のボリュームを作成
ここではLUNを2つ追加するために2つのボリュームを作成します。
# pvscan PV /dev/sda5 VG jake lvm2 [148.81 GiB / 139.50 GiB free] Total: 1 [148.81 GiB] / in use: 1 [148.81 GiB] / in no VG: 0 [0 ] # vgdisplay --- Volume group --- VG Name jake System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 3 VG Access read/write VG Status resizable MAX LV 0 Cur LV 2 Open LV 2 Max PV 0 Cur PV 1 Act PV 1 VG Size 148.81 GiB PE Size 4.00 MiB Total PE 38095 Alloc PE / Size 2383 / 9.31 GiB Free PE / Size 35712 / 139.50 GiB VG UUID b7CAnC-AHx2-7JZW-dz6H-vOW7-NJxT-t2Q2mo # lvcreate --size=20G --name iscsi001 jake Logical volume "iscsi001" created # lvcreate --size=20G --name iscsi002 jake Logical volume "iscsi001" created
ietadmコマンドでターゲット設定
ゴミプロでターゲット名を作成。ターゲット名は iqn.yyyy-mm.
require 'socket' def rnd(n) Array.new(n){ format("%02x",rand(255)).to_s }.join end domain = "dharry.local" day = Time.now.strftime("%Y-%m") host = Socket.gethostname uuid = [4, 2, 2, 2, 6].map {|n| rnd(n) }.join #("-") puts ["iqn", day, domain, host].join(".") + ":" + uuid #=> iqn.2010-07.dharry.local.jake:b62177354733bd1d767a04da5370ea29
ietadmでターゲットを作成してLUNを追加
# ietadm --op new --tid=1 --params Name=iqn.2010-07.dharry.local.jake:b62177354733bd1d767a04da5370ea29 # ietadm --op new --tid=1 --lun=1 --params Path=/dev/jake/iscsi001 # ietadm --op new --tid=1 --lun=2 --params Path=/dev/jake/iscsi002
設定がうまくできているか確認
# cat /proc/net/iet/session tid:1 name:iqn.2010-07.dharry.local.jake:b62177354733bd1d767a04da5370ea29 # cat /proc/net/iet/volume tid:1 name:iqn.2010-07.dharry.local.jake:b62177354733bd1d767a04da5370ea29 lun:1 state:0 iotype:fileio iomode:wt path:/dev/jake/iscsi001 lun:2 state:0 iotype:fileio iomode:wt path:/dev/jake/iscsi002
/etc/iet.confに記述して起動時に有効にする。
Target iqn.2010-07.dharry.local.jake:b62177354733bd1d767a04da5370ea29 Lun 1 Path=/dev/jake/iscsi001 Lun 2 Path=/dev/jake/iscsi002 Alias iscsi
補足
XenServerなど使うときは、ボリュームがアクティブにならないように設定する。
(2010/09/12 一部間違っていたので修正)
ubuntuやfedoraの新しいバージョンではlvm名にホスト名が入るので /dev/${hostname} はactiveになるようにします。
https://forums.openfiler.com/viewtopic.php?pid=8951
# cat /etc/lvm/lvm.conf | grep "filter" | grep -v "#" filter = [ "r|/dev/dm-*|", "r|/dev/VG_XenStorage*|", "r|/dev/sr/iscsi|" ]