iscsiサーバを使ってwindowsコンテンツをバックアップ

いまだにSeagateのHDDを使い続けてるってこともあるんだけど、毎日Windowsのコンテンツをバックアップしたいなと思ってます。
自宅のlinuxサーバにiscsiを入れて、WindowsMicrosoftが無料で配布しているiSCSI Initiatorをインストールしてwindowsからiscsilinuxドライブをマウントして定期的にコンテンツをコピーしようと思ってやってみました。

Linux側にiSCSIサーバ(Target)を立ち上げるまでは良かったんだけど、Windows側のiSCSI Initiatorがくせものだった。インストールは無事に終わってiSCSI initiatorを立ち上げてサーバに接続させても、connection failと出てしまう。Firewallとか色々と設定しなおしてもだめ、linux側でtcpdumpしてもパケットきてない。winからtelnet でport 3260に繋ぐと接続は出来てたのでFirewallの問題ではなかった。win側でtcpdumpを動かすとパケットが送信されてないことが判明。

で、結局、俺のWindowsXP HOMEだったからダメでしたよ。。。萎える。俺の時間を返せ!
MicrosoftのサイトにXP Homeは対象外ってちゃんと書いてよ。

しょうがないからSambaにするしかないかな。


とりあえず、iScsi Targetをインストールするまでの作業記録
注意点としては、最新のlinuxカーネルだとiscsi targetのblkio.cで「implicit declaration of function」というコンパイルでエラーが出る。close_bdev_exclというlinuxカーネルに含まれている関数を利用してるんだけど、最新のカーネルだとclose_bdev_exclusiveになって、引数の数も異なってしまっているのが原因でした。
iscsi targetのtar.gzファイルをダウンロードしてコンパイルせずに、svnからソースを取得する方法で回避できます。(SVNのソースは最新linuxカーネル対応)

$ yum install openssl-devel
$ svn checkout http://svn.berlios.de/svnroot/repos/iscsitarget/trunk 

$ cd trunk
$ make KSRC=/usr/src/kernels/linux-2.6.28/

$ make install KSRC=/usr/src/kernels/linux-2.6.28/
`usr/ietd' -> `/usr/sbin/ietd'
`usr/ietadm' -> `/usr/sbin/ietadm'
`etc/initd/initd.redhat' -> `/etc/init.d/iscsi-target'
`doc/manpages/ietadm.8' -> `/usr/share/man/man8/ietadm.8'
`doc/manpages/ietd.8' -> `/usr/share/man/man8/ietd.8'
`doc/manpages/ietd.conf.5' -> `/usr/share/man/man5/ietd.conf.5'
`ChangeLog' -> `/usr/share/doc/iscsitarget/ChangeLog'
`COPYING' -> `/usr/share/doc/iscsitarget/COPYING'
`README' -> `/usr/share/doc/iscsitarget/README'
`README.vmware' -> `/usr/share/doc/iscsitarget/README.vmware'
`kernel/iscsi_trgt.ko' -> `/lib/modules/2.6.28/kernel/iscsi/iscsi_trgt.ko'
Running depmod




$ vi /etc/ietd.conf
Target iqn.2009-02.com.hoge:raid1.md3
        Lun 0 Path=/dev/md3,Type=fileio
        MaxConnections          1


$ vi /etc/initiators.deny
ALL ALL

$ vi /etc/initiators.allow
ALL 192.168.1.xx


$ /etc/rc.d/init.d/iscsi-target start

$ /sbin/chkconfig iscsi-target on

$ vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3260 -s 192.168.1.xx -j ACCEPT

$ /etc/rc.d/init.d/iptables restart

もう解説いれる気力がありません、、、XP proにしときゃよかった。XP proだったらsoftware raidも使えるしね。


windowsiscsi initiatorの参考
http://mikilab.doshisha.ac.jp/dia/research/report/2005/0913/004/report20050913004.html