Я получаю На устройстве нет свободного места ошибка при выполнении команды 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 выглядит так (всего 3000 МБ):
root 2000
swap 1000
Поэтому я сначала создаю раздел LVM, достаточно большой, чтобы вместить виртуальную машину. Я думал, что он должен быть того же размера, что и сумма разделов, но разве это не правильно? Стоит ли делать 3001М?
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 в необработанный файл:
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
Опять же, у меня нет проблем с использованием раздела LVM с виртуальной машиной KVM, но стоит ли мне беспокоиться об этом? Его размер на 1 048 576 байт (ровно на 1 МБ) меньше размера исходного файла изображения. Должен ли я добавлять 1 МБ в раздел LVM при его создании?
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?
У вас может быть просто одна математическая ошибка:
3146776576 (size, in bytes of your .raw file) / 1024 (kb) / 1024 (mb) == 3001MB
Но вы сделали свой LV ровно 3000MB?
Нет ничего плохого в том, что DD'ы накладывают один раздел на другой. Несмотря на то, что ваш список разделов vmbuilder увеличился до 3000, ваш файл .qcow представляет собой образ жесткого диска, который включает таблицу разделов + mbr @ на лицевой стороне диска.