LINUX.ORG.RU
ФорумAdmin

Подходы к решению вопроса загрузки по сети

 ,


0

2

Ну вот стянул я ядро с tftp-сервера, примонтировал потом с него / по nfs, все хорошо.

Но мне хотелось бы не один узел грузить по сети, а много. И возникают вопросы.

1. Корень в rw монтировать нельзя, чревато. Корень должен управляться из сервера. Правильно?

2. Если корень можно монтировать в ro, то где-то все равно понадобится rw, например, в /var. Можно экспортировать отдельный каталог для /var в rw, но он все равно не должен быть общим - иначе будут конфликты между пидами и неизвестно что ещё. Наверное, нужно как-то монтировать /var так, чтобы он все писал в память, а при перезагрузке забывал (все равно, данные из /var нужны только во время работы ноды), как это можно сделать?

3. Если можно монтировать /var в память, может, сразу весь корень пихать в память, если ее много?

Если кто сможет указать документ, в котором описано целостное решение с учетом освященных нюансов, покажите, пожалуйста.

Для этого придумали aufs и unionfs, возможно есть и другие аналоги.

Это каскадные файловые системы. С помощью них вы можете смонтировать некоторую часть файловой системы доступной только на чтение, а запись осуществлять в другую файловую систему, например расположенную в памяти (tmpfs).

Вот например я монтирую squashfs образ в котором находится usr и затем посредством aufs каскадно монтирую файловую систему, доступную на запись и точку монтирования squashfs образа в /usr.

# <fs>                  <mountpoint>    <type>          <opts>          <dump/pass>

/mnt/usr/usr.sq          /mnt/usr/ro     squashfs        loop,ro   0 0
usr                      /usr            aufs            udba=reval,br:/mnt/usr/rw:/mnt/usr/ro  0 0

Вы можете поступить аналогично, например корень на nfs смонтировать только на чтение, а некоторые части файловой системы сделать доступными на запись. Либо в initrd посредством aufs смонтировать каскадно tmpfs и корень на nfs.

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

Как корневая ФС, так и дополнительные не обязательно в единственном экземпляре на сервере.

Типичная, пожалуй, схема - корневая одна (или несколько для групп с разным железом или требованиями по софту) ro, /var в памяти, home персональный монтируется отдельно.

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

Это кластер с единым управлением будет, так что и корень и /home общие.

Буду ковырять монтирование /var в память.

pianolender ★★★
() автор топика

1) корень монтируете в ro, затем перемонтируете его в rw с помощью aufs, после перезагрузки изменения не сохраняются естественно, если надо, чтобы сохранялись, тогда на каждую машину свой отдельный образ на nfs

2) aufs

3) можно, aufs

anonymous
()
Ответ на: комментарий от kostik87

Почему-то aufs в centos6 нету.

Я попробовал скачать исходник, но что-то не пошло:

 git clone http://github.com/sfjro/aufs3-linux.git
Initialized empty Git repository in /root/aufs3-linux/.git/
error: RPC failed; result=22, HTTP code = 405

Пакет funionfs можно считать его заменой?

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

aufs вообще можно использовать без пересборки ядра?

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

А что у вас за дистрибутив? В нем aufs сразу была, или пришлось ядро пересобирать?

Возможно, у вас debian, так как у меня есть подозрение, что мы с вами пересекались в debian@conference.jabber.ru

Мне очень хотелось сделать систему на centos (я моделирую установку, которая собрана на rhel-based системе), но с aufs тогда придется долго возиться.

А в debian aufs уже пакетирована, но тогда моделирование получится не совсем точным.

Видимо, придется дальше искать пути решения задачи.

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

А что у вас за дистрибутив? В нем aufs сразу была, или пришлось ядро пересобирать?

У меня Gentoo. Поэтому ядро я собирал.

Мне очень хотелось сделать систему на centos

