2009. 4. 3.

NFS 설정

리눅스에서 여러분의 홈디렉토리를 통해 자신의 모든 설정파일들 - 예를 들어 넷스케이프 북마크들, 여러분의 전자우편을(여러분이 컴퓨터마다 모두 같은 전자우편 프로그램을 사용한다고 가정하고) 공유하는 것은, 여러분이 컴퓨터와 컴퓨터 사이에서 옮겨 다닐 때 윈도우 매니저가 사용자 환경에 적절하게 맞춰졌던 것처럼 여러분 네트워크에 강력함을 더해준다.

리눅스 그리고 유닉스는 일반적으로 파일시스템을 공유하기 위해 nfs(network file system)라는 이름을 가진 프로그램을 사용한다. nfs는 몇 가지 보안 구멍이 알려져 있으므로 방화벽 컴퓨터 뒤에 nfs를 숨기는 것이 좋다. NFS Howto는 이 기사를 읽은 다음에 꼼꼼하게 읽어보아야 할 중요한 리소스이다.

UDI:

어떤 사용자가 접근했었는지 nfs가 기억하게 만드는 방법 가운데 하나는 UID - 사용자 식별 번호이다. UID는 패스워드 파일의 세 번째 항목에 기록된다. 내 시스템에서 이 파일은 다음과 같다:
jpollman:IxmI/XXxxrg/Y:501:100:JC Pollma
n:/home/jpollman:/bin/bash





501이라는 숫자가 있는 자리가 UID이다. 어떤 한 사용자를 위한 UID는, nfs를 사용하는 다른 모든 머신에서 항상 같아야 한다. 여러분은 패스워드 파일을 이용하여 모든 머신에서 같은 UID를 가지도록 할 수도 있고, NIS - 이 글의 주제를 넘어서는 것인데 - 를 사용할 수도 있다. 여러분이 UID를 바꾼다면 사용자 소유의 파일들에 대해서, chown 명령으로 소유권을 모두 설정해 주어야 한다. 꽤 성가신 일이기는 하지만, 딱 한 번만 해주면 된다.

서버쪽에서 NFS:

여러분이 실행해야 하는 프로그램이 몇 개 있다. 그리고, 커널도 필요한 옵션을 설정하여 컴파일해 두어야 한다.

여러분의 커널에서:

커널은 반드시 nfs 기능을 포함하여 컴파일되어야 한다. 다행스럽게도, 대부분의 배포판이 nfs를 지원하도록 컴파일된 커널을 가진다. 만약 여러분이 자신의 커널을 바꿀 계획이라면 Network File Systems 아래에서 다음 옵션들에 꼭 YES라고 답해야 한다.

NFS filesystem support
NFS server support

No라고 답해야 하는 것은:

Root filesystem on NFS

그 다음에 커널을 컴파일하고, 새로 만들어진 커널을 여느 때처럼 설치한다.

portmap:

여러분의 시스템에 portmap 프로그램이 반드시 설치되어 실행되고 있어야 한다. 일반적으로 portmap 프로그램은 배포판을 설치할 때 기본적으로 설치된다. 다음 명령으로 portmap이 실행 중인지 확인할 수 있다:

ps ax|grep port [Enter]

이미 실행했다면, 제대로 동작하고 있는지 다음 명령으로 점검할 수 있다:

rpcinfo -p [Enter]

portmap 프로그램은 /etc/host.allow와 /etc/host.
deny 파일을 이용하므로, rpcinfo -p 명령이 실패하더라도 여러분의 portmapper는 이들 파일이 있는지 점검해서 여러분이 원하는 대로 실행된다.

nfsd and mount:

nfsd와 mount 프로그램들이 반드시 여러분의 서버에 설치되어 있어야 한다. nfs 프로그램들은 커널 2.2에서는 knfsd라 불리고, 그 이전의 커널에서는 nfs-server2.2란 이름을 가지고 있었다.

exports:

/etc/exports 파일에는 nfs를 통해 다른 컴퓨터에 마운트 될 수 있는 디렉토리들을 설정한다. exports는 각각의 줄마다 마운트 될 수 있는 디렉토리와 허용된 사용자, 퍼미션 등으로 구성된 텍스트 파일이다. 내 시스템에 있는 exports 파일은 다음과 같다:

