하드웨어를 설치하는 것은 간단히 알 수 있다. 주요과정은 다음과 같다:
여기서 부터 실제적인 작업에 들어갑니다! 주요과정:
/tmp
를 위해 1 GB를 할당하는 것이 좋은 생각이라는 것을 나중에 깨달을 것이다. #2.0.36
)을 내려받은 후 펜티엄 GNU CC 컴파일러 pgcc
http://www.goof.com/pcg/
( 펜티엄 II에 최적화된 코드를 생성시킴)를 이용하여 SMP 지원과 하드웨어에 알맞은 선택사항을 고려하여 커널을 컴파일한다. 다음의 최적화 선택사항들이 사용된다: pgcc -mpentiumpro -06-fno-inline-functions
SMP 지원을 사용하는 것은 커널 설정 메뉴에서 볼 수 있는 Processor type and features에 있는 버튼을 사용함으로써 가능하다.( make xconfig
를 실행하면서 시작된다.
http://www.csua.berkeley.edu/~gam3/knfsd/
가 향상된 NFS 성능을 얻기위해 그전에 설치되었던 사용자-공간 NFS 서버를 대체하여 설치되어 있다. 빠른 설치를 바라는 경우에는 레드햇 RPM 꾸러미를
http://rufus.w3.org/linux/RPM/
에서 구하여 설치하면 된다. 디폴트 선택사항이 사용된다.ssh
는
http://www.cs.hut.fi/ssh/
에서 구할 수 있고 컴파일하여 설치할 수 있다. (외부로 부터의 안전한 접속을 위해서) ssh-1.2.26
는 ssh-2.0.11
보다 선호된다. 왜냐하면 ssh v2.x
는 역방향으로 호환성이 없을뿐더러 많이 느리기 때문이다. sshd
데몬은 /etc/rc.d/rc3.d
에서 runlevel 3에서 시작한다. 최근에 ssh
레드햇 RPM이
http://rufus.w3.org/linux/RPM/
에서 제공되고 있고 다른 RPM 들도 설치하기가 편해지고 있다.eth1
으로서 IP를 128.118.170.11
로 설정되어있고 다른 하나는 사설 네트워크에 연결되어서 dummy IP 주소를 10.0.0.1로 할당되어 있다. Donald Becker에 의해 만들어진 3COM 3c905B 어댑터에 관한 최신 드라이버는 (3c59x.c v0.99H
http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html
) 커널내부로 컴파일되어 100Mbit/sec Full-duplex 연결을 보장한다. 이는 vortex-diag
유틸리티를 이용하여
http://cesdis.gsfc.nasa.gov/linux/diag/vortex-diag.c
를 이용하여 확인할 수 있다. 설정을 위해서 다음 파일을 변경해야한다: /etc/sysconfig/network, /etc/sysconfig/network-scripts/ifcfg-eth0
와 /etc/sysconfig/network-scripts/ifcfg-eth1
. 여기에 변경후 모습이다:
/etc/sysconfig/network: NETWORKING=yes FORWARD_IPV4=no HOSTNAME=cocoa.ihpca.psu.edu DOMAINNAME=ihpca.psu.edu GATEWAY=128.118.170.1 GATEWAYDEV=eth1 NISDOMAIN=ihpca.psu.edu /etc/sysconfig/network-scripts/ifcfg-eth0: DEVICE=eth0 IPADDR=10.0.0.1 NETMASK=255.255.255.0 NETWORK=10.0.0.0 BROADCAST=10.0.0.255 ONBOOT=yes BOOTPROTO=none USERCTL=no /etc/sysconfig/network-scripts/ifcfg-eth1: DEVICE=eth1 IPADDR=128.118.170.11 NETMASK=255.255.255.0 NETWORK=128.118.170.0 BROADCAST=128.118.170.255 ONBOOT=yes BOOTPROTO=none USERCTL=no
/etc/inetd.conf
파일의 다음 줄의 주석을 없애줌으로써 가능하다.
bootps dgram udp wait root /usr/sbin/tcpd bootpd리눅스 부팅 플로피는 3c905B 네트워크 어댑터를 지원하는 커널을 이용해서 준비할 수 있고 이 어댑터는 각 클라이언트 노드들이 부팅이 되고 각자 고유의 96-bit 네트워크 주소글 알려준다. (에를 들어 00C04F6BC052) 이 주소를 이용하면
/etc/bootptab
파일에 다음과 같이 설정해야한다:
.default:\ :hd=/boot:bf=install.ks:\ :vm=auto:\ :dn=hpc.ihpca.psu.edu:\ :gw=10.0.0.1:\ :rp=/boot/client/root: node1:ht=ethernet:ha=00C04F6BC0B8:ip=10.0.0.2:tc=.default node2:ht=ethernet:ha=00C04F79AD76:ip=10.0.0.3:tc=.default node3:ht=ethernet:ha=00C04F79B5DC:ip=10.0.0.4:tc=.default . . . node25:ht=ethernet:ha=00C04F79B30E:ip=10.0.0.26:tc=.default
/etc/hosts
파일은 다음과 같이 편집한다:
127.0.0.1 localhost localhost.localdomain # Server [COCOA] 128.118.170.11 cocoa.ihpca.psu.edu cocoa.aero.psu.edu cocoa # IP address <--> NAME mappings for the individual nodes of the cluster 10.0.0.1 node0.hpc.ihpca.psu.edu node0 # Server itself! 10.0.0.2 node1.hpc.ihpca.psu.edu node1 10.0.0.3 node2.hpc.ihpca.psu.edu node2 . . . 10.0.0.26 node25.hpc.ihpca.psu.edu node25
/etc/hosts.conf
파일에는 다음과 같은 내용을 포함하게 한다:
order hosts,bind이는 DNS 서버로 부터 어떠한 요청이 있기전에
/etc/hosts
파일에 있는 IP 주소를 강제로 찾게 해준다./etc/exports
에 다음과 같이 추가하면 된다:
/boot node*.hpc.ihpca.psu.edu (ro,link_absolute) /mnt/cdrom node*.hpc.ihpca.psu.edu (ro,link_absolute) /usr/local node*.hpc.ihpca.psu.edu (rw,no_all_squash,no_root_squash) /home1 node*.hpc.ihpca.psu.edu (rw,no_all_squash,no_root_squash) /home2 node*.hpc.ihpca.psu.edu (rw,no_all_squash,no_root_squash) /home3 node*.hpc.ihpca.psu.edu (rw,no_all_squash,no_root_squash) /home4 node*.hpc.ihpca.psu.edu (rw,no_all_squash,no_root_squash)
/boot/install.ks
은 다음과 같다:
lang en network --bootproto bootp nfs --server 10.0.0.1 --dir /mnt/cdrom keyboard us zerombr yes clearpart --all part / --size 1600 part /local --size 2048 part /tmp --size 400 --grow part swap --size 127 install mouse ps/2 timezone --utc US/Eastern rootpw --iscrypted kQvti0Ysw4r1c lilo --append "mem=512M" --location mbr %packages @ Networked Workstation %post rpm -i ftp://10.0.0.1/pub/CLUSTER/RPMS/wget-1.5.0-2.i386.rpm rpm -i ftp://10.0.0.1/pub/CLUSTER/RPMS/xntp3-5.93-2.i386.rpm /usr/bin/wget ftp://10.0.0.1/pub/CLUSTER/kernel/vmlinuz -O/boot/vmlinuz /usr/bin/wget ftp://10.0.0.1/pub/CLUSTER/conf/lilo.conf -O/etc/lilo.conf /sbin/lilo /usr/bin/wget ftp://10.0.0.1/pub/CLUSTER/conf/hosts.equiv -O/etc/hosts.equiv sed "s/required\(.*securetty\)/optional\1/g" /etc/pam.d/rlogin > /tmp/rlogin mv /tmp/rlogin /etc/pam.d/rlogin레드햇 KickStart 설치에 대해 더욱더 많은 정보는
http://www.cache.ja.net/dev/kickstart/KickStart-HOWTO.html
에서 얻을 수 있습니다.위에서 언급한 설치명령중에서 /etc/pam.d/rlogin
의 처음 라인은 다음과 같이 변경한다:
auth optional /lib/security/pam_securetty.soauth optional /lib/security/pam_securetty.so이것은
rlogin/rsh
를 동작시켜 서버에서 클라이언트로 패스워드 없이 연결하게 한다. 이는 클라이언트 노드의 소프트웨어 관리에 좋은 방법이다. 또한 /etc/hosts.equiv
파일은 다음과 같다:
node0 node1 node2 node3 . . . node25레드햇 리눅스 5.1 CD-ROM을 NFS를 각 클라이언트에 전달하는 서버에서 /mnt/cdrom으로 마운트 시키고 SMP를 지원하는 새로운 커널을 서버와 같은 방법으로 컴파일하고 레드햇 부트 디스켓에 있는 기존의 커널을 바꾼다. 이 커널은 클라이언트 노드에서 사용하기 때문에 특별히 많은 옵션이 필요하지 않다. 더우기 BOOTP를 이용해서 커널 레벨 자동설정은을 위한 옵션은 커널설정메뉴에서 네트워킹 선택사항에서 가능하게 할 수 있다. 이는 노드가 자동적으로 부팅과정중에 서버로 부터 ip를 부여받을 때 요구된다. 부트디스의 설정파일에 관한 지원은 KickStart 모드에서 직접적으로 부팅하기위해서 변형된다. 각 클라이언트 설정을 위해 필요한 모든 것은 부트 디스크를 집어넣고 워크스테이션에 전원을 키고 자동설정이 끝날 때까지 기다리면 된다.
brsh
(
http://www.beowulf.org/software/RPMS/beobase-2.0-1.i386.rpm
)와 같은 유용한 유틸리티들은 각 클라이언트 노드들에게 rsh
를 이용해 동일한 명령을 내리도록하기위해 설치된다. NIS는 각 클라이언트 노드에 사용자 로그인을 관리하기 위해 설치될 수 있지만 대신에 간단한 쉘 스크립트를 이용해서 서버의 /etc/passwd
, /etc/shadow
와 /etc/group
파일을 분배할 수 있다./etc/inetd.conf
에서 사용이 불가능하게 되고 각 클라이언트 노드들은 다음과 같이 보이게 된다:
shell stream tcp nowait root /usr/sbin/tcpd in.rshd auth stream tcp nowait nobody /usr/sbin/in.identd in.identd -l -e -o
http://www.mcs.anl.gov/mpi/
에서 받을 수 있으며 pgcc
를 이용하여 컴파일하면 된다. /usr/local/
파티션에 설치하는 것은 큰 문제가 없을 것이다. mpif77
스크립트는 사용자의 요구에 맞게 변형되었고 비슷한 mpif90
또한 만들어 졌다. /usr/local/mpi/util/machines/machines.LINUX
에 각 클라이언트에 대해 두가지 입력을 하면된다. (dual-processor SMP 노드를 사용하는 경우도 마찬가지다.) mpirun
을 이용하여 프로그램을 수행한다.
http://www.scri.fsu.edu/~pasko/dqs.html
에서 다운로드 할 수 있고 컴파일하여 /usr/local/DQS/
에 설치되고 NFS를 이용하여 모든 클라이언트를 이용해서 접근가능 하게 한다. 적절한 서버와 클라이언트 변화들은 /etc/services
의 서비스들을 첨가하고 서버에서 qmaster
를 클라이언트에서는 dqs_execd
를 시작하여 작동하게 할 수 있다. 하지만 몇몇 문제점들이 닥칠 수도 있다. 이는 DQS의 잘못된 문서화때문이다. 본저자가 DQS 설정을 하여 클라이언트 노드가 인식하도록 하기까지 너무 오랜 시간이 걸렸지만, 한번 설정이 끝나면 나머지는 쉽게 할 수 있다. Wrapper 쉘 스크립트는 DQS 결과를 잘만들어 내게하고 조금의 향상을 시키는 데 필요한 qsub
, qstat
와 qdel
를 위해 본 저자가 변형되었다. 예를 들어 qstat
은 변형을 하여 queue에 있는 기급한 작업에 의해 요청되는 노드의 수를 보여주게 만들었다. 또한 다른 세가지 qinfo
,qload
와 qmem
는 각 노드들을 위해서 유용한 load 데이터를 주게 만들었고 클러스터 리소스 이용에 사용되게 만들어졌다.pgcc
컴파일러를 이용하는 것이 C/C++ 코드를 위해 권장된다. 특히 전형적인 FPU intensive number crunching 노드를 위해 pgcc
를 -mpentiumpro -06 -funroll-all-loops
옵션를 이용하면 gcc
를 이용하는 것 보다 실행시간이 30% 향상을 가져온다.이 문서는 Anirudh Modi <htmlurl url="mailto:anirudh-modi@psu.edu" name="anirudh-modi@psu.edu">에 의해 유지된다. 문제가 있거나 제안사항이 있으면 본저자에게 메일을 주십시오.