Ну и делайте. Установите пакет с исходными кодами дистрибутивного ядра, наложите на него патчи и соберите модули под дистрибутивное ядро. Пересобирать ядро не нужно. Затем выполните depmod и загружайте модули поддержки aufs. Если вы хотите всю корневую систему, доступную по nfs каскадно монтировать средствами aufs, то модули нужно будет поместить в initrd и загружать их на этапе работы initrd. Только вам нужно получить патчи из соответствующего раздела git, на сайте же aufs указано какая версия aufs для каких версий ядер подходит.

Вот почитайте это: проблема после сборки модулей для ядра (комментарий) .

я моделирую установку, которая собрана на rhel-based системе

Вы хотите установить систему, загружая установщик по сети или что-то другое ?

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

Берешь Flash/CF/SD/SSD/HDD под persistent!
man unionfs (спасибо Марку)
man aufs
man squashfs
На HDD initrd тащит squashfs с системой, монтирует, потом монтирует поверх persistent, а потом ПРОФИТ
Или просто NFS-root и unionfs
Тогда можно весь хард под партицию без таблицы разделов
В память можно монтировать /tmp;/var/tmp;/var/run
А вообще, для NFS-root лучше брать легкие дистры с uclibc+busybox или eglibc+busybox На сервере твой дистр монтируется по NFS, потом over-root файлы, конфиги юзеры, /home, /var{log,db,spool}, всякие пакеты, e.t.c монтируется с локального носителя, или сетевого storage - тогда создавай loop-файлы с user-rootfs

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

Только вам нужно получить патчи из соответствующего раздела git, на сайте же aufs указано какая версия aufs для каких версий ядер подходит.

Да, это уже понял.

Вы хотите установить систему, загружая установщик по сети или что-то другое ?

Нет, кластер с бездисковыми узлами, общим /home и, возможно, /opt

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

А вообще, для NFS-root лучше брать легкие дистры с uclibc+busybox или eglibc+busybox

Я хочу сделать решение на centos с минимальными отклонениями, чтобы с ним потом могли работать (в том числе развернуть с нуля) другие люди, привыкшие к rhel-like системам. Поэтому я и не тороплюсь пересобирать ядро и собирать вручную initrd. aufs - это отличная вещь, но много подобных усложнений в решение тоже не хочется включать из соображений удобства развертывания.

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

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

А где патчи находятся? Я что-то не понимаю, как вообще с их репозитория что-то установить:

[root@localhost ~]# git clone git://aufs.git.sourceforge.net/gitroot/aufs/aufs2-standalone.git
Initialized empty Git repository in /root/aufs2-standalone/.git/
remote: Counting objects: 11613, done.
remote: Compressing objects: 100% (2597/2597), done.
remote: Total 11613 (delta 8683), reused 9090 (delta 6783)
Receiving objects: 100% (11613/11613), 1.77 MiB | 487 KiB/s, done.
Resolving deltas: 100% (8683/8683), done.
[root@localhost ~]# ls aufs2-standalone/ -lR
aufs2-standalone/:
total 32
-rw-r--r-- 1 root root  1881 Nov 21 09:44 config.mk
-rw-r--r-- 1 root root 17990 Nov 21 09:44 COPYING
drwxr-xr-x 3 root root  4096 Nov 21 09:44 include
-rw-r--r-- 1 root root  1384 Nov 21 09:44 Makefile

aufs2-standalone/include:
total 4
drwxr-xr-x 2 root root 4096 Nov 21 09:44 linux

aufs2-standalone/include/linux:
total 4
-rw-r--r-- 1 root root 23 Nov 21 09:44 Kbuild

А ещё - где можно найти документацию по ветке aufs2?

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

Вы читали то, что написано на странице http://aufs.sourceforge.net/ .

Будет что-то примерно:

git clone git://git.code.sf.net/p/aufs/aufs2-standalone
git checkout origin/aufs2.1-32

Но опять же в сети есть репозитории для CentOS, в которых присутствует ядро 3.10 и aufs.

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

На новые ядра я сильно не уверен, что удастся навернуть infiniband и lustre.

git checkout origin/aufs2.1-32

Спасибо за наводку, надо учиться пользоваться git.

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