Diskless nodes/ko

이 설명서는 젠투 리눅스에 무(無) 디스크 노드 설정을 만드는 방법을 도와줍니다.

이 설명서 정보
이 설명서는 젠투 리눅스 배포판을 기반으로 무(無) 디스크 워크스테이션 설정을 도와줍니다. 경험자는 무(無) 디스크 노드 및 네트워크와 관련된 여러 설명서에 쉽게 적응할 수 있지만, 우리 모두는 각각의 입장에 있는 편이기에, 리눅스 초짜들에게 가능한한 친숙하게 작성하여 제공하려 하며, 이 안내서가 흥미있는 사람이든, 덕후든 아니든간에 쉽게 설치할 수 있도록 도움이 되길 바랍니다.

무(無) 디스크 머신이란게 뭔가요?
무디스크 머신은 하드 디스크, 플로피 드라이브, CD-ROM 같은 보통 사용하는 부팅 장치가 없는 PC입니다. 무티스크 노드는 네트워크를 통해 부팅하며, 저장공간을 로컬 하드 디스크처럼 제공하는 서버가 필요합니다. 이제 우리는 이 서버를 마스터라 하고, 무디스크 머신을 슬레이브라 하겠습니다(이름으로 둡니다). 슬레이브 노드는 PXE 부팅 또는 이더부트 기능을 제공하는 네트워크 어댑터가 필요합니다. 지원 목록은 Etherboot.org를 확인하세요. 대부분 최신 카드에서는 PXE를 지원하며, 수많은 마더보드 내장 어댑터에서도 동작합니다.

시작하기 전에
마스터 노드에 젠투를 설치해야 하고, 슬레이브 노드의 파일 시스템을 저장할 충분한 용량을 마스터 노드에 확보해야 합니다. 또한 로컬 영역 연결에서 한 인터페이스는 인터넷에 연결했는지 확인해야 합니다.

커널 설명
커널은 하드웨어와 머신에 불러온 모든 다른 소프트웨어 사이에 놓인 프로그램이며, 커널 기반 운영체제의 핵심입니다. 컴퓨터를 시작하면 BIOS는 하드 드라이브의 예약 부팅영역의 기계어 명령을 실행합니다. 이 기계어 명령은 커널을 불러드리는 부트로더 입니다. 커널을 불러오고 나면 모든 프로세스를 커널이 처리합니다.

커널과 커널 설정에 대한 더 많은 내용은 커널 HOWTO를 보시는 것이 좋습니다.

마스터 커널 설정
마스터 커널은 원하는대로 사용자 설정을 한 만큼 커닐 수 있지만 선택해야 할 커널 옵션은 극히 일부입니다. 다음을 입력하여 커널 설정 화면으로 이동하십시오:

파일을 직접 설정하는 안전한 대안책으로 회색에 시퍼런 색이 곁들인 화면이 떠야합니다. 커널이 잘 동작한다면 GUI를 빠져나가서 다음을 입력하여 현재 설정 파일을 저장하시는 것이 좋습니다:

하위 메뉴를 따라가서 아래 항목을 내장 항목(그리고 모듈 아님)으로 표시했는지 확인하십시오. 아래 옵션은 2.6.10 버전의 커널부터 볼 수 있습니다. 다른 버전을 사용한다면 나타난 글씨나 순서가 다를 수도 있습니다. 최소한 아래 나타난 항목만 선택했는지 확인하십시오.

마스터 노드 또는 보안 방화벽을 통해 인터넷망을 쓰려면 iptables 지원을 추가했는지 확인하십시오:

패킷 차단 기능을 활용하려면, 다음에 나머지 부분을 모듈로 추가할 수 있습니다. 젠투 보안 핸드북 방화벽 정보에서 어떻게 방화벽을 제대로 설정할 수 있는지 읽어보십시오.

마스터 커널을 재설정한 후, 다음과 같이 다시 빌드하십시오:

