iscsi 喋られるようになりたい(on CentOS7)
はじめに
機械語は流石にアレですが、iSCSI をバックエンドで雑に作る必要があるので色々調査。
知り合いにどやされて ZFS を使おうとしてみました。
メモリ(L1ARC)や SSD(L2ARC, ZIL)でフル SSD でなくても、ストレージの IO をよさ気にキャッシュしてくれる機能、あれめっちゃよさ気やんー!って気に入ったら Oracle のお蔵入りになってたんですね。ふぁーい。
もちろん、ZFS on Linux で頑張っている人たちはいて、NFS とかは動く?動かない?かよくわからないらしいし、iSCSI をしゃべる機能が入ってない *1。
それで色々ググっていたら、 targetci
やら netbsd から移植された netbsd-iscsi
が使えるらしいとのこと。なんか後者のほうが楽そうだから、netbsd-iscsi を使ってみた。
コマンド
参考
ここ(ftp://ftp.netbsd.org/pub/NetBSD/misc/agc/HOWTO-iSCSI-target.txt)がすべてなんですけどね。
vagrant
vagrant で virtuabox の disk を追加できることに最近気づきました。いい時代(?)ですね。
# -*- mode: ruby -*- # vi: set ft=ruby : ENV['VAGRANT_DEFAULT_PROVIDER'] = "virtualbox" Vagrant.configure(2) do |config| config.vm.box = "http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_centos-7.1_chef-provisionerless.box" config.vm.network "private_network", ip: "192.168.33.151" config.vm.provider "virtualbox" do |vb| vb.gui = false vb.memory = "4096" # You can add a disk with below scripts file_to_disk = "/path/2/your/location.vdi" if not File.exist?(file_to_disk) then vb.customize ["createhd", "--format", "VDI", "--filename", file_to_disk, "--size", 100 * 1024] end vb.customize ['storageattach', :id, '--storagectl', 'SATA Controller', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', file_to_disk] end end
iSCSI-Target をインストール
EPEL パッケージを入れれば一発です。
# yum install epel-release # yum install netbsd-iscsi
設定
とにかく喋ればおっけーなので、/etc/iscsi/targets
にデバイスファイルをダイレクトに使用します。
心配な人は mdadm
で RAID 組むとか、RAID で組んだファイルシステム上のファイルを指定すれば *2 オッケーですね。
/etc/iscsi/targets
の中身
# extents file start length extent0 /dev/sdb 0 50GB extent1 /dev/sdb 53687091201 49GB # target flags storage netmask target0 rw extent0 0.0.0.0/0 target1 rw extent1 0.0.0.0/0
- 設定の反映
# iscsi-target restart Reading configuration from `/etc/iscsi/targets' target0:rw:0.0.0.0/0 extent0:/dev/sdb:0:53687091200 target1:rw:0.0.0.0/0 extent1:/dev/sdb:53687091201:52613349376 DISK: 1 logical unit (104857600 blocks, 512 bytes/block), type iscsi fs DISK: LUN 0: 51200 MB disk storage for "target0" DISK: 1 logical unit (102760448 blocks, 512 bytes/block), type iscsi fs DISK: LUN 0: 50176 MB disk storage for "target1" TARGET: TargetName is iqn.1994-04.org.netbsd.iscsi-target
IQN iqn.1994-04.org.netbsd.iscsi-target
上で いわゆる LUN target0
と target1
が作成された、ということですね。
iSCSI のクライアント側の設定
イニシエータ (Initiator)と呼ぶらしいですね。参考はこちら。
- イニシエータのインストール
# yum -y install iscsi-initiator-utils
- IQN の設定
# cat /etc/iscsi/initiatorname.iscsi InitiatorName=iqn.1994-04.org.netbsd.iscsi-target
これで、接続してみます。
# iscsiadm -m node --login Logging in to [iface: default, target: iqn.1994-04.org.netbsd.iscsi-target:target0, portal: 192.168.11.49,3260] (multiple) Logging in to [iface: default, target: iqn.1994-04.org.netbsd.iscsi-target:target1, portal: 192.168.11.49,3260] (multiple) Login to [iface: default, target: iqn.1994-04.org.netbsd.iscsi-target:target0, portal: 192.168.11.49,3260] successful. Login to [iface: default, target: iqn.1994-04.org.netbsd.iscsi-target:target1, portal: 192.168.11.49,3260] successful.
接続?でログイン?何が変わった?と、気になりますが、実はディスクドライブが増えています。
# cat /proc/partitions major minor #blocks name 8 0 62522712 sda 8 1 512000 sda1 8 2 57815040 sda2 8 3 4194304 sda3 8 32 52428800 sdc 8 16 51380224 sdb [root@localhost vagrant]#
おおー!となったので、今度は切断(ログアウト)してみます。
# iscsiadm -m node --logout;echo; cat /proc/partitions Logging out of session [sid: 3, target: iqn.1994-04.org.netbsd.iscsi-target:target0, portal: 192.168.11.49,3260] Logging out of session [sid: 4, target: iqn.1994-04.org.netbsd.iscsi-target:target1, portal: 192.168.11.49,3260] Logout of [sid: 3, target: iqn.1994-04.org.netbsd.iscsi-target:target0, portal: 192.168.11.49,3260] successful. Logout of [sid: 4, target: iqn.1994-04.org.netbsd.iscsi-target:target1, portal: 192.168.11.49,3260] successful. major minor #blocks name 8 0 62522712 sda 8 1 512000 sda1 8 2 57815040 sda2 8 3 4194304 sda3
なるほどこれは便利そう!
おわりに
- Listen を
0.0.0.0/0
にしている点、認証が全くないので、本番では使わないよう。 - というか、遅すぎて本番環境では使い物にならないはず。
- 書いている途中で気付きましたが、CentOS 7.2 がやっと出たんですね。
*1: PR はだいぶ昔に通ってるみたいだが、いつの間にかなくなっている?
*2:http://tech-tw.blogspot.jp/2009/05/netbsdiscsi-target1-target.html