LINUX.ORG.RU

Контейнер с Debian i386 на Debian amd64

 , , , ,


1

3

Доброго времени суток, уважаемые!

На днях возникла необходимость завести для рабочих нужд кроме Debian amd64 еще и i386. Естественно, первая мысль - VirtualBox.
Но производительности виртуальной машины очень мало для выполняемых задач - сборка больших проектов занимает порядка 40-50 минут на виртуалке (с выделенными 2 ядрами и 4Гб ОЗУ), против 15-20 минут на хосте (там 6 Гб и 4 ядра).

Начал копать в сторону контейнеров и прочих вкусностей. Но остался неразрешенным вопрос: можно ли в каком-либо из доступных на сегодняшний день систем контейнерной виртуализации поднять дистрибутив с отличной от хоста разрядностью (т.е. i386 в моем случае)?

Если нет, то посоветуйте пожалуйста, как можно решить вопросы производительности в виртуальной машине кроме как апгрейда железа.

Заранее спасибо!

P.S. мне нужны и amd64 и i386 системы одновременно, заводить мультиарч и собирать таким образом билды не предлагать (специфика системы сборки не позволяет) - только разные системы, только хардкор!



Последнее исправление: Lorence (всего исправлений: 1)

Я конечно не проверял, но попробуй так

debootstrap --arch=i386 jessie ~/debian-tree/ http://mirror.yandex.ru/debian/
systemd-nspawn -D ~/debian-tree/

Jefail ★★★★
()
Ответ на: комментарий от Jefail

т.е., создаст некое chroot окружение?

Просто про debootstrap слышал, что его обычно используют именно для установки системы, а не создания chroot. Но все равно спасибо, почитаю в эту сторону.

Lorence
() автор топика
Ответ на: комментарий от Jefail

кажется - это то, что надо! сейчас попробую и отпишусь

Lorence
() автор топика

LXC вполне работает в таком варианте.

Motif ★★
()
Ответ на: комментарий от Lorence

у меня так уже давно работает, только без контейнера, простой chroot

most-fucktum
()
Ответ на: комментарий от Jefail

эм.. на моем Debian Jessie нету команды systemd-nspawn. Этот сервис надо как-то включать?

С этим новомодным systemd чувствую себя дико отставшим от жизни.

Lorence
() автор топика
Ответ на: комментарий от Jefail

Эту проблему решил, все нормально.
В контейнере выполнил uname -a и в ответ получаю ядро и системы x86-64
видимо, так нельзя.

Lorence
() автор топика
Ответ на: комментарий от Lorence

rain@elitebook:~$ uname -a
Linux elitebook 3.8.13 #4 SMP Mon Jun 16 18:36:43 UTC 2014 x86_64 GNU/Linux
rain@elitebook:~$ linux32
$ uname -a
Linux elitebook 3.8.13 #4 SMP Mon Jun 16 18:36:43 UTC 2014 i686 GNU/Linux

ядро и системы x86-64

Логично, ведь у тебя никакое другое ядро не запускается. Ядро для x86_64 вполне может работать с 32-битным окружением.

YAR ★★★★★
()
Последнее исправление: YAR (всего исправлений: 1)
Ответ на: комментарий от Lorence

Не путай, контейнер использует ядро хоста, но окружение вокруг него может быть 32-битное.

Jefail ★★★★
()

Конкретно для случая «x86_64 хост и x86 гость» LXC (думаю во всех его реинкорнациях) должен работать. Просто при создании контейнера надо явно указать нужную архитектуру (lxc-create по умолчанию использует архитектуру хоста).

MrClon ★★★★★
()

Похоже, что тебе нужно вот это: http://man7.org/linux/man-pages/man5/lxc.container.conf.5.html

ARCHITECTURE
Allows one to set the architecture for the container. For example, set a 32bits architecture for a container running 32bits binaries on a 64bits host. This fixes the container scripts which rely on the architecture to do some work like downloading the packages.
lxc.arch
Specify the architecture for the container.
Valid options are x86, i686, x86_64, amd64

Если же тебе нужно обязательно 32-битное ядро, то лучше смотри в сторону Xen или KVM. Каких-либо ощутимых проседаний производительности может и не быть для оговоренных тобой задач (впрочем, надо проверять). VirtualBox - пример не из удачных. Если же и виртуальная машина не подойдёт, ставь вообще 32-битных хост и там всё делай.

Quasar ★★★★★
()
lxc-create -t debian -n test -- -a i386 -r jessie
lxc-attach -n test
file /usr/bin/apt
/usr/bin/apt: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=ac0f6db77b1467c2a924b646293e2140e85cd187, stripped
roman77 ★★★★★
()
Последнее исправление: roman77 (всего исправлений: 3)

Всем спасибо!
Решение с debootstrap и systemd-nspawn справилась с поставленной задачей - быстро и сердито получилось =)

Тему можно закрывать, думаю.

Lorence
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.