어떤 부트로더를 사용하느냐에 따라 또는 에 새 커널 설정 항목을 추가하시고, 새 커널을 기본 항목으로 지정하십시오. 이제 새 bzImage 파일을 boot 디렉터리에 복사했으며, 여러분이 앞으로 해야 할 모든 일은 시스템을 재부팅하여 새 옵션을 불러오는 것입니다.

슬레이브 커널 알아보기
슬레이브 커널을 어떤 모듈도 포함하지 않고 컴파일 하는 것을 추천하지만, 원격 부팅을 통해 불러오고 설정하는 과정을 어렵고 필요하지 않은 과정입니다. 게다가, 슬레이브 커널은 작아야 하며, 네트워크로부터 효율적으로 부팅 과정을 수행하기 위해 가능한한 최소화해야 합니다. 이제, 마스터에서 설정한 동일한 위치에 슬레이브의 커널을 컴파일하겠습니다.

혼동을 막고 시간을 절약하기 위해 마스터의 설정 파일을 다음 명령을 입력하여 백업하시는게 좋습니다:

이제 마스터 커널을 설정한 동일한 방식으로 슬레이브 커널을 설정하겠습니다. 새 설정 파일로 시작하려 한다면, 다음 명령을 입력하여 기본 파일로 언제든 되돌릴 수 있습니다.

이제 다음 명령을 입력하여 설정 화면으로 이동하십시오:

다음 옵션을 커널 모듈이 아닌 내장 항목으로 선택했는지 확인하십시오:

이제 슬레이브 커널을 컴파일해야 합니다. (어쩌다가) 마스터 커널을 빌드하여 모듈을 꼬이게 하고 싶진 않기에 여기서는 매우 조심해야 합니다:

이제 마스터에 슬레이브의 파일과 필요한 시스템 파일을 저장할 디렉터리를 만드십시오. 여기선 를 사용하겠지만, 어디든 원하는 디렉터리를 사용해도 됩니다. 이제 슬레이브의 bzImage 파일을 디렉터리에 복사하십시오:

슬레이브 파일 시스템 기반 설정
마스터 파일 시스템과 슬레이브 파일 시스템은 상당 부분을 주물러 바꿀 수 있습니다. 바로 지금 우리는 적당한 설정 파일의 기반 파일 시스템을 설정하고 마운트 지점을 지정하는 것입니다. 먼저 우리가 해야 할 일은 첫 슬레이브 머신에 대한 디렉터리에 디렉터리를 만드는 것입니다. 각각의 슬레이브에서는 자신의 루트 파일 시스템이 필요한데 각각의 시스템 파일을 공유하면 권한 문제가 생길 수 있으며, 최악의 경우는 복구하기 어렵게 깨질 수도 있습니다. 이 디렉터리를 원하는대로 불러올 수 있지만 슬레이브의 유일하며 혼동되지 않는 IP 주소를 사용하시는것이 좋겠습니다. 첫번째 슬레이브에 할당할 정적 IP는 예를 들어 과 같다면:

의 다양한 설정 파일은 슬레이브에서 작업하도록 바꿔야 합니다. 마스터의 디렉터리를 새로운 슬레이브 루트에 다음 명령을 입력하여 복사하십시오:

이 파일시스템은 더 많은 마운트 지점과 디렉터리가 필요하기 때문에 아직 준비되지 않았습니다. 이들을 만들려면 다음 명령을 입력하십시오:

대부분의 이 "내용"은 여러분이 알아볼 수 있어야 합니다. ,, 같은 것들을 슬레이브 장치가 시작할 때 실려갑니다. 다른 디렉터리는 그 다음에 마운트합니다. 또한 파일의 내용을 바꿔 슬레이브 호스트 이름을 반영해야 합니다. 바이너리, 라이브러리, 기타 파일은 슬레이브 부팅을 시도하기 전에 이 설명서에서 이 과정 다음에 언급하겠습니다.

