이제 클러스터의 규모도 커지고, 클러스터 관리 툴들도 많이 발전했고, 디스크 가격이 엄청 저렴하여 diskless cluster가 굳이 필요없지만, 그래도 아직 그 매력은 계속 남아 있다.
클러스터를 하나의 OS로 구동하는 SSI (Single System Image) 프로젝트와 여러가지 병렬파일시스템들은 여전히 계속 발전되고 있다.
이 글의 원본을 잃어버린지 오래나 다행히 어떤 분이 가지고 계서서 이렇게 가져오게 되었다.
원 저자는 본인이긴 하지만 그래도 이런 글을 보관해 주신것에 감사를 표하는 의미로 다음의 URL에 있는 글을 가져왔음을 밝힌다.
http://blog.theple.com/skyboarder76/folder/15.html?uid=25
======================================================================================
필자가 관심을 가지고 구축하는 클리스터는 과학기술 계산용 클러스터다. 이렇게 만든 클러스터에서 MPI(Message Passing Interface)와 OpenMP(SMP 기계에서 병렬 프로그램을 만들기 위해 사용하는 표준규약) 등을 이용해서 과학기술용 계산 프로그램을 병렬로 동작시킨다. 이번 호에는 이러한 과학기술 계산용 클러스터를 디스크리스(diskless) 클러스터로 구현하는 방법에 대해 알아보도록 하자.
글·도종관 기상연구소 예보연구실, 이용희 기상연구소 예보연구실
요즘의 리눅스 배포본들은 그 용량이 커져서, 설치를 하면 보통 2~3GB 정도의 디스크를 차지한다. 더군다나, 리눅스 배포본에서 설치되는 프로그램 외에 다른 프로그램을 시스템에 많이 설치해 사용할 경우 그 디스크 사용량은 더 많아진다(참고로 저자가 구축하는 시스템은 따로 설치하는 프로그램들을 위해서 추가로 5GB 정도의 공간이 더 필요하다). 그럼 이렇게 2GB 정도씩을, 예를 들어 16 노드 클러스터에 전부 설치한다고 생각해보자. 전체 32GB의 용량이 필요하고 엄청난 공간을 낭비하게 되는 것이다.
그 리고 이렇게 설치한 후에 관리하는 것도 큰 문제다. 사용자 계정이야 NIS를 사용하면 되지만, 시스템 소프트웨어를 업그레이드 할 때에는 모든 노드에서 소프트웨어를 설치하던지 아니면, 하나의 노드에서 설치하고 rcp, rdist, rsync와 같은 프로그램들을 사용해야 한다. 아니면 비싼 클러스터 관리전용 소프트웨어를 구매해서 사용해야 한다. 이 또한 번거로운 일이 아닐 수 없다.
그래서 필자는 디스크리스 클러스터를 고집한다. 단 하나의 노드에만(이걸 마스터 노드라고 하자) 운영체제가 설치되고, 나머지 노드는(이걸 이 글에서는 컴퓨팅 노드라고 하자) 네트워크로 부팅해서, 모든 파일시스템을 네트워크로 사용하는 방식이다. 이 방식의 이점은 많다. 일단 디스크를 절약한다. 그리고 시스템 소프트웨어 관리가 편하다. 마스터 노드에서만 설치하면 된다. 그리고 시스템에 문제가 있으면, 컴퓨팅 노드의 경우 그냥 전원을 내렸다가 올리면 된다. 디스크가 없기 때문에 아무런 걱정을 할 필요가 없다) 여기에서 문제가 되는 것은 리눅스 자체의 NFS(Network File System)나 기타 NFS의 안정성과 속도다. 그러나 리눅스 커널이 2.4로 높아지면서 NFS의 성능이나 안정성이 아주 많이 좋아졌다. 자 그럼 이제 클러스터를 만들어 보자.
클러스터용 커널 설치
리눅스 배포본에 딸려오는 커널은 디스크리스 클러스터에서는 사용할 수 없다. 디스크리스 클러스터에서 필요한 커널 부분이 포함되어서 만들어진 커널이 아니기 때문이다. 그래서 커널 소스를 가지고 새롭게 컴파일해야 한다. 커널 컴파일에 대해서는 여기저기 많은 문서들이 있으므로 자세하게 설명하진 않겠다. 참고로 되도록이면 하드웨어적인 것들과 파일시스템들은 모듈로 체크하지 말고, 커널에 포함되도록 “y”를 체크하기 바란다.
마스터 노드의 커널과 컴퓨팅 노드의 커널은 두 가지 부분이 다르게 설정된다. 따라서 먼저 마스터 노드용 커널을 만들고, 그 구성 파일에서 컴퓨팅 노드에서 바뀌어야할 것만 바꾸어서 컴퓨팅 노드용 커널을 만든다. 리눅스 커널 2.4.7 버전에 나타나는 항목 이름을 기준으로 설명하겠다.
커널을 컴파일할 때에 마스터 노드는 반드시 다음의 사항을 포함해야한다.
- make xconfig(또는 make menuconfig)에서 나타나는 메뉴에서 제일 먼저 있는 “Code maturity level options” 항목의 “Prompt for development and/or incomplete code/drivers” 항목에 “y”를 체크한다.
- “File System” 항목의 “Kernel automounter support”와 “Kernel automounter version 4 support(also supports v3)” 항목에 “y”를 체크한다.
- 위의 설정에서 “Next”를 누르면 나타나는 “Network File Systems”에서 “NFS file system support”, “Provide NFSv3 client support”, “NFS server support”, “Provide NFSv3 server support” 부분에 모두 “y”를 체크한다.
나머지 항목은 사용자의 시스템에 맞게 설정하고 커널을 만든다. 마스터 노드의 설정을 “Store Configuration to File” 버튼을 눌러서 다른 파일로 저장해 놓는다. 아래의 컴퓨팅 노드용 커널을 만들 때 쓰기 위함이다. 이후 커널을 만드는 것을 간단하게 명령어만 적으면 다음과 같다.
make dep; make clean; make bzImage; make modules; make modules_install
배 포본에 따라서 마스터 노드가 새로 만들어진 커널로 부팅할 수 있도록 리로 설정을 하고, 이렇게 만들어진 커널로 시스템을 부팅해본다. 자신의 시스템이 이상 없이 작동하면, 이제 컴퓨팅 노드용 커널을 만든다. 먼저 make clean; make xconfig 명령어를 수행한다. 그렇게 해서 뜨는 창에서 오른쪽 아래에 있는 “Load Configuration from File” 버튼을 눌러서, 위에서 저장한 파일을 입력하여 마스터 노드의 구성을 적용한다. 그리고 다음의 항목을 변경한다.
- “Networking options”의 “IP: kernel level autoconfiguration”을 선택하고, 그 아래 나타나는 “IP: BOOTP support” 항목을 선택한다.
- “File systems”를 선택하고, “Network File Systems” 항목을 선택한다. 그러면 앞의 마스터 노드에서는 회색으로 사용할 수 없었던 옵션인 “Root file system on NFS” 항목이 나타날 것이다. 이 항목에 “y”를 체크한다.
위의 두 가지만 마스터 노드와 다르다. 컴퓨팅 노드용 커널은 커널 이미지만 만든다. 모듈은 이미 마스터 노드용 커널을 만들 때 설치했으므로, 이번엔 할 필요가 없다. 다음의 명령어로 커널을 만든다.
make dep; make clean; make bzImage
이렇게 만들어진 bzImage와 System.map 파일을 다른 곳에 잘 보관해 둔다. 이제 준비 작업이 끝났다. 하지만 앞으로 구성할 부분은 세심한 설정이 필요하다.
컴퓨팅 노드를 위한 설정
TFTP 서버의 설정
먼 저 TFTP 서버를 구성해야 한다. /etc/xinetd.d/tftp(오래된 배포본에서는 /etc/inetd.conf) 파일을 열어보아서 혹시라도 tftp가 사용하지 않게 되어 있다면, 사용이 가능하도록 수정한다. /etc/xinetd. d/tftp 파일에서는 “disable=yes”라고 되어 있는 것을 “disable= no”라고 바꾸면 되고, /etc/inetd.conf에서는 주석처리가 되어 있는 tftp 부분의 주석을 없애주면 된다. 그리고 /etc/rc.d/init.d/xinetd restart(오래된 배포본에서는 /etc/rc.d/init.d/inet restart)를 실행하면 바뀐 설정이 적용된다. 기본적으로 tftp 서버는 /tftpboot를 기본디렉토리로 사용한다.
여 기서 할 일은 마스터 노드의 루트 파티션의 파일들은 고스란히 /tftpboot 디렉토리 아래의 서브 디렉토리에 복사하는 것이다. 컴퓨팅 노드마다 다르게 설정해야 할 것은 파일을 복사하고, 공동으로 쓰는 것은 하드 링크를 사용하게 된다. 앞에서 리눅스 설치할 때 루트 파티션을 크게 설정하고 /boot, /tmp, /var 파티션을 따로 만들지 않는 것이 바로 이 하드 링크 때문이다. 서로 다른 파티션에 있을 경우에는 하드 링크를 사용할 수 없고, 심볼릭 링크만을 사용할 수 있게 된다. 그러나 여기서는 하드 링크만을 사용하여야 한다. 그리고 이런 작업을 편하게 해주는 스크립트는 다음에서 구할 수 있다.
ftp://ftp.sci.usq.edu.au/pub/jacek/beowulf-utils/disk-less
위 의 사이트에 가서 sdct와 adcn 두 개의 파일을 다운받는다. sdct라는 이름의 스크립트는 /tftpboot/Template라는 디렉토리에 마스터 노드의 루트 파티션에 있는 내용의 대부분을 하드 링크로 만든다. /tftpboot/Template가 이제 모든 컴퓨팅 노드의 구성을 변경하는 곳이 된다. 이곳의 파일을 바꾸면 앞으로 만들게 될, 다른 컴퓨팅 노드의 파일도 전부 바뀌게 된다.
예를 들어 /tftpboot/Template/etc는 컴퓨팅 노드의 /etc 디렉토리로 만들어지게 된다. 각각의 컴퓨팅 노드의 설정을 하기 전에, 마스터 노드와 컴퓨팅 노드의 설정이 다르게 되어야 하는 것이 있다면, /tftpboot/Template 디렉토리 아래에 있는 파일을 자신의 클러스터에 맞게 변경한다.
각 노드마다 루트 파일시스템을 만들기 위해서 adcn이라는 스크립트를 사용하게 된다. 필요한 정보는 각 노드의 IP 주소, 각종 네트워크 정보, 그리고 그 노드에 있는 랜 카드의 하드웨어 주소다. 하드웨어 주소는 16진수 6자리 숫자로 나타내어지고, 그 값은 전세계 모든 랜 카드마다 각각 다른 값을 가진다. 이 값을 알아야 하는데 보통 랜카드에 적혀있거나, 랜 카드를 구입할 때 들어있는 플로피 디스켓에 있는 분석 프로그램을 확인하거나, 아니면 아래에 잠깐 설명할 etherboot로 한번 부팅해 보면 알 수 있다.
adcn의 사용법은 “adcn -h”를 해보면 옵션들이 전부 나온다. 자신이 구성할 모든 노드에 대해서 adcn을 사용하여 하나씩 명령어를 수행해 나간다. 참고로 그 사용법을 써보면 다음과 같다.
adcn -i 192.168.1.2 -c test1 -d test.re.kr -D eth0 -n 255.255.255.0 -s 192.168.1.1 -N 192.168.1.0 -g 192.168.1.1 -b 192.168.1.255 -m 00:D0:81:10:CD:9C
- i 192.168.1.2는 해당 컴퓨팅 노드의 IP 주소가 192.168.1.2임을 지정한다.
- c test1은 컴퓨팅 노드의 호스트 이름이 test1이 된다는 것을 지정한다.
- d test.re.kr은 해당 도메인 이름이 test.re.kr임을 지정한다.
- D eth0는 컴퓨팅 노드에서 사용될 랜 카드의 인터페이스 이름이 eth0임을 지정한다.
- n 255.255.255.0은 컴퓨팅 노드의 서브넷 마스크가 255.255.255.0임을 지정한다.
- s 192.168.1.1은 마스터 노드의 IP주소가 192.168.1.1임을 지정한다.
- N 192.168.1.0은 해당 컴퓨팅 노드의 네트워크 주소가 192.168.1.0임을 지정한다.
- g 192.168.1.1은 컴퓨팅 노드가 사용할 기본 게이트웨이의 IP 주소가 192.168.1.1임을 지정한다.
- b 192.168.1.255는 컴퓨팅 노드가 사용할 broadcast용 IP 주소가 192.168.1.255임을 나타낸다.
- m 00:D0:81:10:CD:9C는 컴퓨팅 노드 랜 카드의 하드웨어주소를 지정하는 것이다.
이 과정이 끝나고 /tftpboot 디렉토리 아래를 보면, 컴퓨팅 노드의 IP 주소로 된 디렉토리들이 있고, 그 아래에 보면 마스터 노드의 루트 파티션이 그대로 옮겨와 있음을 알 수 있다. 그러나 실제로는 서로 다른 파일이 아니라 하드 링크되어 있는 같은 파일이므로 실제 디스크에서 차지하는 공간은 얼마 되지 않는다. 이제 이 각각의 디렉토리들이 컴퓨팅 노드의 루트 파티션이 된다.
이 adcn이라는 스크립트는 /etc/hosts 파일과 /etc/exports (NFS 서버에 필요한 파일) 파일, 그리고 /etc/fstab 파일도 전부 자동으로 각 노드의 구성에 맞게 설정해 주므로 아주 편하다. 이제 TFTP 및 컴퓨팅 노드의 루트 파일시스템 설정이 끝났다. 위의 과정은 루트 파일시스템을 NFS로 접근하게 만드는 과정이다. 여기에 관한 문서는 리눅스 머신에서 /usr/src/linux/Documentation/nfsroot.txt에 위치해 있다. 필자는 etherboot를 이용한 방법을 사용할 것이다.
BOOTP 서버 설정
이제 BOOTP 설정을 해주어야 한다. 배포본마다 차이가 있는데 /etc/bootptab 아니면, /etc/bootparams 설정 파일이 된다. /etc/bootptab 파일에 각 노드마다 필요한 정보를 저장한다. 이 파일의 포맷은 설치된 rpm 패키지에 있는 맨페이지를 참고하기 바란다. 이 파일도 랜 카드의 하드웨어 주소가 필요하다. 그리고 bootp 서버를 실행시킨다. 다음은 bootptab 파일의 한 가지 예이다.
.global:sm=255.255.255.0:ds=192.168.1.1:gw=192.168.1.1:bf=bzImage.new:dn=test.re.kr:sa=192.168.1.1:
test1:td=/tftpboot:hd=/192.168.1.2/boot:tc=.global:ha=00E081036CE5:ip=192.168.1.2:rp=/tftpboot/192.168.1.2:
여기서 .global 아래에 적혀있는 것은 모든 컴퓨팅 노드에서 공통으로 적용되는 사항을 적어 놓은 것이다. .global에서 설정한 것들의 의미는 다음과 같다.
sm=255.255.255.0은 서브넷 마스크가 255.255.255.0임을 나타낸다.
ds=192.168.1.1은 DNS 서버가 192.168.1.1임을 나타낸다.
gw=192.168.1.1은 기본 게이트웨이가 192.168.1.1임을 나타낸다.
bf=bzImage.new는 부팅할 파일의 이름이 bzImage.new임을 나타낸다.
dn=test.re.kr은 도메인 이름이 test.re.kr임을 나타낸다.
sa=192.168.1.1은 TFTP 서버의 IP주소가 192.168.1.1임을 나타낸다.
그리고 test1이라는 줄에서, 이제 각각의 컴퓨팅 노드마다 다른 것들을 설정하게 된다. 하나씩 설명하면 다음과 같다.
- 제일 먼저 있는 test1은 컴퓨팅 노드의 호스트 이름이 test1임을 나타낸다.
- td=/tftpboot는 secure TFTP 서버에서 사용되는 TFTP의 기본 디렉토리가 /tftpboot임을 나타낸다. 요즘의 TFTP 서버는 대부분 이것을 필요로 한다.
- hd=/192.168.1.2/boot는 위의 td와 같이 사용되어, 커널 화일의 전체 디렉토리 경로가 / tftpboot/192.168.1.2/boot가 됨을 나타낸다.
- tc=.global은 /etc/bootptab 파일의 첫 번째 줄에 정한 template인 .global을 전부 포함하라는 의미다.
- ha=00E081036CE5는 컴퓨팅 노드 랜 카드의 하드웨어 주소다.
- ip=192.168.1.2는 컴퓨팅 노드의 IP 주소가 192.168.1.2임을 나타낸다.
- rp=/tftpboot/192.168.1.2는 컴퓨팅 노드가 루트 파일시스템으로 마운트할 디렉토리가 /tftpboot/192.168.1.2임을 지정한다.
컴 퓨팅 노드를 더 추가하려면, 위에 예로 적은 파일과 같은 형태로 그 아래에 test2, test3 등의 호스트 이름으로 각각의 노드에 맞는 정보를 적어주면 된다. 나름대로 상황에 맞게 /etc/bootptab 파일을 만들고 bootp 데몬을 가동하면 된다.
Etherboot를 이용해 부팅 디스크 만들기
이제 부팅을 하기 위한 플로피디스크를 만든다. 1998년에 만든 클러스터는 커널 자체를 플로피에 저장하여 사용하였다. 이럴 경우에는 커널을 새롭게 바꿀 경우, 15개의 플로피디스크를 다시 만들어야 했고, 부팅할 때 500KB 이상의 파일을 읽어야 하므로 부팅 시간이 많이 걸렸다. 작년에 만든 것은 이 과정을 간단히 하기 위해 etherboot (http://etherboot.sourceforge.net)를 사용했다. Etherboot가 하는 일은 랜 카드의 정보를 가지고 bootp 프로토콜로 bootp 서버로부터, 노드의 IP 주소, 커널의 이름, 위치정보, TFTP 서버의 IP 주소 등을 받고서는, TFTP 서버에서 커널을 tftp로 전송받아서 시스템의 메모리에 저장한 다음, 이 메모리에 저장된 커널이 실행되게 하는 역할을 한다. 이 다음 과정은 일반적인 리눅스의 부팅 과정과 똑같이 되는 것이다. 최근의 나오는 몇몇 메인보드는 이것조차 필요하지 않는 것들도 있다. 타이얀(Tyan)사의 썬더(Thunder) K7 메인보드의 경우 PXE라는 프로토콜을 사용하여 바이오스에서 바로 etherboot가 하는 역할을 하게 할 수 있다.
먼저 위에 적힌 홈페이지에서 etherboot를 받아서 설치한다. 설치 과정은 그리 어렵지 않다. make를 사용해서 컴파일이 끝난 다음 boot1a.bin과 자신의 랜 카드에 맞는 이미지로 플로피를 만든다. 예를 들어 랜 카드가 쓰리콤 905계열이라면 3c905.lzrom 파일을 찾아서 boot1a.bin과 한곳에 복사하고 다음 명령어를 사용하면 부팅용 플로피디스켓이 만들어진다.
cat boot1a.bin 3c905.lzrom > /dev/fd0
이 파일의 크기를 보면 16KB 정도밖에 안 된다. 그러므로 플로피디스크를 읽어들이는데 걸리는 시간은 매우 짧다. 이렇게 플로피디스크를 각 노드마다 같은 방식으로 만든다. 노드마다 플로피디스크가 다를 필요가 없다. 만약 노드 중에 랜 카드의 종류가 다른 것이 있다면, 그 랜 카드에 해당하는 lzrom 파일만 다르게 하여 만들면 된다.
그리고 etherboot 홈페이지에서 mknbi 패키지도 받아서 설치한다. mknbi가 하는 역할은 이미 만들어진 리눅스 커널 파일의 시작 부분에 코드를 추가하여, 네트워크로 부팅이 가능하게 만들어 준다. mknbi로 위에서 만든 컴퓨팅 노드용 커널을 바꾼다. 예를 들어 다음과 같은 명령어로 커널의 시작 부분을 바꾸게 된다.
mknbi --target=linux --output=bzImage.new --ip=bootp bzImage
--target=linux는 리눅스에서 사용할 것임을 지정한다.
--output=bzImage.new는 mknbi가 변경한 커널 파일을 저장할 파일이름이다.
--ip=bootp는 변경된 커널이 bootp를 지원하는 커널 파일로 만들 것임을 지정한다. 이것을 지정하지 않으면, 컴퓨팅 노드가 부팅할 때 NFS로 루트 파일시스템을 마운트할 수 없게 된다. 이 줄을 꼭 추가하기 바란다.
bzImage는 앞에서 컴퓨팅 노드용으로 만든 커널 파일 이름이다.
이 렇게 만들어진 커널 이미지 파일과 System.map 파일을 /tftpboot/aaa.bbb.ccc.ddd/boot 디렉토리 아래에 저장한다. aaa.bbb.ccc.ddd는 각자의 클러스터에 할당된 IP 주소를 나타낸다. 실제로는 /etc/Template/boot 한 곳에만 카피하고, 나머지 노드의 디렉토리에서는 하드 링크를 사용하면 된다.
컴퓨팅 노드를 위한 시작 스크립트 바꾸기
여기까지 설정이 제대로 되었다면 디스크리스 클러스터의 구성은 거의 끝났다. 아직 남아 있는 문제는 /etc/rc.d/init.d 아래에 있는 각종 시작 스크립트들의 문제다.
이 스크립트들은 내장 하드디스크에 리눅스가 설치된 것을 전제로 만들어진 스크립트라서, 대부분은 문제없이 동작하지만, 몇 개는 디스크리스 클러스터에 맞게 바뀌어야할 것들이 있다. 배포본마다 약간씩 차이가 있고, 구성에 따라 약간씩 차이가 있으므로, 이 부분에 대한 자세한 설명은 생략하기로 한다. 이번 호에서는 가장 중요한 한가지만 이야기하도록 한다.
/etc/rc.d/init.d/netfs 의 시작하는 순서가 /etc/rc.d/init.d /network 바로 다음에 오도록 한다. 배포본에서는 기본적으로 이 두 스크립트 사이에 많은 다른 스크립트가 실행된다. 컴퓨팅 노드는 모든 파일을 네트워크 파일시스템으로 접근해야 하므로 위와 같이 순서를 정해야 한다.
예를 들면, 보통의 경우 /etc/rc.d/rc3.d /S10network와 /etc/rc.d/rc3.d/S50netfs에서 숫자로 적은 부분이 시작하는 순서다(X윈도우를 바로 시작하게 했다면 rc3.d가 아니라 rc5.d가 될 것이다). 작은 숫자에서 큰 숫자의 순서로 그 스크립트가 실행된다. 기존의 S50netfs를 모두 지우고, S10network 바로 다음 숫자인 11을 사용하여 S11netfs를 /etc/rc.d/init.d/netfsf와 symbolic link로 생성하도록 한다.
여기서 하는 작업은 마스터 노드가 아니라, 컴퓨팅 노드에서 하는 것이므로 실제로 위의 작업을 해야하는 위치는 /tftpboot/Template /etc/rc.d/*와 /tftpboot/aaa.bbb.ccc.ddd/etc/rc.d/*가 될 것이다.
그리고 그 반대로 /etc/rc.d/rc0.d와 /etc/rc.d/rc6.d에서도 K10netfs, K20network 등으로 되어 있는 실행순서를 최대한 뒤쪽으로(가능한 큰 숫자로) 바꾸어야 한다. 네트워크로 모든 파일시스템을 마운트하므로 미리 네트워크 파일시스템의 연결을 끊어버리는 경우, 그 다음 실행되어야하는 스크립트 자체가 실행 불가능한 상태가 될 수도 있기 때문이다. 일단 이렇게 시도해 보자.
컴퓨팅 노드의 부팅 과정
이제 부팅을 해보자. 위에서 만든 플로피를 컴퓨팅 노드에 삽입한다. 그리고 BIOS 상에서 플로피가 제일 처음 부팅되는 디바이스로 설정한다. 그리고 시스템을 시작한다. 정상적인 작동은 다음과 같다.
시 스템이 BIOS 정보를 보여주고, 간단한 시스템 상태를 체크하고는 부팅 디바이스를 찾는다. 플로피가 첫 번째 부팅 디바이스이므로 플로피가 잠깐 깜박인다. 그리고 etherboot 메시지가 뜨고, 랜 카드 하드웨어 주소를 보여주고, bootp 서버를 찾는다.
만약 bootp 서버를 찾았다면, 그 서버에서 커널을 TFTP로 전송받는다. 패스트 이더넷이면 초당 10MByte/s의 전송속도를 가지므로, 순식간에 파일을 전부 받을 것이다. 이 부분이 부팅을 빠르게 하는 부분이다. 이런 부팅 과정이 마스터 노드에서는 리로를 로드하고, 디스크에서 커널을 읽는 과정과 같다고 보면 된다. 그 다음은 마스터 노드의 부팅 과정과 동일할 것이다.
아마 중간에 막히거나 부팅하다가 문제가 있는 부분이 있을 것이다. 그러나 위에서 언급한 netfs와 네트워크의 실행순서만 제대로 해 놓았다면, 다른 문제는 부팅할 때 나타나는 메시지를 보고 수정하는 것이 그리 어렵지는 않을 것이다. 자 이제 정상적으로 부팅되었다면 원하는 노드에 접속해서 클러스터를 사용해 보기 바란다.
디스크리스 클러스터 이외의 것들
이 제 리눅스는 그 위치가 확고해지고 있다. 한 가지 예로 인텔의 64비트 CPU인 아이테니엄을 제대로 돌릴 수 있는 운영체제는 리눅스, HP-UX, 그리고 윈도우 서버(Limited edition)뿐이다. 그만큼 이식성도 좋고, 많은 사용자층을 가지고 있다.
또한 이 글에 적힌 것 외에도 해볼 수 있는 재미있는 것들이 많다. 대형 시스템을 위한 batch 시스템인 OpenPBS(이전에는 NAS PBS라고 알려져있다), 클러스터를 마치 단일 시스템처럼 사용할 수 있게 해주는 ‘MOSIX’, 각종 클러스터 모니터링 시스템, 각종 저널링 파일 시스템, 각종 클러스터 전용 네트워크 파일시스템(GFS, PVFS) 등이다.
이 모든 것을 잘 사용할 수 있는 가능성은 이 글을 읽는 독자 모두에게 열려있다. 관련 정보를 읽어보고 해보고 싶다면 당장 시도해 보기 바란다.
Posted by 다꺼


