2010年01月19日

パーティション分割されたパーティションのmount方法

タイトルが分かりにくくてすいません…。
(内容もお世辞にも分かりやすく書けてません…orz)

きっかけは昨日の記事。iSCSIターゲットサーバ上で論理ボリュームやパーティションを公開する領域として指定した場合、ターゲットサーバ上では1つのパーティションとして扱われる領域が、イニシエータ側ではディスクそのものだと認識され、その中にさらにパーティションが作成されることになります。

イニシエータ側はそれで何の問題もないんですが、ターゲットサーバ側で中身を見たいときに「パーティションの中にあるパーティション」のマウントってどうやるの?と考えたら頭の上にはてなマークが。

で、その解決方法。
実はとっても簡単で、offsetを指定してあげるだけでした。

まずはパーティション内のパーティション(分かりにくい言葉ですね^^;)のoffsetを調べるために、fdisk-lu オプションを付けて実行します。(以下の例では /dev/hdb1 がiSCSIで公開している領域となります)
fdisk -lu /dev/hdb1

こんな感じの結果が出てくると思います。
Disk /dev/hdb1: 1069 MB, 1069254144 bytes
255 heads, 63 sectors/track, 129 cylinders, total 2088387 sectors
Units = セクタ数 of 1 * 512 = 512 bytes

デバイス Boot Start End Blocks Id System
/dev/hdb1p1 63 1044224 522081 b W95 FAT32
/dev/hdb1p2 1044225 2072384 514080 b W95 FAT32
この Start とあるのが各パーティションのオフセット値になります。ただしここで表示されているのはセクタ単位。fdiskoffset値はバイト単位で指定する必要があるので、このStartの値にセクタサイズを掛け算した値を指定する必要があります。上記の例で第2パーティションを指定したいのであれば、
1044225(セクタ位置) x 512(セクタサイズ) = 534643200

を指定する必要があります。

実際のコマンドは以下のようになります。
mount -o loop,offset=534643200 /dev/hdb1 /mnt

これでターゲットサーバ側でもディスクの内容を参照出来るようになりますが、1つ留意点が。イニシエータ側での書き込みはターゲットサーバ側には即座に反映されません。一度umountしてmountし直すと反映されていましたが、どのタイミングで反映されるかは具体的には分かりません。逆のパターンでターゲットサーバ上での書き込み結果もイニシエータ側はディスクの切り離し/再接続をするまで反映されませんでした。

基本的にはターゲット側とイニシエータ側で同時に書き込みする(それも別の仕組みで)事は考慮されていないと思うので、常時両方からmountするのではなく、イニシエータ側が使用していないときにターゲット側で内容を確認するための手段くらいに考えておいた方が良さそうです。

以下のサイトを参考にさせていただきました。(感謝!)

壊れたかもしれないハードディスクからのデータサルベージ - 黒糖々日記/kokutoto diary
http://d.hatena.ne.jp/kokutoto/20080525/p1

HDDイメージファイルをマウントして使う方法 - adsaria mood
http://d.hatena.ne.jp/adsaria/20080724
posted by 月水和尚 (とも) at 17:41 | Comment(2) | TrackBack(0) | Linux(UNIX)全般
この記事へのコメント
ファイルシステムで使用していると仮定して、iSCSIはあくまでホスト側がデータのオーナシップを持っていますから、サーバー側のファイルシステムキャッシュに未flushのデータが残っているとその分は反映されていないはずです。両方から同時マウントするのはどうかと思いますので、LUNをlvで提供してlv snapshotなんかを使うと幸せかもしれません。
Posted by kenya888 at 2010年01月20日 10:00
おぉ、ありでーす。
Snapshotってそんな使い道もあるのね。
DRBD+iSCSI+LVMでかなり面白いものが作れそうな予感。
Posted by tomo at 2010年01月21日 22:10
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。