iSCSI target on linux 備忘録

Networks
Photo by hyt.

iSCSI target on linux 備忘録です.

iSCSI の Target に作られるディスクイメージについて少し疑問があったので,実際に Linux で検証してみました.

iSCSI のディスクイメージを Windows でマウントしてみる

Linux で iSCSI ターゲットを設定する際,例えば

iSCSI Targetの構築

辺りの記事を見ると,ディスクイメージは dd コマンドで適当な大きさのファイルを作ってそれを使うことができるようです.作り方を見ると単に指定の大きさの全部ゼロが書き込まれた raw disk image を作っているだけで,何も特別なことはしていません.

iSCSI というのは Ethernet で SCSI コマンドを包んでブロック単位でイメージを書き込み/取り出すもので,Initiator 側から見ると,単なる SCSI ディスクに見えます.実際,Windows からは,Initiator の設定さえきちんと行えば,通常の HDD/SSD と全く同じように使えます.

と言うことは,iSCSI target 側に設定された raw disk image にはどう考えても Windows からのデータがそのままの形,かつブロック単位で書き込まれているんだろうなぁ……と予想できで,ならば,

iSCSI で設定した raw disk image をそのまま Windows に持って来てマウントして読み込み(書き込み)できる?

んじゃないかなと期待した訳です.

と言うことで,実際にできるかどうか試してみると,残念ながら,

ダメ

でした.少なくともそのまま持って来たんではマウント出来ません.しかし予想自体は間違っていなさそう.何でかと言うと,以下はうまくいくからです.

iSCSI target で指定したディスクを Windows につないでみる

あまり知られていないことなんじゃ無いかなと思いますが,Linux の iSCSI target の場合,ディスクイメージを指定してそれを Initiator に提供するだけでなく,ディスク全体を提供することができます.

実際の設定は簡単で(アクセス制限などは一切行っていません),例えば,前の記事で紹介した OpenMediaVault 5

OpenMediaVault で iSCSI を使う備忘録
OpenMediaVault で iSCSI を使う備忘録です. NAS ディストリビューションである OpenMediaVault ver. 5 で iSCSI を試そうとしたのですが,標準で付属するプラグインには含まれていませんし,また...

の場合は,/dev/sdc 全体を提供するなら,

# vi /etc/tgt/conf.d/test.conf
<target iqn.2021-07.local.omv5:test.target1>
  direct-store /dev/sdc
  write-cache off
</target>

のような感じで設定ファイルを用意して,tgt service を再起動してやれば良いだけです.もちろん /etc/tgt/targets.conf に直接設定しても構わないと思います.

その上で,Windows からこのディスクを NTFS フォーマットし,適当なファイルを書き込んでから切り離し,さらにディスクアクセスがなくなるまでしばらく待ってから /dev/sdc に対応する物理ディスクそのものを取り外します.そして,この取り外したディスクをそのまま USB で Windows に接続すると,

普通に NTFS のディスクとして認識され,書き込んだファイルを読み出すことができます.

もちろん Windows で NTFS フォーマットして適当なファイルを書き込んだディスクを iSCSI target で指定して Windows Initiator でマウントしてやっても同様にファイルを読み出すことができます.

と言うことで,少なくとも Linux の iSCSI target の場合は,予想通り Initiator からのデーターをブロック単位でそのままディスク(イメージ)に書き込んでいるだけなんだろうなぁ……という予想が正しそうなことが分かりました.逆に言えば,多分 Windows の場合は,単なる raw イメージをそのままマウントできないんでしょうね.

しかし,この場合も iSCSI で使った raw image を dd コマンドでそのまま物理ディスクに書き込んで,その物理ディスクを USB か何かでつなげば良いような気がするのですが,面倒なのでこれは試してはいません.

なお,Linux の iSCSI target の場合はソースコードが公開されているはずなので,それを読めば予想が本当に正しいかどうかは確かめることができるとは思いますが,もちろんこれはもっと面倒なのでやる気は全くありません.そもそも,ここに書いたことは Linux の iSCSI target だとそうなるという話で,例えば FreeBSD とか Windows とかの iSCSI target が同様かと言われると全くそれは分かりません.と言うか,今回の話を含めて,確かめたからと言って何かの役に立つ訳でもないよなぁ……と思う今日この頃です.

以上!

 

NetworksServer
スポンサーリンク
Following hyt!
タイトルとURLをコピーしました