最近の Xen では、仮想ブロックデバイス(VBD)のバックエンドドライバとして blktap を利用することができます。 blktap は VBD のバックエンドのためのインターフェイスで、さらに実際の I/O 機能を持つドライバを組み合わせることで利用します。仮想マシンの定義ファイルに下記の指定をする場合、それは blktap の aio ドライバ(async I/O = 非同期I/O)を使用することになります。
disk = [ 'tap:aio:/var/lib/xen/images/linux.ext3,xvda,w' ]
blktap では、 aio 以外に qcow, qcow2, vmdk など、他の仮想マシン技術で使われるディスクフォーマットの利用が可能となっています。
さて、 aio ドライバのように Linux で普通にループバックマウントできる形式であれば、 Domain-0 からとりあえず触りたいような場合は何も考えずにマウントしてしまえばよいのですが、 QEMU の形式である qcow2 フォーマットのイメージを Domain-0 からマウントしたい時はどうしたらいいでしょうか。
このような場合には、 xm block-attach コマンドを使用して Domain-0 に仮想ブロックデバイス(VBD)を割り当てることができます。第二引数はDomain-0のドメインID(ゼロ)を指定しています。
# xm block-attach 0 tap:qcow2:/var/lib/xen/image/linux-image.qcow2 xvda w
# mkdir -p /mnt/linux-image
# mount /dev/xvda /mnt/linux-image
用が済んだら、アンマウント後に xm block-detach コマンドで仮想ブロックデバイス(VBD)を解放します。
# umount /dev/xvda
# xm block-detach 0 xvda
Domain-0 は特権ドメインであり、一般的には VBD をサービスする側なのですが、それと同時に Domain-0 の正体は「一部ハードウェアやハイパーバイザーへの特権アクセスが許されている」点を除けば、あくまでXen にとっては他のドメインと同じゲストに違いありません。