qcow2 イメージをマウントする方法

qcow2 イメージをマウントする方法

qemu-nbdとネットワークブロックデバイスカーネルモジュールを使用すると、qcow2イメージをマウントできることを読んでいます。私はループデバイスを介してqcow2をインストールする方法のチュートリアルを見たことがありません。可能ですか?そうでなければなぜですか?

qcow2とisoの違いはよくわかりません。

答え1

ステップ1 - ホストでNBDを有効にする

modprobe nbd max_part=8

ステップ2 - QCOW2をネットワークブロックデバイスに接続する

qemu-nbd --connect=/dev/nbd0 /var/lib/vz/images/100/vm-100-disk-1.qcow2

ステップ3 - QCOW2内のパーティションのリスト

fdisk /dev/nbd0 -l

ステップ4 - VMからパーティションをマウントする

mount /dev/nbd0p1 /mnt/somepoint/

一般ユーザー権限でファイルシステムをマウントすることもできます。非ルート:

mount /dev/nbd0p1 /mnt/somepoint -o uid=$UID,gid=$(id -g)

ステップ5 - 完了したら削除し、切断します。

umount /mnt/somepoint/
qemu-nbd --disconnect /dev/nbd0
rmmod nbd

恥ずかしくも盗まれました:https://gist.github.com/shamil/62935d9b456a6f9877b5

答え2

指摘してくれたGilesに感謝します。ゲストモント。 qcow2イメージのインストールは非常に簡単です。

  1. まず、guestmountをインストールします(Fedora / Debian / Arch / etcのlibguestfs-toolsまたはlibguestfsの一部として)。

    yum install libguestfs-tools
    
  2. これにより、-iオプションを使用してqcow2イメージを自動的に魔法のようにマウントできます。

    guestmount -a path_to_image.qcow2 -i --ro /mount_point
    

-m オプションを使用して、イメージ内で手動でマウントポイントを指定できます。
いつものように、詳細についてはguestmountのマニュアルページを読んでください。

注:これは質問のタイトルにのみ適用されます。 qcow2とISOの違いについては、Peterの回答を参照してください。

答え3

ループデバイスは単にファイルをブロックデバイスに変換します。ファイルブロックに特別な内部マッピングがある場合、ループデバイスはそれらのどれも変換しません。 qcow2は特別です...別の場所に保存されている同じブロック内の他のスナップショットを処理できる特別なマッピングがあります。ループデバイスとしてマウントすると、画像の実際のデータを表さないデバイスの大きな塊だけが得られます。

別のオプションは、生に変換してループデバイスとしてインストールすることです。

qemu-img convert -p -O raw oldfile.qcow2 newfile.raw

ただし、以前と同じように再利用するには、qcow2に再変換する必要があります。

私はqemu-nbdを使用するのが最もIO効率的ではないと思いますが、簡単です。また、仮想マシンにインストールするのも簡単です(ライブUSBを使用して起動する仮想マシンのように)。変換はあまり意味がありません。

答え4

VirtualBox内にQEMUを含むDebian 10。一部の大容量ファイルをQEMU VMにコピーする必要があります。インターネットの速度が遅すぎます。

  • guestmount上記のようにインストールしてくださいlibguestfs-tools
  • qcow2 ファイルを解放するには、エミュレーターを停止します。
    sudo guestmount -a /path/to/some.qcow2 -i --rw /path/to/tempdir
    
    その後、ファイルシステムへの読み取り/書き込みアクセス権があります。コピー速度が5MB / sを超えています。
  • 削除:
    guestunmount /path/to/tempdir
    

関連情報