를 에서 실어가겠지만,  항목을 만들어야 합니다. 그렇지 않으면 "unable to open initial console(초기 콘솔을 열 수 없습니다)"라는 오류를 만납니다.

DHCP 서버 알아보기
DHCP는 동적 호스트 설정 프로토콜(Dynamic Host Configuration Protocol)의 약자입니다. DHCP 서버는 PXE 부팅을 시작할 때 가장 먼저 통신할 컴퓨터입니다. DHCP 서버의 주된목적은 IP 주소 할당입니다. DHCP 서버는 호스트의 이더넷 MAC 주소를 기반으로 IP 주소를 할당할 수 있습니다. 슬레이브에서 IP 주소를 받으면, DHCP 서버는 초기 파일 시스템과 커널이 어디있는지 슬레이브에게 알려줍니다.

시작하기 전에
시작하기 전에 동작하는지 확인해야 할 몇가지가 있습니다. 먼저 네트워크 연결을 확인하십시오:

"eth0" 장치가 실행중임을 확인할 것입니다. 결과는 다음과 같이 나와야합니다:

eth0 장치가 올바르게 동작하는 모습

MULTICAST라는 메시지가 나와야 합니다. 안나오면 multicast support를 포함하도록 커널을 다시 컴파일해야 합니다.

DHCP 서버 설치
네트워크에 DHCP 서버가 없다면 이걸 설치해야합니다:

네트워크에 DHCP 서버가 있다면, PXE 부팅 기능이 제대로 동작하도록 설정 파일을 편집해야 합니다.

DHCP 서버 설정
DHCP 서버를 시작하기 전에 여러분이 설정해야 할 설정 파일은 하나밖에 없습니다. 제공해드린 예제 파일을 복사하고 편집하십시오:

의도한 방식 대로의 파일의 일반 구성은 다음과 같습니다:

예제 dhcpd.conf 구성

블록은 추가적인 항목이며, 동일한 네트워크 구성에 따라 여러분이 원하는대로 할당하려는 IP에 대해 사용해야합니다. 최소한  을 선언해야 하며, 선택적인   블록에서는 이들 항목간의 옵션을 묶을 수 있습니다. 의 바람직한 예제는 다음과 같습니다:

dhcpd.conf 예제

다음의 IP 주소는 지정  파일에 요청합니다. 이 IP 주소는 tftp 서버의 IP여야 하며, 보통 마스터의 IP주소와 같습니다. 은 디렉터리에 상대적입니다(tftp 서버의 특정 옵션이 이 디렉터리를 찾기 때문입니다). 블록에는 옵션에서 맥 주소를 지정하고,   에서 고정 IP 주소를 각각의 MAC 주소에 대해 할당합니다. 에 대한 상당히 좋은 맨 페이지에 이 설명서의 범위를 능가하는 옵션의 설명이 곁들여져있습니다. 다음 명령을 입력하면 읽어볼 수 있습니다:

DHCP 서버 시작하기
dhcp 초기화 스크립트를 시작하기 전에 파일을 편집하여 다음과 같은 모양새가 되도록 하십시오:

/etc/conf.d/dhcp 예제

변수는 DHCP 서버를 구동할 장치이며, 이 경우 입니다. 에 더 많은 인자를 추가하면 여러대의 이더넷 카드를 사용하는 복잡한 네트워크 구성에 유용합니다. dhcp 서버를 시작하려면, 다음 명령을 입력하십시오:

dhcp 서버를 시작 스크립트로 추가하려면 다음 명령을 입력하십시오:

DHCP 서버 문제 해결
노드가 부팅하는지 보려면 에서 찾아 볼 수 있습니다. 노드가 성공적으로 부팅한다면, 파일의 아랫줄에는 다음과 같은 내용이 있어야 합니다:

dhcp가 만든 로그 파일 목록 예제

