Я пытаюсь найти путь наименьшего сопротивления в OpenStack для перехода с live CD на образ диска, который можно использовать для развертывания новых гостевых экземпляров.
Если вы загружаете экземпляр OpenStack с live CD, вы можете установить ОС на «временный» диск (который в данном случае будет /dev/vda
) ...
... это здорово, но нет возможности создать образ с этого диска; в image-create
Команда попытается (и потерпит неудачу) сделать снимок самого live CD (потому что это загрузочный том).
Вы можете создать и прикрепить новый том (используя volume-create
и volume-attach
), а затем установите на него ОС, но, похоже, нет никакого способа преобразовать этот том в образ, размещенный на Glance, для использования другими экземплярами.
Как администратор, я, очевидно, могу войти в систему хранения и создать новое изображение взгляда непосредственно с блочного устройства тома, но это не доступный путь для всех, кто взаимодействует через API или веб-интерфейс.
Есть ли другие варианты?
В Icehouse и более поздних версиях вы можете преобразовать том Cinder в образ Glance с помощью команды upload-to-image:
cinder upload-to-image <volume> <image-name>
Простой способ конвертировать том cinder в образ взгляда конвертировать раздел LVM в формат qcow2 с помощью qemu-img.
Пример:
sudo qemu-img convert -c -f raw -O qcow2 /dev/stack-volumes/volume-6e4eb1d5-71fa-45a1-9178-ac6611351404 test.img
Следующим шагом добавляем изображение для просмотра:
glance image-create --name test_converted --disk-format qcow2 --container-format bare < test.img
Я успешно создал образы для openstack с помощью KVM на моем локальном Linux-компьютере, используя файл образа локального диска (raw или qcow2), преобразовал файл образа в сжатый qcow2 и загрузил его с помощью glance.
Несколько советов:
вам понадобится cloud-init или сценарий /etc/rc.local или аналогичный для получения метаданных экземпляра (ключей ssh, IP-адреса, имени хоста, данных пользователя и т. д.) из http://169.254.169.254/
и настройте виртуальную машину с его помощью.
cloud-init лучше всего работает на ubuntu, но он был перенесен на Debian, и я даже видел порт для RH.
Очистка образа (удаление журналов и истории оболочки, отключение паролей, удаление /etc/udev/rules.d/70-persistent-net.rules и т. Д.) И заполнение нулями образа диска перед загрузкой сжатого qcow2 хорошая идея. Вы можете довольно легко сжать образ виртуальной машины с диском 10 ГБ до 300-500 МБ, что быстрее загружается и быстрее копируется при запуске экземпляра openstack.
Самый простой способ обнулить диск - это что-то вроде 'dd if = / dev / zero of = / root / junk; rm -f / root / junk '. Кроме того, вы можете выключить виртуальную машину, смонтировать ее с обратной связью (вы можете использовать qemu-nbd, если образ уже является qcow2), а затем заполнить его нулями. Если файловая система ext2 / 3/4, вы можете использовать инструмент под названием нулевой обнулить его (должен быть демонтирован или установлен RO). Если это какой-то другой fs, вы можете использовать sfill из безопасное удаление (домашняя страница secure-delete исчезла).
Кстати, даже если ваше «исходное» изображение уже сжато qcow2, все равно стоит «преобразовать» его в свеже сжатый qcow2 перед загрузкой. Это избавляет от старых данных, оставшихся при копировании файла при записи.
Это старый вопрос, но вы хотите использовать kvm для создания необработанного образа диска, используя iso-файл cdrom и пустой том. Затем вы можете загрузить необработанный диск, чтобы просмотреть и использовать его для загрузки других.
Вот как вы, например, создаете базовый Debian, Ubuntu или другой хост Linux.