Назад | Перейти на главную страницу

Как я могу сгенерировать образы файловой системы, которые можно использовать во многих различных системах виртуализации?

Я написал сценарий, который генерирует образ корневой файловой системы (на основе Debian lenny), подходящий для Linux в пользовательском режиме. (По сути, этот сценарий создает образ файловой системы, монтирует его с помощью устройства цикла, использует debootstrap для создания установки lenny, настраивает статический IP-адрес для сети TUN / TAP, добавляет открытые ключи для входа в систему по SSH и устанавливает веб-приложение.)

Эти образы файловой системы довольно хорошо работают с UML, но было бы неплохо иметь возможность генерировать аналогичные образы, которые люди могут использовать в альтернативных программах виртуализации, а я вообще не знаком с этими параметрами. В частности, поскольку идея состоит в том, чтобы использовать этот образ в качестве автономного сервера для тестирования веб-приложения, важно, чтобы сеть работала.

Интересно, может ли кто-нибудь предложить, что будет задействовано в настройке таких образов корневой файловой системы, чтобы их можно было использовать с другим программным обеспечением виртуализации, таким как VMware, Xen или в качестве экземпляра Amazon EC2? Две особые проблемы:

Большое спасибо за любые предложения ...

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 также есть возможность напрямую подключить раздел или диск.

Благодаря этому в такой конфигурации вы можете даже переключатель с одной виртуальной машины на другую, используя ту же установку.