Cent OSのLoopback deviceをMacからiSCSIでマウントする – NAGARA’s micro blog

わが家のストレージサーバーはnetatalksambaでMac向けWindows向けにファイル共有サービスを動かしているのだけど、もう一つiscsitargetでiSCSIも動かしている。

iscsitargetで指定できるのは/dev/以下のブロックデバイスなので、通常はsda1とかhda2とかのパーティションになる。LVMでiSCSIするためのパーティションを動的に作成するのもいいけどちょっと敷居が高い。

そういえば、LinuxにはLoopback deviceというモノがあったなぁと思いついたので、イメージファイルをLoopback deviceに指定してそのデバイスをiSCSIとして使えるか試してみた。

まずは、イメージファイルをCentOS上で作る。iTunes用のハードディスクにするために250GBのイメージをつくる。

# dd if=/dev/zero of=./iTunes.img bs=1GB count=250

次に/dev/loop0に作ったイメージファイルをloop deviceに関連づける。

# losetup /dev/loop0 /mnt/storage4/loop_img/iTunes_Anime.img

これで下準備はOK。

iscsitargetの設定ファイルietd.confに以下のようなターゲットを指定してみる。

Target iqn.2010-05.jp.dip.talkabout:iTunes
Lun 0 Path=/dev/loop0,Type=fileio
Alias iTunes

iscsitargetを再起動。

# /etc/init.d/iscsi-target restart

これで、Mac OS X側からglobalSAN iSCSI initiator for Mac OS Xを使ってコネクトしてみるとちゃんと認識した。ディスクユーティリティでHFS+にフォーマットすれば外付けドライブと同じように使える。

この方法なら、パーティション切ったりしないで済むので一時的にファイルを逃がしたりするのに便利。

不要になった場合には、iscsitargetを止めてlosetupコマンドで関連付けを外す。

# /etc/init.d/iscsi-target stop
# losetup -d /dev/loop0

再起動するとloop deviceの関連づけは消えちゃうので、/etc/rc.localやっつけですが、以下のコマンドを書いておきました。

losetup /dev/loop0 /mnt/storage4/loop_img/iTunes_Anime.img
/etc/init.d/iscsi-target restart

今回netatalkを使わなかったのは、仮想的なファイルシステムにファイルをコピーするより、仮想デバイス上の本物のHFS+ファイルシステムの方が、Mac OS X側から見ると自然な気がするから。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中