/home *.kulai.org(rw)

이 줄에서 첫 번째 항목은, 우리 네트워크의 다른 컴퓨터에서 마운트해서 홈디렉토리로 사용할 수 있는 디렉토리이다. 그 옆, 두 번째 아이템은 어떤 시스템에서 디렉토리를 마운트 할 수 있도록 할 것인지 정한 리스트이다. 우리는 kulai.org 네트워크에 속하는 모든 컴퓨터들이(*.kulai.org) 첫 번째 항목에서 설정한 디렉토리들을 마운트 할 수 있도록 설정했다. 세 번째는(괄호로 싸여 있는) 퍼미션을 설정한다. export 파일 설정에 대한 더 많은 정보가 필요하면, man 5 exports 명령을 실행한다. 여러분의 exports 파일을 바꾼 다음에는 설정 내용을 다시 읽어들이도록 nfsd와 mountd 데몬을 다시 시작해야 한다.

마지막 점검:

exports 파일을 고치고 필요한 데몬을 모두 다시 시작한 다음에는, 다음 명령을 실행한다:

rpcinfo -p [Enter]

명령을 실행하면 아래와 비슷한 메시지를 보게 될 것이다.(여러분이 다른 서비스들을 가동 중에 있고 mountd 포트가 다르다면 더 많은 메시지들을 보게 될지도 모르겠다):
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 745 mountd
100005 1 tcp 747 mountd
100003 2 udp 2049 nfs
100003 2 tcp 2049 nfs





클라이언트 쪽에서 NFS:

여러분은 반드시 nfs 클라이언트 프로그램들을 설치해야 한다: mountd와 portmap는 물론, 커널도 nfs를 지원하도록 설정되어야 한다. 이런 것들은 대부분의 배포판에서 처음 설치할 때 따라서 설치된다. 조건이 모두 갖추어진 다음, nfs 서버 - master.kulai.org - 를 루트로 마운트하기 위해서는, 클라이언트 머신에서 다음 명령을 실행한다:

mount -t nfs master.kulai.org:/home /mnt [Enter]

만약 모든 설정이 제대로 되었다면, 프롬프트가 다시 나타날 것이다. 그 다음, /mnt 디렉토리로 cd 하고, 디렉토리에서 ls 해보아 리스트가 보이면 모든 작업이 잘 된 것이다. 만약, 파일 시스템을 마운트하는 대신, mount 프로그램이 ‘mount:master.kulai.org://home failed’와 비슷한 에러 메시지를 보여준다면, 서버 쪽에 그 원인이 있는 것이다: exports 파일 설정이 잘못되어 접근권한이 없거나, exports 파일을 편집한 다음에 nfsd와 mountd 데몬을 다시 시작하는 것을 잊은 것이다. 만약 mount clntudp_create :RPC:Program not registered 라는 메시지가 보인다면 nfsd나 mountd 데몬이 서버에서 구동되지 않았다는 뜻이다. 또는 앞서 말했던 문제가 hosts.{allow,deny} 파일에 있는 것이다.

마운트된 파일시스템을 해제하기 위해서는 다음 명령을 사용한다:

umount /mnt [Enter]

마운트 작업들을 자동화하려면, 아래 항목을 여러분의 클라이언트 머신에 있는 /etc/fstab 파일에 추가한다 - 물론, master.kulai.org 대신 여러분 서버의 이름을 넣어야 한다.
master.kulai.org:/home /home nfs rw 0 0





흥미롭게도, 여러분이 다른 컴퓨터로부터 /home 디렉토리를 nfs 마운트 할 때, 여러분 하드 드라이브에서 /home 디렉토리는 사라진다 : 여전히 그 곳에 있지만, umount /home 할 때까지 여러분의 /home 디렉토리는 보이지 않는다.

이제, 모든 것들이 잘 동작하면, 여러분의 서버와 클라이언트 머신 둘 다 다시 부트 하는게 좋겠다. 리눅스 구루들이(Linux gurus) “reboot”를 보고 내게 포화를 쏘아 대겠지만, 여기서 시스템을 다시 부트하는 데는 그만한 까닭이 있다.

댓글 없음: