qemu-nbdを使うとサクッとコールドクローニングできるのね

nogajun
nogajun

qemu-nbdを使うとnbd(ネットワークブロックデバイス)経由でqemu/kvmのqcow2やVirtualboxのvdiなどの仮想ディスクイメージを物理デバイスのように扱えるそう。

ということで試していたけどパーティションが見えない。なぜ?と悩んでいたけど、ふと、nbdのオプションを見ると、あらびっくり。

# modinfo nbd
filename:       /lib/modules/2.6.32-5-686/kernel/drivers/block/nbd.ko
license:        GPL
description:    Network Block Device
depends:
vermagic:       2.6.32-5-686 SMP mod_unload modversions 686
parm:           nbds_max:number of network block devices to initialize (default: 16) (int)
parm:           max_part:number of partitions per device (default: 0) (int)
parm:           debugflags:flags for controlling debug output (int)

ええ!デフォルトはパーティションがゼロなんですか! そりゃ出ないわ!

そういうことでmodprobe nbd max_part=8として無事使えましたとさ。

qemu-nbdの使い方

qemu-nbdを使うと仮想ディスクイメージにパーティションを操作するpartedのコピーやntfscloneが使えます。

# modprobe nbd max_part=8
# qemu-nbd -c /dev/nbd0 VIRTUALDISK.vdi

として/dev/nbd0に仮想ディスクイメージを接続します。

ここからが本領。

# ntfsclone -O /dev/nbd0p1 /dev/sda1

物理ディスクのパーティション1(/dev/sda1)から、仮想ディスクイメージのパーティション1(/dev/nbd0p1)にNTFSパーティションをコピーするntfscloneを実行すると、物理ディスクのパーティションを仮想ディスクイメージにコピーできるんですね。これは便利! もちろん/dev/nbd0p1をマウントすることもおk。

使い終わればqemu-nbd -dして終了。

# qemu-nbd -d /dev/nbd0

お試しあれ。