Поддерживает ли nova pxe boot?

Я работаю над проектом на основе OpenStack. Теперь нам нужна виртуальная машина для загрузки с PXE. Я не могу найти какой-либо документ об этом. Nova поддерживает загрузку PXE? Если да, как мне создать образ KVM, эквивалентный пустому компьютеру, который будет загружаться из PXE?

4 ответа

Решение

После дополнительного расследования я обнаружил, что все не так сложно. Нам просто нужно изменить код Nova, чтобы добавить одну строку

<boot dev=network>

в файле конфигурации xm vm. Потому что nova использует libvirt, а libvirt уже поддерживает загрузку PXE. В любом случае, спасибо всем за помощь.

Вы можете установить ipxe на диск и загрузить его с помощью syslinux (или другого загрузчика); это даст вам то, что будет вести себя точно так же, как система, загруженная через PXE BIOS. В дистрибутив iPXE входят инструменты для создания загрузочного образа ISO, который вы можете использовать для загрузки систем в OpenStack, или вы можете создать образ жесткого диска с очень похожей настройкой.

  1. Создайте образ диска:

    $ dd if=/dev/zero of=/tmp/boot.img bs=1M count=4
    
  2. Разделите изображение:

    $ fdisk /tmp/boot.img
    
  3. Вам нужно будет установить количество цилиндров.

  4. Создать отдельный раздел с типом b и сделать его загрузочным (n создавать, a переключить флаг загрузки).

  5. Подключите изображение к устройству обратной связи.

    # losetup -fP /tmp/boot.img
    
  6. Создайте файловую систему msdos.

    # mkdosfs -I /dev/loop0p1
    
  7. Смонтируйте файловую систему.

    # mount /dev/loop0p1 /mnt
    
  8. Установите syslinux.

    # syslinux --install /dev/loop0p1
    
  9. копия ipxe.krn на устройство (откуда-то... либо вы сами его построили, либо скопировали из ipxe ISO).

  10. Создайте подходящую конфигурацию syslinux, например:

    DEFAULT ipxe
    LABEL ipxe
      KERNEL ipxe.krn
    

Проверьте это, загрузив его на локальном экземпляре KVM. Загрузите его в openstack и загрузитесь вместе с ним. Обратите внимание, что в этом примере мы создали очень маленький (4M) образ диска, но вы также можете создать большой образ диска и затем поместить на него небольшой раздел. Все зависит от того, чего вы пытаетесь достичь.

Окружающая среда облака должна поддерживать передачу этих параметров. Если вы используете функцию частной сети экземпляра, это ограничит вас, поскольку текущая настройка не позволяет передавать дополнительные параметры демону dnsmasq, который обеспечивает поддержку DHCP. Вам необходимо изменить исходный код продукта, чтобы обеспечить интерфейс для ввода параметров PXE и ​​соответствующий механизм передачи этих параметров в базовый процесс dnsmasq.

Однако, если вы используете "плоскую" сеть и предоставляете свою собственную службу DHCP, тогда да - можно использовать соответствующий загрузочный образ, поддерживающий PXE, и у вас будет загрузка PXE.

Компания, в которой я работаю, Nimbula, использует KVM и DNSmasq так же, как NOVA. По крайней мере, для запуска экземпляров мы используем g PXE. В образе диска в начале находится загрузчик g PXE, а в оставшемся месте недостаточно места для нужного размера тома.

Что касается равномерной поддержки загрузки PXE, я, вероятно, включу это в наш продукт для нашего следующего второстепенного цикла выпуска, и возможно, что через некоторое время он будет перенесен на NOVA.

Добавить <boot dev=network> тег к XML в IceHouse v.2014.1.5, мне нужно было добавить строку:

    os.append(etree.Element("boot", dev='network'))

Перед кодом (вне цикла):

    for boot_dev in self.os_boot_dev:
        os.append(etree.Element("boot", dev=boot_dev))

Примерно в строке 1195 n /usr/lib/python2.7/dist-packages/nova/virt/libvirt/config.py (мне также пришлось удалить config.pyc в том же каталоге и перезапустить службу nova)

Другие вопросы по тегам