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 서버 오류 예제

Every time you change the configuration file you must restart the DHCP server. To restart the server type:

TFTP 서버 알아보기
TFTP stands for Trivial File Transfer Protocol. The TFTP server is going to supply the slaves with a kernel and an initial filesystem. All of the slave kernels and filesystems will be stored on the TFTP server, so it's probably a good idea to make the master the TFTP server.

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

TFTP 서버 설정
Edit. You need to specify the tftproot directory with  and any command line options with. It should look something like this:

Sample /etc/conf.d/in.tftpd

The  option indicates that this server listens in stand alone mode so you don't have to run inetd. The  indicates that log/error messages should be verbose. The  specifies the root of your tftp server.

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

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

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

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

PXELINUX 설정
Before you start your tftp server you need to setup pxelinux. First copy the pxelinux binary into your directory:

This will create a default bootloader configuration file. The binary will look in the  directory for a file whose name is the client's IP address in hexadecimal. If it does not find that file it will remove the rightmost digit from the file name and try again until it runs out of digits. Versions 2.05 and later of syslinux first perform a search for a file named after the MAC address. If no file is found, it starts the previously mentioned discovery routine. If none is found, the file is used.

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

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

pxelinux.cfg/default 예제

The  tag directs pxelinux to the kernel bzImage that we compiled earlier. The  tag appends kernel initialisation options. Since we compiled the slave kernel with , we will specify the nfsroot here. The first IP is the master's IP and the second IP is the directory that was created in to store the slave's initial filesystem.

Etherboot 알아보기
Etherboot boots network boot images from a TFTP server. As the PXE this is equivalent to LILO or GRUB. The  utility enables you to create different images using different options.

Before you get started
You will need to get the  (utility for making tagged kernel images useful for netbooting) package to create your Etherboot images. This tool will create a preconfigured kernel image from your original kernel. This contains the boot options as shown further down.

Setting up Etherboot
In this section we will create a simple etherboot image. As the dhcp server gives out the clients root-path in the "option root-path" dhcp.conf, we do not have to include this here. More details can be found in the mknbi manual.

Making the boot images. This will create a ELF bootable image capable of passing dhcp and the rootpath to the kernel. Also forcing the kernel to browse the network for a dhcp server.

Troubleshooting the network boot process
There are a few things you can do to debug the network boot process. Primarily you can use a tool called. To install  type:

Now you can listen to various network traffic and make sure your client/server interactions are functioning. If something isn't working there are a few things you might want to check. First make sure that the client/server is physically connected properly and that the networking cables are not damaged. If your client/server is not receiving requests on a particular port make sure that there is no firewall interference. To listen to interaction between two computers type:

You can also use  to listen on particular port such as the tftp port by typing:

A common error you might receive is: "PXE-E32: TFTP open time-out". This is probably due to firewall issues. If you are using, you might want to check  and  and make sure that they are configured properly. The client should be allowed to connect to the server.

About the NFS server
NFS stands for Network File System. The NFS server will be used to serve directories to the slave. This part can be somewhat personalized later, but right now all we want is a preliminary slave node to boot diskless.

About Portmapper
Various client/server services do not listen on a particular port, but instead rely on RPCs (Remote Procedure Calls). When the service is initialised it listens on a random port and then registers this port with the Portmapper utility. NFS relies on RPCs and thus requires Portmapper to be running before it is started.

Before you start
The NFS Server needs kernel level support so if you don't have this you should recompile your master's kernel. To double check your master's kernel configuration type:

You should see output that looks something like this if your kernel has been properly configured:

Installing the NFS server
The NFS package that can be acquired through portage by typing:

This package will emerge a portmapping utility, nfs server, and nfs client utilities and will automatically handle initialisation dependencies.

NFS 서버 설정
There are three major configuration files you will have to edit:

Nfs configuration files

The file specifies how, to who and what to export through NFS. The slave's fstab will be altered so that it can mount the NFS filesystems that the master is exporting.

A typical for the master should look something like this:

마스터 /etc/exports 예제

The first field indicates the directory to be exported and the next field indicates to who and how. This field can be divided in two parts: who should be allowed to mount that particular directory, and what the mounting client can do to the filesystem:  for read only,   for read/write;   and   are important for diskless clients that are writing to the disk, so that they don't get "squashed" when making I/O requests. The slave's fstab file,, should look like this:

슬레이브 fstab 예제

In this example, master is just the hostname of the master but it could easily be the IP of the master. The first field indicates the directory to be mounted and the second field indicates where. The third field describes the filesystem and should be NFS for any NFS mounted directory. The fourth field indicates various options that will be used in the mounting process (see mount(1) for info on mount options). Some people have had difficulties with soft mount points so we made them all hard, but you should look into various options to make your cluster more efficient.

The last file you should edit is which describes a few options for nfs when it is initialised and looks like this:

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

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

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

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

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

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

/etc/conf.d/net 편집

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

전형적인 슬레이브 런레벨

Now is a good time to boot your slave and cross your fingers. It works? Congratulations, you are now the proud owner of (a) diskless node(s) :)

감사문
이 안내서에 제공한 노고에 대해 다음 작성자와 편집자분들께 감사의 말을 전하고자 합니다:


 * Michael Andrews
 * Kristian Jerpetjoen
 * Sven Vermeulen
 * Xavier Neys