2008. 10. 22. 10:07

네트워크 파일 시스템 관련 옵션 (NFS with fstab option)

이름
       nfs - nfs fstab 형식과 옵션

개요
       /etc/fstab

설명
fstab  화일에는 어떤 화일 시스템을 어디에 그리고 어떤 옵션을 가지고 마운트할 것인
지에대한 정보가 들어있다. NFS 마운트의 경우 서버명 그리고 export하는 서버의디렉
토리, 로컬 마운트 포인트 그리고 NFS 관련 옵션이 필요하다.


NFS 마운트를 위한/etc/fstab 화일의 예를 보겠다.

server:/usr/local/pub    /pub   nfs    timeo=14,intr

옵션
rsize=n       
NFS 서버로부터 읽어들이는 바이트 수를 지정한다. 기본값은 커널에 따라다른데 현
재로서는 1024 바이트이다.

wsize=n       
NFS 서버에 쓰기를 할 때 사용하는 바이트 수를 정한다. 기본값은 커널에 따라다른
데 현재로서는 1024 바이트이다.

timeo=n       
RPC 타임아웃이 생기고 나서 첫번째 재전송 요구를 보낼 때 사용되는 시간으로서
1/10 초 단위이다. 기본값은 7 * 1/10 초이다. 첫번째 타임아웃이 생기고 나서는타
임 아웃 시간이 최대치인 60 초에 이르거나 너무 많은 재전송 요구가 벌어질때까지
타임아웃 시간이 2 배로 변화한다. 만약 화일 시스템이 하드 (hard, 옵션을참고 하
기 바란다) 마운트되어있다면 각각의 타임 아웃 시간은 2 배로 증가하고 재전송 시
도가 일어날 때도 2 배로 증가한다. 최대 타임아웃 시간은 60 초이다. 네트웍 속도
가   느리거나 서버자체가 느리다든지 여러 개의 라우터와 게이트웨이를 거칠 때는
마운트 당시 타임아웃 시간을 늘려주는 것이 좋다.

retrans=n     
주 타임아웃을 발생시키는 부 타임아웃과 재전송 횟수를 정한다. 기본값은 3 번 의
타 임아웃이다. 주 타임 아웃이 일어나면 화일 작업이 중지되거나 콘솔 상에 "서버
가 반응하지 않음 "server not responding""이라는 메시지가 출력된다.

acregmin=n    
서버에게 최신 정보를 요청하기에 앞서 일반 화일의 속성이 캐쉬되어야 할 시간 의
최소값을 정한다. 기본값은 3 초이다.

acregmax=n     
서버에게 최신 정보를 요청하기에 앞서 일반 화일의 속성이 캐쉬되어야 할 시간의
최대값을 정한다. 기본값은 60 초이다.

acdirmin=n    
서버에게 최신 정보를 요청하기에 앞서 디렉토리의 속성이 캐쉬되어야 할 시간의최
소값을 정한다. 기본값은 30 초이다.

acdirmax=n    
서버에게 최신 정보를 요청하기에 앞서 디렉토리의 속성이 캐쉬되어야 할 시간의최
대값을 정한다. 기본값은 60 초이다.

actimeo=n     
이 값을 다음 acregmin, acregmax, acdirmin, 와 acdirmax 에 똑같이 적 용 한 다.
기본값은 없다.

retry=n        
백그라운드에서 진행 중인 NFS 마운트 작업이 포기하기 전까지 실행할 횟수를정한
다. 기본값은 10000 번이다.

namlen=n      
NFS 서버가 RPC 마운트 프로토콜의 버전 2 를 지원하지 않을 때 원격 화일시스템에
서 지원되는 화일명의 길이를 명시한다. POSIX pathconf 함수를 지원하기위해서 사
용된다. 기본값은 255 개의 문자이다.

