ЗАДНИЙ ПЛАН: До сих пор я настраивал виртуальные машины следующим образом:
Создать шаблон / золотую виртуальную машину:
Вышеупомянутое приводит к такой виртуальной машине, как:
200 ГБ /var/lib/libvirt/images/mytemplate.img
Чтобы создать гостевые изображения из приведенного выше, я делаю:
Вышеупомянутое работает отлично: у нас есть один файл .xml и один файл .img, которые можно легко перемещать по нашей ферме данных.
ПРОБЛЕМА: Проблема в том, что указанное выше - это толстая подготовка. Размер изображений составляет 200 ГБ, хотя большая часть изображения может быть неиспользуемым дисковым пространством. Я бы хотел, чтобы они были тонко подготовлены с максимальным размером для роста, чтобы ускорить перемещение изображений по сети. Нам нужны такие команды, как df / внутри гостевой виртуальной машины, чтобы показать максимальный размер гостевой файловой системы, если это вообще возможно.
Кроме того, мы хотели бы рассмотреть qcow2 вместо raw для файла изображения, чтобы можно было делать снимки.
ВОПРОС: Как создать образы KVM с тонкой подготовкой, разделенные LVM, как описано выше? Могу я вирт-разреженный существующий файл mytemplate.img и по-прежнему позволять изображению вырасти до максимального размера и иметь ли / файловую систему желаемое поведение? Не стесняйтесь предлагать альтернативы для рассмотрения.
virt-sparsify
это то, что вам нужно.virt-clone
qemu-img convert
это лучший подход. Чтобы реально сэкономить место на диске, вы можете создать золотой образ, а затем создать его снимки с помощью qemu-img
и создавайте виртуальные машины на основе этих снимков. Таким образом, базовые данные останутся в базовом образе, а виртуальные машины будут на очень маленьких образах, которые будут содержать только различия между реальной виртуальной машиной и золотым образом. Обратной стороной, конечно же, будет производительность, поэтому выбор за вами, жертвовать ли пространством или производительностью.
Замените это:
dd if=mytemplate.img of=myguest.img iflag=direct oflag=direct (vs cp for better copying speed)
С участием:
cp --sparse=always mytemplate.img mynewguest.img
Предполагая, что ваш файл разреженный на конце, это приведет к гораздо меньшему размеру файла. Если это не привело к уменьшению размера файла, смонтируйте образ шаблона:
kpartx -va mytemplate.img
mount /dev/mapper/loop#p# /mnt/target
dd if=/dev/zero of=/mnt/target/zeroes #let it fill the entire drive.
rm -f /mnt/target/zeroes
umount /mnt/target
kpartx -vd mytemplate.img
Затем повторите команду cp (не забывайте, что всегда разреженная часть).