qcow2 ディスクイメージをマウントしようと思ったら、loop back で接続すればいいとわかった。
raw であれば、losetup -P -f /path/to/raw.img
でlosetupで手軽に扱えるが、qcow2の場合は、nbdを経由する。
qcow2 のディスクを接続する
コネクトを使う。
sudo modprobe nbd max_part=8 sudo qemu-nbd --connect=/dev/nbd0 /var/lib/libvirt/images/d02.qcow2 sudo fdisk /dev/nbd0 -l sudo qemu-nbd -d /dev/nbd0
nbd 機能を使えば、qcow2 をループバック接続できて、フォーマットやインストール、状況を見ることができる。これを使えば通常のストレージのファイルと同じように扱える。
/dev/nbd0 ループバック・マウント後
ループバックさえできれば、あとはmount したり gdisk したりできるよね。
mount /dev/nbd0p2 /mnt
ただし、qcow2 は完全なディスクイメージなので、lvm になってたり、dm-cryptがかかってたりするので、/dev/mapper経由でマウントすることになる可能性が高い。
mount /dev/mapper/xxx-root-vg /mnt
nbd 機能の有効無効の切り替え
Failed to open /dev/nbd0: No such file or directory
のようにnbd が存在しないエラーになるときは、カーネル拡張をロードしてやればいい
sudo modprobe nbd max_part=8
使い終わったら アンロードしておけばいい
sudo rmmod nbd
LVMを含むqcow2 のnbd は注意が必要
lvm を含む nbd を扱うと、nbd デバイスをロードした瞬間に lvm が走って、lvm として認識されちゃう。
認識されちゃうと、nbd を切断しても lvm に残ってしまう。
takuya@:~$ sudo qemu-nbd --disconnect /dev/nbd0 /dev/nbd0 disconnected takuya@:~$ sudo partprobe Warning: Error fsyncing/closing /dev/mapper/d01--vg-root: 入力/出力エラーです Warning: Error fsyncing/closing /dev/mapper/d01--vg-swap_1: 入力/出力エラーです Warning: Error fsyncing/closing /dev/nbd0p1: 入力/出力エラーです Warning: Error fsyncing/closing /dev/nbd0p2: 入力/出力エラーです Warning: Error fsyncing/closing /dev/nbd0p3: 入力/出力エラーです
lvm を含むディスクを扱うときは、手作業でLVMから取り外すしか無いです。
認識されちゃったときは手動で、INACTIVEにしておくと無難
vgchange -an qcow_vg
マウントして調べるときは/boot 型違反だと思うので、ほぼ使わないので、自動化しないでほしいところ
lvm が消えないとき
lvm, が消えない、そのときは、dmsetpup をた試すのもいい。
sudo dmsetup ls sudo dmsetup removevg-lv05
dmsetup をしたあとに再度、除去を試す。
sudo qemu-nbd -d /dev/nbd0 sudo rmmod nbd
これでも駄目なら再起動するしか・・・・