port=n        
NFS 서버와 연결할 수 있는 포트 번호를 정한다.  만약 0 이라면( 기본값 )  원 격
호 스 트의 포트매퍼(portmapper) 에게 질의하여알아내도록 한다. 만약 포트매퍼에
NFS 데몬이 등록되어 있지 않은 경우에는 2049 라는 표준 NFS 포트 번호가 사용 된
다.

mountport=n   
mountd 포트 번호 지정하기.

mounthost=name
mountd 를 실행 중인 호스트 명을 정한다.

mountprog=n    
원격 호스트의 마운트 데몬과 접속하기 위해 사용할 수 있는 별도의 RPC 프로그램
번호를 정한다. 만약 여러 개의 NFS 서버를 운영하고 있을 때 사용한다.  기본값은
표준 RPC 마운트 데몬 프로그램 번호인 100005 이다.

mountvers=n   
원격 호스트의 마운트 데몬와 접속하기 위해 사용하는 별도의 RPC 버전 번호를명시
한다. NFS 서버를 여러 개 운영하고 있을 때 사용한다.  기본값은 버전 1 이다.

nfsprog=n     
원격 호스트의 NFS 데몬과 접속하기 위해 사용하는 별도의 RPC 프로그램 번호를 정
한다. NFS 서버를 여러 개 운영하고 있을 때 사용한다. 표준 RPC NFS 데몬프로그램
번호인 100003 이 기본값이다.

nfsvers=n     
원격 호스트의 NFS 데몬과 접속하기 위해 사용하는 별도의 RPC 버전 번호를정한다.
NFS 서버를 여러 개 운영하고 있을 때 사용한다. 기본값은 버전 2 이다.

bg            
만약 첫번째 NFS 마운트 시도가 타임아웃 걸리면 백그라운드에서 실행을 계속한다.
기본값은 백그라운드로 실행하지 않고 그냥 포기한다.

fg            
첫번째 NFS 마운트 시도에서 타임아웃이 걸리면 그 즉시 포기해버린다.  기본값 이다.

soft          
NFS  화일 작업에서 주 타임아웃이 걸리면 프로그램에게 I/O 에러를 보고한다.  기
본값은 무한히 NFS 화일 작업을 재시도 하는 것이다.

hard          
NFS 화일 작업에서 주 타임아웃이 걸리면 콘솔 상에 "server not responding", "서
버가 반응하지 않음"이라고 출력하고 무한히 재시도한다.  이것이 기본값이다.

intr          
주 타임아웃이 생기고 하드 마운트된 상태라면 화일 작업을 중지하도록 시그널을보
내도록 허용하고 EINTR 시그널을 보내다. 기본값은 화일 작업을 인터럽트하지않 는
것이다.

posix         
POSIX  규칙을 사용하여 NFS 화일 시스템을 마운트한다. 화일명의 최대 길이에대하
여 POSIX pathconf 함수를 제대로 지원하기 위해서 사용된다. 원격 호스트 는  RPC
마 운 트 프로토콜 버전 2 를 지원해야 한다. 많은 NFS  서버들이 아직버전 1 만을
지원하고 있다.

nocto         
화일이 생성될 때 새로운 속성을 가져오지 않도록 한다.

noac          
모든 속성 캐쉬를 해제한다. 서버 효율을 떨어뜨리기는 하지만 두 개의 다 른  NFS
클라이언트로 하여금 서버 상의 공통 화일 시스템에 쓰기 작업을 할 때좋은 효율을
얻을 수 있게 해준다.

tcp           
NFS 화일 시스템을 기본값인 UDP 가 아니라 TCP 프로토콜을 사용하여 마운트하도록
한다.  많은 NFS 서버들이 오로지 UDP 만을 지원한다.

udp           
NFS 화일 시스템을 UDP 프로토콜로 마운트한다. 기본값.


수 치 값을 동반하지 않는 단독 옵션들은 no 를 앞에 붙이는 형태로서도 사용할 수있다. 예를 들어
nointr 이라는 옵션은 화일 작업을 가로챌 수 없도록 한다.

