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" 장치가 실행 중임을 확인합니다. 결과는 다음과 같이 나와야합니다:

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

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

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

DHCP 서버 설정
There is only one configuration file that needs to be edited before starting the DHCP server:. Copy and edit the provided sample file:

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

The  block is optional and should be used for IPs that are required to be assigned that belong to the same network topology. At least one  must be declared and the optional   block allows options to be grouped between items. A good example of looks like this:

The IP address after  will be asked for the specified. This IP address should be the IP of the tftp server, usually the same as the master's IP address. The  is relative to the  directory (this is due to the tftp server specific options which will be covered later). Inside the  block, the   option specifies a MAC address, and   assigns a fixed IP address to that particular MAC address. There is a pretty good man page on with options that are beyond the scope of this HOWTO. The man page can be read by typing:

DHCP 서버 시작하기
Before starting the dhcp initialization script edit the file so that it looks something like this:

The  variable is the device that the DHCP server will be running on, in this case. Adding more arguments to the  variable can be useful for a complex network topology with multiple Ethernet cards. To start the dhcp server type:

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

DHCP 서버 문제 해결
To see if a node boots, take a look at. If the node successfully boots, the file should have some lines at the bottom looking like this:

If the following message is encountered it probably means there is something wrong in the configuration file but that the DHCP server is broadcasting correctly.

Every time after changing the configuration file the DHCP server must be restarted. To restart the server type:

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

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

TFTP 서버 설정
Edit. The tftproot directory needs to specified with  and any command line options with. It should look something like this:

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

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

This should start the tftp server with the options that were specified in the. If this server is to be automatically started at boot type:

PXELINUX 알아보기
This section is not required if only Etherboot is being used. PXELINUX is the network bootloader equivalent to LILO or GRUB and will be served via TFTP. It is essentially a tiny set of instructions that tells the client where to locate its kernel and initial filesystem and allows for various kernel options.

Before getting started
Now the file pxelinux.0 is required, which comes in the SYSLINUX package by H. Peter Anvin. This package can be installed by typing:

PXELINUX 설정
Before starting the tftp server pxelinux needs to be set up. First copy the pxelinux binary into the directory:

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

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

The  tag directs pxelinux to the kernel bzImage that was compiled earlier. The  tag appends kernel initialisation options. Since the slave kernel was compiled with , the nfsroot will be specified 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 the creation of different images using different options.

Before getting started
The  (utility for making tagged kernel images useful for netbooting) package is needed to create the Etherboot images. This tool will create a preconfigured kernel image from the original kernel. This contains the boot options as shown further down.

Etherboot 설정
In this section a simple etherboot image will be created. As the dhcp server gives out the clients root-path in the "option root-path" dhcp.conf, this does not have to be included here. More details can be found in the mknbi manual.

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

네트워크 부팅 과정 문제 해결
There are a few things that can be done to debug the network boot process. Primarily a tool called  can be used. To install  type:

Now various network traffic can be listened to, to make sure the client/server interactions are functioning. If something isn't working there are a few things that could be checked. First make sure that the client/server is physically connected properly and that the networking cables are not damaged. If the 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:

The  command can also be configured to listen on particular port such as the tftp port by typing:

A common error that might be received is: "PXE-E32: TFTP open time-out". This is probably due to firewall issues. If  is being used, it might be worth checking  and  and make sure that they are configured properly. The client should be allowed to connect to the server.

NFS 서버 알아보기
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 that is wanted is a preliminary slave node to boot diskless.

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

Before starting
The NFS Server needs kernel level support so if the kernel does not have this, the master's kernel needs to be recompiled. To double check the master's kernel configuration type:

The output should look something like this if the kernel has been properly configured:

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

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

NFS 서버 설정
There are three major configuration files that will have to be edited:

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

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

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

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 here they are made hard mounts, a look into various options should be done to make the cluster more efficient.

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

The  should be changed to the number of diskless nodes on the network.

NFS 서버 시작하기
The nfs server should be started with its init script located in by typing:

If this script is to be started every time the system boots simply type:

빠진 파일 복사
Now the slave's file system will be made in sync with the master's and provide the necessary binaries while still preserving slave specific files.

무디스크 네트워크 설정
In order to prevent the networking initscript from killing the connection to the NFS server, an option needs to be added to on the diskless client's filesystem.

초기화 스크립트
Init scripts for slaves are located under for services needed on the diskless nodes. Each slave can be set up and customized here, it all depends on what each slave is meant to do.

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