Ddコマンドを実行すると、デバイスにスペースが残っていませんエラーが発生します。 KVM qcow2ファイルをLVMパーティションに移動しようとしていますが、LVMパーティションはvmbuilder.partitionファイルのパーティションの合計と同じサイズである必要があると思いました。これは このHowToForgeの記事 でどのように説明されているか。エラー出力は次のとおりです。
root@bond:/tmp/zing-UZFgZpj1# dd if=disk0.raw of=/dev/vol/zing bs=1M
dd: writing `/dev/vol/zing': No space left on device
3001+0 records in
3000+0 records out
3145728000 bytes (3.1 GB) copied, 32.5236 s, 96.7 MB/s
新しいコピーを使用できますが、それでもすべて正常に動作しているようです。でも心配する必要があると思います。 ddを使用して別のファイルにコピーすると、ファイルのサイズがLVMパーティションよりわずかに大きくなります。詳細については、以下を参照してください。
KVMとvmbuilderを使用してディスクイメージを作成しています。vmbuilder.partitionファイルは次のようになります(合計3000MB)。
root 2000
swap 1000
そこで、最初にVMを保持するのに十分な大きさのLVMパーティションを作成します。パーティションの合計と同じサイズになるはずだと思っていましたが、これは正しくありませんか? 3001Mにする必要がありますか?
root@bond:~/vmbuilder# lvcreate -L3000M -n zing vol
Logical volume "zing" created
次に、vmbuilderを使用してディスクイメージを作成します。
root@bond:~/vmbuilder# vmbuilder kvm ubuntu -o \
--templates=/root/vmbuilder/templates \
--ip=192.168.0.225 \
--hostname=zing \
--raw=/dev/vol/zing \
--part=/root/vmbuilder/appliances/jetty/vmbuilder.partition \
--pass=7dhsLzUp \
--dest=/tmp/zing-UZFgZpj1 \
--user=zing \
--mem=2048 \
--firstboot=/tmp/boot-UZFgZpj1.sh \
--copy=/tmp/copyfiles-UZFgZpj1 \
--addpkg=jetty ;
完了したら、qcow2ファイルをrawファイルに変換します。
root@bond:/tmp/zing-UZFgZpj1# ls -al
total 447892
drwxr-xr-x 2 root root 4096 2010-03-06 16:51 .
drwxrwxrwt 5 root root 4096 2010-03-06 16:51 ..
-rw-r--r-- 1 root root 458752000 2010-03-06 16:51 disk0.qcow2
root@bond:/tmp/zing-UZFgZpj1# qemu-img convert disk0.qcow2 -O raw disk0.raw
root@bond:/tmp/zing-UZFgZpj1# ls -al
total 891384
drwxr-xr-x 2 root root 4096 2010-03-06 17:32 .
drwxrwxrwt 5 root root 4096 2010-03-06 16:51 ..
-rw-r--r-- 1 root root 458752000 2010-03-06 16:51 disk0.qcow2
-rw-r--r-- 1 root root 3146776576 2010-03-06 17:32 disk0.raw
最後に、それをLVMパーティションにコピーします。
root@bond:/tmp/zing-UZFgZpj1# dd if=disk0.raw of=/dev/vol/zing bs=1M
dd: writing `/dev/vol/zing': No space left on device
3001+0 records in
3000+0 records out
3145728000 bytes (3.1 GB) copied, 32.5236 s, 96.7 MB/s
したがって、いくつかの追加テスト(LVMではなく別のファイルにコピー):
root@bond:/tmp/zing-UZFgZpj1# dd if=disk0.raw of=zing.disk bs=1M
3001+0 records in
3001+0 records out
3146776576 bytes (3.1 GB) copied, 4.64961 s, 677 MB/s
root@bond:/tmp/zing-UZFgZpj1# ls -l
total 3964404
-rw-r--r-- 1 root root 458752000 2010-03-06 16:51 disk0.qcow2
-rw-r--r-- 1 root root 3146776576 2010-03-06 17:32 disk0.raw
-rw-r--r-- 1 root root 3146776576 2010-03-06 17:33 zing.disk
繰り返しになりますが、KVM仮想マシンでLVMパーティションを使用しても問題はありませんが、心配する必要がありますか?サイズは元のイメージよりも1,048,576バイト(正確に1MB)小さいですファイルを作成するときに、LVMパーティションに1MBを追加する必要がありますか?
root@bond:~/vmbuilder# lvremove /dev/vol/zing
Do you really want to remove active logical volume "zing"? [y/n]: y
Logical volume "zing" successfully removed
root@bond:~/vmbuilder# lvcreate -L3001M -n zing vol
Rounding up size to full physical extent 2.93 GB
Logical volume "zing" created
root@bond:/tmp/zing-UZFgZpj1# dd if=disk0.raw of=/dev/vol/zing bs=1M
3001+0 records in
3001+0 records out
3146776576 bytes (3.1 GB) copied, 31.0581 s, 101 MB/s
これで、サイズが切り上げられたパーティションを作成しましたが、コピーはそれに収まります。
Qcow2ファイルをLVMパーティションにコピーするための正しいプロセスは何ですか?また、LVMデバイスよりもファイルへのコピーがはるかに高速である理由は何ですか?
単純に1つずつずれた数学エラーが発生する可能性があります。
3146776576 (size, in bytes of your .raw file) / 1024 (kb) / 1024 (mb) == 3001MB
しかし、あなたはあなたのLVを正確に3000MBにしましたか?
あるパーティションを別のパーティションにDDすることには何の問題もありません。 vmbuilderパーティションリストの合計が3000になったとしても、.qcowファイルはハードドライブイメージであり、パーティションテーブル+ mbr @ディスクの前面が含まれています。