관련 화일

       /etc/fstab

참고
       fstab(5), mount(8), umount(8), exports(5)


NFS 서버 & 클라이언트 설정

[목차]
1. NFS 정의
2. NFS 서버 설치 및 설정
3. NFS 클라이언트 설정

1. NFS 정의
1-1. Network File System의 약자로, Sun Microsystem사가 만든 파일 시스템이다.
1-2. 네트웍크를 통하여 다른 서버의 하드를 자신의 서버처럼 사용 할 수 있다.
1-3. UDP protocal을 사용하며, LAN 환경에서 사용된다.

2. NFS 서버 설치확인 및 설정
2-1. NFS 서버 프로그램 설치 여부 검사
[root@ancigo root]# rpm -qa | grep nfs-utils
nfs-utils-1.0.6-1
[root@ancigo root]# rpm -qa | grep portmap
portmap-4.0-57
설치가 안되어 있으며 OS버전에 맞게 rpm을 다운 받아서 설치하기 바란다.

2-2. NFS server 구성 요소
- rpc.nfsd : NFS 데몬으로 실제 NFS로 연결된 파일시스템의 공유를 가능하게 해주는 데몬.
- rpc.mount : RPC(Remote Procedure Call)기반에서 NFS 사용을 위한 마운트를 가능하게 하는 데몬
- portmap : NFS가 원래 RPC 기반하에서 작동되는 것이기 때문에 rpcbind를 필요로하며, rpcbind의 매핑(RPC program number mapper)을 위해 필요한 데몬이다.
- /etc/export : NFS 클라이언트에서 NFS서버로 마운트를 허용할 디렉토리이고, 설정파일이다.

2-2. NFS 서버 설정하기
시스템 일부 파일 시스템을 공유하기 위해 /etc/exports 파일에 등록해야 한다.
등록 패턴은 아래와 같다.
<export할 디렉토리> <허가할 클라이언트> (Option…)

[사용옵션]
ro : read only. 읽기 전용으로 공유한다.
rw : read and write, 읽기/쓰기 모드로 공유하며 기본값이다.
root_squash : 클라이언트에서 루트를 서버 상에 nobody 사용자로 매핑한다.
no_root_squash : 클라이언트의 root와 서버의 root를 동일하게 매핑한다.
insecure : 인증되지 않은 접근도 가능하다.
noaccess : 지정된 디렉토리는 접근을 금지한다.
secure : 클라이언트 마운트 요청시 포트를 1024 이하로 한다.
sync : 파일 시스템이 변경되면 즉시 동기화한다.
all_squach : root를 제외하고 서버와 클라이언트의 사용자를 동일한 권한으로 설정한다.
no_all_squach : root를 제외하고 서버와 클라이언트의 사용자들을 하나의 권한을 가지도록 설정한다.

[사용예]
[root@ancigo root]# vi /etc/exports
- /home/ftp/pub *.linuxone.co.kr(ro)
-> /home/ftp/pub 디렉토리를 linuxone.co.kr 도메인을 사용하는 모든 사용자가 읽는 것을 허용한다.
- /pub(ro,insecure,root_squash)
-> /pub 디렉토리를 읽기 전용으로 마운트하고 인증 없이 사용 가능하며 모든 컴퓨터의 루트를 서버에서 nobody로 접근할 수 있게 한다.

2-3. nfs 서비스 시작
# 서비스 시작
- NFS는 RPC(Remote Procedure Call)라는 것을 사용하기 때문에 port mapper라는 특별한 데몬이 먼저 떠 있어야 한다.
[root@ancigo root]# rpcinfo -p

rpcinfo : 포트매퍼에 연결할 수 없습니다. RPC : 원격 시스템 오류 ?연결이 거부됨
데몬이 실행이 안되어 있어서 오류가 발생. 아래와 같이 데몬을 실행시켜 준다.
[root@ancigo root]# service portmap start
[root@ancigo root]# service nfs start
[root@ancigo root]# service nfslock start