다음의 메시지가 나타났다면 설정 파일에서 무엇인가가 잘못되었을지 모르지만 DHCP 서버에서 올바르게 IP 주소를 뿌려줌을 의미합니다.

dhcp 서버 오류 예제

설정 파일 내용을 바꿀 때마다 DHCP 서버를 다시 시작해야 합니다. 서버를 다시 시작하려면 다음 명령을 입력하십시오:

TFTP 서버 알아보기
TFTP는 단순 파일 전송 프로토콜(Trivial File Transfer Protocol)을 의미합니다. TFTP 서버는 슬레이브의 커널과 초기 파일 시스템을 실어나릅니다. 모든 슬레이브 커널과 파일 시스템은 TFTP 서버에 저장하기 때문에, 마스터를 TFTP 서버로 만드는 것이 바람직합니다.

TFTP 서버 설치
가장 추천하는 tftp 서버는 tftp-hpa 패키지입니다. 이 tftp 서버는 SYSLINUX를 만든 사람이 만들었으며 pxelinux와 가장 잘 동작합니다. 설치하려면 다음과 같이 간단하게 입력하십시오:

TFTP 서버 설정
를 편집하십시오. 에 tftp 루트 디렉터리를 지정해야 하며, 에 명령행 옵션을 지정해야 합니다. 결과는 다음과 같아야 합니다:

/etc/conf.d/in.tftpd 예제

옵션은 이 서버가 독립 실행 상태로 동작함을 나타내므로, inetd를 실행할 필요가 없습니다. 는 로그/오류 메시지를 자세하게 나타내야 함을 나타냅니다. 옵션은 tftp 서버의 루트를 지정합니다.

TFTP 서버 시작하기
tftp 서버를 시작하려면 다음 명령을 입력하십시오:

이 명령은 파일에서 설정한 옵션대로 tftp서버를 시작합니다. 이 서버를 부팅할 때 자동으로 시작하려면 다음 명령을 입력하십시오:

PXELINUX 알아보기
이 장은 Etherboot를 활용한다면 필요치않습니다. PXELINUX는 LILO 또는 GRUB과 같은 네트워크 부트로더이며 TFTP를 통해 전달합니다. 커널과 초기 파일 시스템이 어디있는지 알려주는 작은 명령 집합으로 핵심적으로 구성되어있으며, 다양한 커널 옵션을 제공합니다.

시작하기 전에
H. Peter Anvin이 만든 SYSLINUX 패키지에 딸려오는 pxelinux.0 파일을 복사해야 합니다. 다음 명령을 입력하면 설치할 수 있습니다:

PXELINUX 설정
tftp 서버를 시작하기 전에 pxelinux를 설정해야 합니다. 먼저 pxelinux 바이너리를 디렉터리에 넣으십시오:

이 과정에서 기본 부트로더 설정 파일을 만듭니다. 16진수 클라이언트 IP 주소로 된 파일이 있는지 바이너리에서  디렉터리를 찾아봅니다. 파일이 없다면 파일 이름의 가장 오른쪽 자리를 지우고, 숫자가 바닥날 때까지 계속 찾습니다. 2.05 이상의 syslinux에서는 먼저 MAC 주소 다음의 파일 이름에 대해 검색을 수행합니다. 찾은 파일이 없다면, 앞서 언급한 발견 루틴을 따라갑니다. 발견한 파일이 없다면 파일을 사용합니다.

pxelinux.cfg/에서 순서대로 보이는 PXE 검색용 파일

파일로 시작해보겠습니다:

pxelinux.cfg/default 예제

태그는 앞서 컴파일한 커널 bzImage를 pxelinux가 찾도록 지시합니다. 태그는 커널 초기화 옵션을 붙입니다. 슬레이브 커널에 를 넣었기 때문에 nfsroot를 여기에 지정합니다. 첫번째 IP는 마스터의 IP이고 두번째 IP는 에 있는 디렉터리 이름이며, 여기에는 슬레이브 초기 파일 시스템이 들어갑니다.

