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

PXE boot Linux - какие каталоги должны быть доступны для записи?

Я планирую создать небольшой кластер Hadoop, в котором подчиненные узлы загружаются и запускаются с центрального PXE-сервера, чтобы упростить развертывание и обновления, а также чтобы все диски на подчиненных устройствах были (почти) монополизированы HDFS.

Однако я полагаю, что мне все равно придется зарезервировать место на подчиненных узлах для / tmp и / var / log, я не хочу просто помещать их на ramdisk, потому что я хотел бы, чтобы они были там для отладки после сбоев ( и потому что оперативной памяти меньше, чем на диске).

Таким образом, машины могут загружаться с удаленного PXE-сервера, монтировать оттуда их / только для чтения, затем монтировать / dev / sda1 через sdd1 для разделов данных HDFS, / dev / sda2 для / tmp и / dev / sdb2 для / var /журнал.

У меня вопрос, есть ли еще какие-нибудь каталоги, которые нужно будет записывать? Предполагая, что мы получим Hadoop и т. Д. Для входа в / var / log.

(И это вообще разумная архитектура?)

РЕДАКТИРОВАТЬ: не беспокойтесь об обмене, я планирую сделать их без обмена, убийца OOM предпочтительнее, чем взлом.

«(И это вообще разумная архитектура?) ....»

Я бы не сказал, что ваша идея ошибочна, но кажется интересной. Короче говоря, вы настраиваете бездисковую архитектуру, но все еще используете локальный диск. Мне ваше добавление лишних петель.

"для упрощения развертывания и обновления .."

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

Вы можете изучить макет livecd своего дистрибутива, но, вероятно, вам понадобится / var вместо / var / log, а в некоторых дистрибутивах в / etc есть файлы, которые должны быть доступны для записи. / home, если вы не разместили домашний каталог в другом месте.

Вот простое решение для загрузки Slackware 14.2 (BSD init, а не systemd) через PXE с корневой файловой системой, обслуживаемой только для чтения через NFS.

Я просто модифицировал /etc/rc.d/rc.S для копирования папок, которые должны быть доступны для записи (/etc и /var) в файловую систему tmpfs, смонтируйте временные файловые системы поверх исходных папок и переместите копии во временные файловые системы:

# Copy /etc and /var as tmpfs prior to starting any processes.
echo "Creating volatile copies of /etc and /var in memory..."
mount -t tmpfs -o size=256m tmpfs /tmp
cp -a /etc /tmp/etc
mount -t tmpfs -o size=16m tmpfs /etc
mv /tmp/etc/* /etc/
rmdir /tmp/etc
cp -a /var /tmp/var
mount -t tmpfs -o size=16m tmpfs /var
mv /tmp/var/* /var/
rmdir /tmp/var

Вышеупомянутое было вставлено в верхнюю часть rc.S, которому предшествует только строка, задающая PATH переменная. Это выполняется в самом начале init, до монтирования любых других разделов или запуска служб.

Любые изменения этих копий в памяти просто сбрасываются при перезагрузке.