Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

ディスクイメージをデバイスファイルとして扱う@CentOS5.4 + Xen

      2015/04/30

※ 2015/4/30追記 : mountオプションで直接マウントする方法を書きました

Xenの仮想マシンのディスクは、パーティションやファイルを使用できますが、これらのパーティションやファイルを、仮想マシンを起動せずに中身を覗きたい場合があります。こういうときは、パーティションやファイルをLinuxのデバイスファイルとして扱ってあげることで、ディスクイメージをマウントすることができます。

デバイスファイルにするには、losetupコマンド、さらに作ったデバイスファイルをディスクと見立ててパーティションを読み取るのがkpartxコマンドです。

まずはlosetupコマンドで、パーティションやファイルをループバックデバイスとして設定していきます。ループバックデバイスは/dev/loop0や/dev/loop1などですが、使われていないループバックデバイスを探します。

# losetup -f
/dev/loop1

ディスクイメージを/dev/loop1にマッピングします。ここではファイルを指定していますが、パーティションでもOKです。

# losetup /dev/loop1 /root/xen.img

設定できたかを確認します。下の例ではloop1にxen.imgが設定されています。

# losetup -a
/dev/loop0: [0803]:41058319 (/root/cent5.4.iso)
/dev/loop1: [0803]:42238103 (/root/xen.img)

これで/dev/loop1は、通常のディスクでいう/dev/hdaなどに相当します。しかし実際のディスクの場合、パーティションをつくると、/dev/hda1とか/dev/hda2とかいった風に番号がついていきますが、losetupだけではこれらのパーティション毎のデバイスファイルが作られません。そこで使用するのがkpartxコマンドです。

kpartxでloop1上のパーティションを見てみます。ここでは3っつのパーティションを確認できます。

# kpartx -l /dev/loop1 
loop1p1 : 0 208782 /dev/loop1 63
loop1p2 : 0 4192965 /dev/loop1 208845
loop1p3 : 0 20980890 /dev/loop1 4401810

パーティションテーブルから、パーティションのデバイスファイルを作成します。

# kpartx -a /dev/loop1

確認します。/dev/mapperやfdiskコマンドで確認します。

# ls /dev/mapper/
# fdisk -lu /dev/loop1 
~省略~
/dev/loop1p1   *          63      208844      104391   83  Linux
/dev/loop1p2          208845     4401809     2096482+  82  Linux swap / Solaris
/dev/loop1p3         4401810    25382699    10490445   83  Linux

ext3フォーマットのパーティションなどはそのままマウント可能です。

# mount /dev/mapper/loop1p3 /mnt/tmp

元に戻すには、アンマウント後、以下のようにコマンドを実行するだけです。

# umount /mnt/tmp
# kpartx -d /dev/loop1
# losetup -d /dev/loop1

 - IT技術 , ,

336px

Message

メールアドレスが公開されることはありません。

  関連記事

no image
リモートデスクトップのWindows10のシャットダウン

デスクトップ画面でAlt + F4 を押すと、シャットダウンメニューが出てきます …

no image
Apacheのプロキシ(proxy)機能

Apacheにはフォワードプロキシやリバースプロキシの機能があります。 フォワー …

no image
Cisco IOSエミュレータDynamipsを使ってみる@CentOS 5

Ciscoのスイッチやルータの設定の勉強をしたくて、DynamipsというCis …

no image
PS3のハードディスク交換にあたって

PS3 20GBモデルはハードディスク容量がそのうち不足するだろうから、そのうち …

no image
コマンドプロンプトを任意のフォルダから開く@Windows 7

Shiftを押しながらフォルダを右クリックすることで、”コマンドウィ …

no image
COMODO Defense+ の 信頼ベンダー(trusted vendor)リストを削除する

最近COMOD Firewall を入れると、Defense+ の信頼ベンダーリ …

no image
viで制御コードの入力

.vimrcといった設定ファイルを書いていると、制御コードを入力したいときがあり …

no image
manをmoreではなくlessで見る@FreeBSD 7.1

さくらインターネットでsshでログインし、manを打つとmoreを使用してページ …

no image
sshのちょっと高度な使い方

めっきり使う機会が減ってしまったtelnetの代わりによく使うssh。最近はmo …

no image
USB3.0 メモリ (Super Talent Express DUO ST3U32EDB)

32GBのUSB3.0 のメモリが安かったので買ってみた。そろそろ東芝のUSB3 …