Etherboot 알아보기
Etherboot는 네트워크 부팅 이미지를 TFTP 서버에서 가져와서 부팅합니다. PXE 에서와 같이 LILO나 GRUB와 동일합니다. 유틸리티는 다양한 옵션을 활용하여 여러가지 이미지를 만들 수 있도록 합니다.

시작하기 전에
(태그를 붙여 네트워크 부팅할 때사용할 커널 이미지를 만드는 유틸리티) 패키지를 가져와서 Etherboot 이미지를 만들어야 합니다. 이 도구는 기존 커널에서 미리 설정한 커널로 만듭니다. 여기에는 한참 아래에서 보여드릴 부팅 옵션도 있습니다.

Etherboot 설정
이 장에서는 간단한 Etherboot 이미지를 만들겠습니다. DHCP 서버가 클라이언트 경로를 dhcp.conf에서 "option root-path"로 주기 때문에, 여기에 넣을 필요가 없습니다. 더 자세한 내용은 mknbi 설명서에서 찾아볼 수 있습니다.

부팅 이미지를 만들겠습니다. DHCP에서 전달할 수 있는 ELF 부팅 이미지를만들고 커널의 루트 경로에 넣겠습니다. 또한 커널에서 네트워크 상의 DHCP 서버를 탐색하도록 커널에 지시합니다.

네트워크 부팅 과정 문제 해결
네트워크 부팅 과정의 문제를 추적하는데 할 수 있는 일은 얼마 없습니다. 먼저 라고 하는 도구를 사용할 수 있습니다. 를 설치하려면 다음 명령을 입력하십시오:

이제 다양한 네트워크 트래픽을 살펴보고 클라이언트/서버간의 대화가 동작하는지 확인할 수 있습니다. 무엇인가가 동작하지 않는다면 여러분이 확인하려는 요소는 줄어듭니다. 먼저 클라이언트/서버가 물리적으로 제대로 연결되었는지, 네트워크 케이블이 끊어지지 않았는지 확인하십시오. 클라이언트/서버가 각각의 포트에서 요청을 받지 않는다면 방화벽의 방해가 있는지 확인하십시오. 두 컴퓨터간의 교류가 있는지 확인하려면 다음 명령을 입력하십시오:

다음과 같이 입력하면 tftp 포트와 같은 각각의 포트에서 감청 대기중인지 확인할 수 있습니다:

보통 확인할 수 있는 오류는 "PXE-E32: TFTP open time-out" 입니다. 아마도 방화벽 문제일지도 모릅니다. 를 사용한다면 와 를 점검하고, 올바르게 설정했는지 확인하십시오. 클라이언트는 서버에 연결할 수 있어야합니다.

NFS 서버 알아보기
NFS는 네트워크 파일 시스템(Network File System)입니다. NFS 서버는 디렉터리를 슬레이브에 전달할 때 사용합니다. 이 부분은 나중에 개별적으로 설정할 수 있지만, 지금은 디스크 없이 슬레이브 노드를 부팅할 수 있게 준비하는 과정입니다.

포트매퍼 알아보기
여러 클라이언트/서버 서비스에서는 각각의 포트에 대한 포트를 감청하지 않지만 RPC(원격 프로시저 호출)에 의존합니다. 서비스를 초기화하면 임의의 포트를 감청하며 이 포트를 포트매퍼 유틸리티에 할당합니다. NFS는 RPC에 의존하기 때문에 NFC를 시작하기 전에 포트매퍼를 실행해야 합니다.

시작하기 전에
NFS 서버는 커널 차원의 지원이 필요하기에, 커널에 이 항목이 없다면 마스터의 커널을 다시 컴파일해야합니다. 마스터 커널 설정을 다시 확인하려면 다음 명령을 입력하십시오:

커널을 올바르게 설정했는지 확인한다면 다음과 같은 내용이 나와야합니다:

NFS 서버 설치
다음 명령을 입력하면 포티지를 통해 NFS 패키지를 설치할 수 있습니다:

이 패키지는 포트매핑 유틸리티, NFS 서버, NFS 클라이언트 유틸리티를 이머지하며, 의존성 초기화를 자동으로 처리합니다.

NFS 서버 설정
편집해야 할 주된 설정 파일에는 세가지가 있습니다:

NFS 설정 파일

파일은 어떻게 누구에게 무얼 NFS를 통해 내보낼 것인지 지정합니다. 슬레이브의 fstab의 내용이 바뀌어서 마스터가 내보내는 NFS 파일 시스템에 마운트할 수 있게 됩니다.

보통 마스터의 는 다음과 같습니다:

마스터 /etc/exports 예제

첫번째 내용은 내보낼 디렉터리고, 다음 내용은 누구에게 어떻게 내보낼 것인지를 나타냅니다. 이 내용은 각각의 디렉터리에 누가 마운트할 수 있어야 하는지, 마운트한 클라이언트가 파일 시스템에서 할 수 있는 일은 무엇인지 두 부분으로 나뉩니다. 는 읽기 전용을 의미하고 는 읽기/쓰기를 의미합니다. 와  옵션은 디스크에 기록하는 무 디스크 클라이언트에 중요하므로 입출력 요청이 나타나면 "압축"하지 않습니다. 슬레이브의 파일은 다음과 같아야 합니다:

슬레이브 fstab 예제

이 예제에서 "마스터"는 그냥 마스터의 호스트이름이지만, 쉽게 마스터의 IP 주소가 될 수 있습니다. 첫번째 내용은 마운트 할 디렉터리를 나타내며 두번째 내용은 어디인지를 나타냅니다. 세번째 내용은 파일 시스템을 의미하며 NFS 마운트 디렉터리를 나타내기 위해 NFS가 되어야 합니다. 네번째 내용은 마운팅 과정에서 사용할 다양한 옵션을 나타냅니다(마운트 옵션을 보려면 mount(1) 참고). 어떤 사람은 소프트 마운트 지점의 개념에 어려움을 느끼기 때문에 모두 하드 마운트 지점으로 취급하겠습니다만, 클러스터를 효율적인 수단으로 만들려면 다양한 옵션을 살펴보셔야 합니다.

편집할 마지막 파일은 NFS를 초기화 했을 때 몇가지 언급 옵션을 다룰 이며, 다음과 같아야 합니다:

마스터 /etc/conf.d/nfs 예제

네트워크의 무디스크 노드가 몇대인지  값을 바꾸어야 합니다.

NFS 서버 시작하기
다음 명령을 입력하여 의 초기화 스크립트로 nfs 서버를 시작해야합니다:

시스템을 부팅할 때 이 스크립트를 시작하려면 간단하게 다음 명령을 입력하십시오:

빠진 파일 복사
마스터와 같은 슬레이브 파일 시스템을 만들고, 슬레이브의 특정 파일을 보존하면서 필요한 바이너리를 넣겠습니다.

무디스크 네트워크 설정
네트워크 초기화 스크립트가 NFS 서버와의 연결을 죽이는 현상을 막으려면, 무디스크 클라이언트 파일 시스템의 에 옵션을 추가해야 합니다.

/etc/conf.d/net 편집

초기화 스크립트
에 무디스크 노드상에서 필요한 만큼 초기화 스크립트를 넣으려 할 것입니다. 슬레이브 노드에서 무얼할지에 달려있습니다.

전형적인 슬레이브 런레벨

이제 슬레이브에 부팅할 때가 되었습니다. 잘 되었으면 좋겠군요 :-P 동작하나요? 허허, 축하합니다. 무디스크 노드가 생긴걸 자랑스러워하시겠군요 :D