Я написал сценарий, который генерирует образ корневой файловой системы (на основе Debian lenny), подходящий для Linux в пользовательском режиме. (По сути, этот сценарий создает образ файловой системы, монтирует его с помощью устройства цикла, использует debootstrap для создания установки lenny, настраивает статический IP-адрес для сети TUN / TAP, добавляет открытые ключи для входа в систему по SSH и устанавливает веб-приложение.)
Эти образы файловой системы довольно хорошо работают с UML, но было бы неплохо иметь возможность генерировать аналогичные образы, которые люди могут использовать в альтернативных программах виртуализации, а я вообще не знаком с этими параметрами. В частности, поскольку идея состоит в том, чтобы использовать этот образ в качестве автономного сервера для тестирования веб-приложения, важно, чтобы сеть работала.
Интересно, может ли кто-нибудь предложить, что будет задействовано в настройке таких образов корневой файловой системы, чтобы их можно было использовать с другим программным обеспечением виртуализации, таким как VMware, Xen или в качестве экземпляра Amazon EC2? Две особые проблемы:
Если такие системы не используют необработанный образ файловой системы (например, им нужны заголовки с метаданными или они сжаты определенным образом), существуют ли инструменты для преобразования между различными форматами?
Я предполагаю, что в файловой системе по крайней мере /etc/network/interfaces
придется настраивать, но, вероятно, потребуются более сложные изменения?
Большое спасибо за любые предложения ...
VirtualBox имеет «VBoxManage convertdd» для импорта необработанных образов дисков (сгенерированных с помощью dd) в свой собственный специальный формат .vdi. Я считаю, что для VMWare есть похожие вещи и т. Д.
Различные продукты виртуализации часто имеют некоторые расширения ядра (например, гостевые расширения VirtualBox), которые позволяют гостевой операционной системе различными способами взаимодействовать с хостом, которые часто бывает полезно установить.
Открытый формат виртуализации (OVF), похоже, получает поддержку - см. http://en.wikipedia.org/wiki/Open_Virtualization_Format для введения.
В отличие от OP, я использую Centos7, а основным гипервизором является HyperV. Тем не менее, большая часть этого будет применяться к другим дистрибутивам и гипервизорам.
У меня systemd-networkd настроен по умолчанию на DHCP на всех подключенных интерфейсах, и у меня не было проблем с конфигурацией сети. Хотя мне нравится мощь systemd-networkd, для DNS требуется systemd-resolved - что уходит значительно от традиционного поведения решателя. Я придерживаюсь этого ... пока.
У меня были проблемы с модулями ядра. Во-первых, не было установлено много модулей для различных гипервизоров. Во-вторых, dracut
(который собирает initramfs на centos и некоторых других дистрибутивах) смотрит на текущее оборудование и включает только модули, которые работают с этим оборудованием. Можно принудительно включить другие модули через --add-drivers
, но вы должны знать точные имена файлов для модулей. Для любого гипервизора вам, вероятно, потребуются виртуальное хранилище и виртуальные сетевые модули, а также, возможно, драйвер баллонной памяти и т.д.
Придумывая аргументы в пользу дракута, обратите внимание на различие между dracut module
и kernel module
.
Список вариантов дракута можно найти на http://man7.org/linux/man-pages/man8/dracut.8.html#OPTIONS; В итоге я получил что-то похожее на следующее (обратите внимание, я не уверен, точны ли имена модулей ядра - и если они верны, то только для HyperV):
dracut --kver 0 -f --xz -a "busybox mdraid" -o "bootchart dash plymouth btrfs dmraid fcoe-uefi iscsi nbd biosdevname" --no-kernel --add-drivers "hv_storvsc hv_vmbus hv_utils"
Другой ответ предполагает формат OVF. Импорт IIRC OVF в HyperV требует загрузки плагина, для которого нужна очень старая версия .NET ... другими словами, будет больно, если HyperV будет наиболее часто используемым гипервизором для ваших виртуальных машин.
К счастью, виртуальные жесткие диски импортируются многими гипервизорами и легко создаются qemu-img из raw, qcow2 и т. Д.
Вы знаете о этот сайт корневой файловой системы? Все файловые системы изначально были разработаны для использования с UML, но они должны работать с любым решением виртуализации. Обратите внимание, однако, что загрузчик не установлен, так как образы состоят из диска, смонтированного в один цикл (без таблицы разделов). Вы все еще можете загружать их с помощью kvm, используя его -kernel
параметр командной строки, для остальных вам потребуется загрузить другой образ (возможно, компакт-диск / образ для восстановления?) и самостоятельно установить загрузчик. Очевидно, вам, возможно, придется преобразовать этот необработанный формат в любой нужный вам формат (vdi / vmware / ..) с помощью соответствующих инструментов. Сценарии включены, если вы хотите создать файловые системы самостоятельно.
Другой способ - это прикрепить перегородку напрямую.
В кему это просто в командной строке.
В VirtualBox вы должны выполнить шаги, описанные в главе 9 руководства пользователя VirtualBox - подраздел «Расширенная конфигурация хранилища»: http://www.virtualbox.org/manual/ch09.html#id504534 что выглядит примерно так:
VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda
VBoxManage internalcommands createrawvmdk -filename /path/to/file.vmdk -rawdisk /dev/sda -register
VBoxManage storageattach MyVM --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium /path/to/file.vmdk
конечно / dev / sda может быть изменен на любое блочное устройство, особенно раздел (возможно, на LVM2).
На VMWare также есть возможность напрямую подключить раздел или диск.
Благодаря этому в такой конфигурации вы можете даже переключатель с одной виртуальной машины на другую, используя ту же установку.