KVMのイメージファイルをホストマシンでマウントする

自宅のDebianで動かしてるKVM上のWindows7Internet Explorer 11の更新を当てたら、起動時にBSoDが発生して動かなくなりました。
スタートアップ修復も失敗し、システム復元を行っても正常に起動しなくなってしまったのでメールのデータだけでもサルベージすべくホストマシンでディスクイメージをマウントしてみました。


イメージ内にパーティションがあるのでそのままループバックマウントしようとしてもマウントされません。
少し探してみたところkpartxを利用するとマウントできるということだったので試してみました。
なお、イメージファイルはvirt-installコマンドを実行した際に作成されたものです。

# apt-get install kpartx
# kpartx -av %イメージファイルのパス%
add map loop0p1 (254:0): 0 204800 linear /dev/loop0 2048
add map loop0p2 (254:1): 0 125620224 linear /dev/loop0 206848

数字についてはイメージファイルによって変わってくると思います。


ループバックデバイスが作成されたのでそのデバイスをマウントします。
サイズ的にloop0p2が元Cドライブだったはずなのでこちらを指定。NTFSをマウントするのでntfs-3gを入れていない場合はインストールしないとマウントできません。

# apt-get install ntfs-3g
# mount /dev/mapper/loop0p2 /mnt


無事メールのデータをサルベージできました。
作業が完了したらアンマウントしてループバックデバイスを削除します。

# umount /mnt
# kpartx -dv %イメージファイルのパス%
del devmap : loop0p2
del devmap : loop0p1
loop deleted : /dev/loop0


Web上ではlosetupコマンドを実行している例もありましたがkpartxだけでもマウントできました。


今までメールはBecky!を使っていましたが、Outlook.comでアカウントを追加してWeb上から見られるようにしてしましました。
Becky!の為に動かしていたKVM上のWindows7はもう起動しなくてもいいかもしれません。