Сергей Яремчук - Втоая жизнь старых компьютеров
Как и в приведенном выше примере, один из компьютеров играет роль главного (master), а остальные, сколько есть, подчиненные (slave). Для работы понадобятся сами ядра с патчем от openMosix и инструменты для работы openmosix-tools. Все это можно найти на странице http://prdownloads.sourceforge.net/openmosix/ , где доступны как сами патчи, так и уже перекомпили- рованые (серверные) ядра для разных платформ, причем уже доступны патчи для ядер серии 2.6. Мы будем устанавливать при помощи патча, самостоятельно компилируя все ядра.
Для этого берем ядро 2.4.22:
# wget -с http://www.kernel.Org/pub/linux/kernel/v2.4/ j
linux-2.4.22.tar.bz2
# wget -с http://tab.tuxfamily.org/download/openmosix/ j
patch-2.4.22-om-20030811.bz2
Теперь все разархивируем:
# tar -xjvf – linux-2.4.22.tar.bz2
# cd linux-2.4.22
# bzcat ../patch-2.4.22-om-20030825.bz2|patch -pi
# In -sf /path/to/linux-2.4.22 /usr/src/linux
Теперь заходим в него:
# cd /usr/src/linux
Конфигурируем серверное ядро:
# make xconfig [menuconfig, gconfig]
И смотрим, чтобы следующие пункты были включены в ядро, а не в виде модулей:
openMosix -
openMosix process migration support openMosix File-System
Networking options -
Packet Socket Socket Filtering TCP/IP networking IP: multicasting
File systems -
/proc file system support
Network File Systems -
NFS file system support NFS server support Provide NFSv3 server support
И компилируем новое ядро:
# make dep
# make bzlmage amp; amp; make modules amp; amp; make module sinstall
Для ядер серии 2.6 достаточно ввести make all.
Копируем ядро на свое место:
# mv arch/i386/boot/bzImage /boot/vmlinuz-openmosix
Конфигурируем загрузчик для работы с новым ядром, и после перезагрузки система будет готова. Если установка производится при помощи перекомпилированных пакетов, все вышеописанное (кроме настройки загрузчика) будет в систему добавленно автоматически. Для этого вводим:
# rpm -ivh openmosix-kernel-2.4.22-openmosixl.i686.rpm
Установка slave-ядра
Для начала сохраняем конфигурационный файл основного ядра.
# ср /usr/src/linux/.config /usr/src/linux/.confi gmaster
Само slave-ядро лучше собирать без поддержки модулей, т.к. настройка их загрузки через сеть – довольно хлопотное дело, также желательно побеспокоиться о компактности, отключив как можно больше ненужных функций.
Следующие опции нужно включить в ядро.
openMosix -
openMosix process migration support openMosix File-System
Networking options -
TCP/IP networking
IP: kernel level auto-configuration IP: DHCP support IP: BOOTP support
File systems -
/proc file system support
Network File Systems -
NFS file system support Provide NFSv3 client support Root file system on NFS
Но получившееся в результате ядро копируем в другое место, а именно в каталог /tftpboot. Например:
# ср /usr/src/linux/arch/i386/boot/bzImage J
/1ftpboot/1ts/vmlinuz-openmos ix-s1ave
И настраиваем его загрузку описанным выше способом. В принципе для этого не обязательно иметь установленный полный пакет Itsp, а все необходимое создать вручную, как это все сделать, можно найти в дополнительной литературе, указаной в конце статьи. Но все равно, для того чтобы избежать большого количества ручной работы, советую в таком случае скачать файл lts pinitrd kit и lts putil src ( http://prdown loads .sou reef orge. n et/ltsp/lts pin itrd kit-3.0.11- i386.tgz и http://prdownloads.sourceforge.net/ltsp/lts putil src- 3.0.0-i386.tgz).
Все, что мы делали до сих пор, фактически не отличается от предыдущего варианта ядра. Чтобы заставить компьютеры работать в одной связке и обмениваться нагрузкой, необходимо установить пакет openmosix-tools. Его также можно получить уже в виде перекомпилированных пакетов или все это проделать самому. Ничего особенного в компиляции нет:
# ./configure -with-kerneldir=/usr/src/linux
Флагом -with-kerneldir указываем путь к исходным файлам ядра, по умолчанию /usr/src/linux-openmosix:
# make amp; amp; make install
Или строим пакет для rpm-based дистрибутивов:
# rpmbuild -ta openmosix-tools-0.3.4.tar.gz
После окончания установки приступаем к настройке. Для начала в файле /etc/openmosix.map, определим узлы, которые будут задействованы в кластере. Каждая строка в этом файле состоит из трех частей:
1 192.168.0.1 1
2 192.168.0.100 10
Первым идет openMosix node-number узла в указанном диапазоне, второй строкой – IP-адрес или имя, описанное в файле /etc/hosts, и третьей – количество узлов в этом диапазоне. В данном примере нашему серверу присвоен openMosix node-number 1, а десяти узлам в диапазоне 192.168.0.100-192.168.0.109, номера 2-11. Если бы IP-ад- реса шли подряд, то можно было бы обойтись и одной строкой. После правки файла делаем его доступным и другим узлам.
# ср /etc/openmosix.map /opt/ltsp/i386/etc/
Туда же копируем и бинарные файлы openmosix-tools.
# ср /sbin/setpe /opt/ltsp/i386/sbin/
# ср /bin/mosrun /opt/ltsp/i386/bin/
# ср /bin/mosmon /opt/ltsp/i386/bin/
# ср /bin/mosctl /opt/Itsp/i386/bin/
# cp /bin/migrate /opt/ltsp/i386/bin/
# cp /etc/rc.d/init.d/openmosix /qpt/ltsp/i386/etc/rc.openmosix
И запускаем openMosix:
# /etc/init.d/openmosix start
После перезагрузки slave-узлов работу можно проконтролировать при помощи утилиты mosctl, введя номер нужного:
# mosctl status 2
А в файле /etc/in ittab рекомендуется строку:
si::sysinit:/etc/rc.d/rc.sysinit
заменить на:
si::sysinit:/bin/mosrun -h /etc/rc.d/rc.sysinit
Чтобы избежать проблем при использовании сервиса SSH в файле /etc/rc.d/iпit.d/sshd в функции start(), добавьте следующую линию:
test -f /proc/$$/lock amp; amp; echo 0 > /proc/$$/lock
Вот и все. Остается пожелать успехов, и я надеюсь, эта статья кому-то поможет.
Кроме документации на сайтах проектов LTSP и openMosix советую просмотреть еще и следующие документы:
1. Колисниченко Д. Загрузка по сети. – //журнал «Системный администратор», №9(10), 2003 г. – 47-49 с.
2. LTSP + openMosix: Integration How-To: http://home.onestop.net/jjensen/ltsp-om5r3c.html
3. openMosix and Diskless Nodes: http://www.gentoo.org/doc/en/openmosix-howto.xml