本報告では,ディスクレスクラスタの構築を行うにあたり,必要となる各種パッケージの インストールとその設定を行い,その動作確認を行った.具体的な作業内容としては,ま ず,カーネルの再構築,BOOTP等の必要なソフトウェアのインストール,ルートファイルシ ステムの作成を行った.これらの作業を終了した後,GRUB(GRand Unified Bootloader)の 起動用フロッピーディスクを作成し,これによるネットワークからの起動から,ディスクレ スクラスタの動作確認を行うことができた.
ディスクレスクラスタとは,各計算ノードがハードディスクのないPCクラスタのことである. 通常,ディスクフルクラスタでは,各計算ノードがハードディスク内にあるルートファイル システムにマウントし,そこから起動スクリプトを読み込み,実行する.この起動スクリプ トには,ネットワークに関する設定も行われている.しかし,ディスクレスマシンは,ハー ドディスクの代わりとなるブートサーバを作成する必要があり,これにNFSでマウントする. このためには,各ディスクレスマシンは,自分のIPアドレスやネットワークの設定をカーネル の再構築の際に取得するために,BOOTP,DHCP,RARPのいずれかを利用する.今回は,BOOTPを 利用し,1ノードのディスクレスマシンを用いて,ディスクレスクラスタの構築を行った.
カーネルは,OSの中核となる部分である.タスクの切り替え,仮想記憶処理,システムコール の処理等,基本的な処理を担っている.その為,OSを利用する際に,便利な機能を追加したり, 不要な機能を削除するのにカーネルの再構築が行われる.そこで,今回は,新たにネットワー クの機能に関する設定を行うためにカーネルの再構築を行った.行った設定は,以下の通りで ある.
#vi /usr/src/linux/net/ipv4/ipconfig.c
int ic_set_manually __initdata = 0;
int ic_enable __initdata = 0;
int ic_set_manually __initdata = 1;
int ic_enable __initdata = 1;
BOOTPは,クライアント側(この場合は,ディスクレスマシン側である.)のマシンがIPアドレス 等のネットワーク情報を自動的にサーバ側から取得するためのプロトコルである.基本的な機能は, ほとんどDHCPと同様であるが,基本的に,DHCPは,BOOTPの機能を拡張したものである.行った作 業手順は,以下の通りである.
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /var/tftpboot
bootps dgram udp wait root /usr/sbin/bootpd bootpd -i -t 120 -c /var/tftpboot -d4
#/etc/init.d/inetd restart
.default:\
:sm=255.255.255.0:\
:gw=192.168.30.1:\
:ht=ethernet:\
:hn:to=-18000:
hayashi2:hd=/var/tftpboot/192.168.30.179:tc=.default:ha=00D0B7D54926:ip=192.168.30.179: rp=/var/tftpboot/192.168.30.179:sa=192.168.30.176
ここでは,ハードディスクを持たないディスクレスクラスタがルートファイルシステムにNFSでマウント
できるようにするためのサーバ側マシンの設定を行った.ここでの設定は,ディスクフルノードを構築
する際に行ったように,通常のNFSサーバをインストールすればよい.その後,/etc/exportsを
以下のように編集した.これは,ディスクレスマシンノード用のルートを/var/tftpboot以下に
する場合である.
/var/tftpboot/ 192.168.30.0/255.255.255.0 (no_root_squash,rw)
ディスクレスマシン用のルートファイルシステムを作成した.これは,サーバ内の/var/tftpboot/
ディレクトリの中に作成し,ディスクレスマシンはここにマウントすることになる.まず,ディスクレス
マシン内に/var/tftpboot/ディレクトリが存在しないので,自分で作成した.
#mkdir -p /var/tftpboot/192.168.30.179
boot,floppy,initrd,proc,tmp
#cd /var/tftpboot/192.168.30.179
#mkdir boot floppy initrd proc tmp
bin,sbin,lib,home,usr,root,etc,dev,var
cp -a /<コピーするディレクトリ名> /var/tftpboot/192.168.30.179
hostname,fstab,hosts.equiv,network/interfaces,hosts,mpich/machines.LINUX
192.168.30.178:/var/tftpboot/192.168.30.179/ / nfs rw 0 2
proc /proc proc defaults 0 0
/dev/fd0 /floppy auto defaults,user,noauto 0 0
auto eth1
iface eth1 inet static
address 192.168.30.1
netmask 255.255.255.0
network 192.168.30.0
broadcast 192.168.30.255
#make dep
#make bzImage
#mknod nfsroot b 0 255
#rdev /var/tftpboot/bzImage /dev/nfsroot
構築したディスクレスクラスタの動作確認を行うため,GRUB起動用ディスクを作成した.GRUBとは,LILOのような OSの起動のためのブートローダである.LILOは,ハードディスク上の特定のセクタからカーネルのブートイメージ を読み込んで実行される.しかし,GRUBは,ファイルシステムを解釈して,ファイルシステム上のディレクトリパ スでブートイメージを探し出すことが可能であるため,GRUBが対応しているファイルシステム内の任意のファイル を実行することができるという利点がある.GRUB起動用ディスクを作成するには,いくつか方法が挙げられるが, 今回は,以下の手順で行った.
$./configure --prefix=<インストール先ディレクトリ>
$make
$make install
$./configure --enable-tulip
$make
#mount /floppy
#mkdir -p /floppy/boot/grub
#cp stage1/stage1 /floppy/boot/grub/stage1
#cp stage2/stage2 /floppy/boot/grub/stage2
#cp docs/menu.lst /floppy/boot/grub/menu.lst
default 0
timeout 1
title NetBoot
bootp
kernel (nd)/var/tftpboot/bzImage root=/dev/nfsroot
#<インストール先ディレクトリ>/sbin/grub
grub> root (fd0)
grub> setup (fd0)
grub> quit
#umount /floppy
ディスクレスクラスタは,ハードディスクを持たないという点で,ディスクフルクラスタと大きく異なり,その 分,以下のような利点が挙げられる.
今後の課題として,OSCARとROCKSの調査を行う予定である.
Copyright (C) 2003 Tomoyuki Hiroyasu, All rights reserved. Copyright (C) 2003 Mitsunori Miki, All rights reserved. Copyright (C) 2003 Masahiro Abe, All rights reserved. No part of this document may be reproduced, copied, distributed, transferred, modified, or transmitted, in any form or by any means, without the prior written permission of the authors. In no event shall the authors be liable for any damages caused in any way out of the use of this document.