# 서비스 확인
[root@ancigo root]# exportfs : 현재 공유되어 있는 설정을 확인할 수 있다.
[root@ancigo root]# exportfs -v : 공유된 설정을 자세하게 옵션까지 확인이 가능하다.
showmount -e [호스트명 | NFS server IP] 을 이용해서 서버가 export하는 마운트를 확인할 수 있다.
showmount [클라이언트 호스트명 | IP] 을 이용해 어느 클라이언트가 이용하고 있는 지 확인

[exportfs 명령어 사용법]
exportfs 명령어는 nfs서버를 다시 시작하지 않고도 공유목록을 수정할 수 있다.

- a : /etc/exports파일을 읽어 들인다.
- r : /etc/exports파일을 다시 읽어 들인다.
- u IP:/디렉토리 : 입력한 디렉토리를 공유목록에서 제외한다.
- v : 현재의 공유 목록을 확인한다.


4. NFS 클라이언트 설정
4-1. NFS client 관련된 파일과 명령어들

[자주쓰이는 옵션]
hard/soft
마운트시킬 때 hard옵션을 준 경우, 클라이언트는 서버가 응답할 때까지 계속 마운트를 시도하며, 응답이 없는 경우에는 umount 명령을 이용하여 마운트를 취소할 수도 없게 된다. 마운트의 성공여부가 시스템에 지대한 영향을 미칠 경우에 사용하는 것이 좋다.
하지만 soft 옵션을 준 경우에는 서버가 응답하지 않으면 어느 정도 융통성 있는 방법을 강구할 수 있도록 해준다. 즉 umount 명령을 이용하여 마운트를 취소할 수도 있다.
soft의 경우는 대부분 NFS를 이용하는 경우에는 이 옵션을 이용하는 것이 바람직하다.

bg
시스템이 부팅할 때 /etc/fstab의 내용을 보고 마운트를 실행하는데 만일 마운트하고자 하는 서버가 지금 NFS 서비스를 할 수 없는 상황일 때 백그라운드 잡(job)으로 마운트를 수행하라는 옵션이다. 타입이 nfs일 경우에는 반드시 이 옵션을 주는 것이 바람직하다. 왜냐 하면 NFS는 서버로부터 응답이 없으면 서버가 응답할 때까지 계속 마운트를 시도하려고 하기 때문에 부팅이 순조롭게 일어나지 못하게 되기 때문이다.

rw/ro
rw는 클라이언트로 하여금 서버에게서 마운트한 파일 시스템을 읽고 쓸 수 있도록 하겠다(read/write)는 옵션이고, ro는 읽기만 할 수 있도록 하겠다(read only)는 옵션이다.

nosuid
nosuid 옵션은 클라이언트 쪽에서 마운트한 파일 시스템에 있는 setuid 파일을 실행시킬 때 setuid 효과가 발생하지 못하도록 하는 역할을 한다. 이는 보안이 중요시되는 서버로부터 마운트해올 경우 반드시 고려하여야 할 옵션이다.
디폴트(default)옵션은 hard, rw, suid이다. 기타 다른 옵션들은 man page을 참조하기 바란다.

4-2. NFS 수동으로 마운트 할 경우
서버 : 10.10.10.1, 공유디렉토리 : /home/www, 클라이언트 마운트 지점 : /tmp/share
mount [ -t nfs ] server:/directory /mountpoint
[root@ancigo root]# mount -t nfs 10.10.10.1:/home/www /tmp/share

4-3. NFS 자동으로 마운트 할 경우
[root@ancigo root]# vi /etc/fstab에 내용 추가
10.10.10.1:/home/www /tmp/share nfs defaults 1 2
위와 같이 등록을 하게 되면 서버가 재부팅 될 때, 자동으로 공유된 부분을 mount 해서 사용한다.


출처 : 리눅스원 호스팅팀.

Trackback 0 Comment 0