728x90
반응형
NAS란?


- 분산처리환경의 RPC를 사용하는 파일 및 자원 공유 시스템

- TCP/IP 네트워크를 통한 서버/클라이언트 구조

- Unix 운영체제간의 파일 공유

- 보안에 취약하므로 주의해서 사용


NFS 관련 데몬

  1. portmap & rpc.bind : NIS,NFS등 RPC(Remote Procedure Call)연결에 관여하는 데몬
    (RPC : 다른 주소공간에서 서브루틴이나 프로시저를 실행시키기 위한 기술, RPC를 이용하면 로컬에서 실행하는 것같은 결과를 받음)
  2. nfs : nfs 서비스를 구동하기 위한 데몬
  3. rpc.nfsd : rpc 요청처리와 서버측에서 rpc.mountd에 의해 마운트되면 클라이언트는 rpc.nfsd로 서버에 요청 처리와 명령 실행등을 포함한 작업을 수행
  4. rpc.mountd : 클라이언트가 마운트를 요청하면 /etc/exports 파일 설정에 따라 마운트 요청을 처리
  5. rpc.statd : rpc.rockd와 함께 작동하며 파일잠금 및 해제와 비정상적인 종료시 복구를 담당
  6. rpc.lockd : 파일 잠금을 통해 클라이언트에서 여러 사용자가 한 파일을 수정하는 것을 방지
  7. rpc.rqoutad : NFS파일 시스템을 마운트한 사용자에게 quota를 처리
  8. netfs : samba, nfs, ncp 등을 마운트 하거나 언마운트 해주는 데몬

  • NFS 서비스는- nfsd- rpc.mountd- rpc.statd- rpc.rockd- rpc.rquotad
  • NFS 서버는- nfsd- rpc.mountd- rpc.statd- rpc.lockd 데몬이 작업
  • NFS 클라이언트는- rpc.statd- rpc.rockd- rpc.rquotad


NFS 관련 패키지

  1. nfs-utils-1.0.8.rc2-4.FC5.2
  2. nfs-utils-lib-1.0.8-3.1
  3. system-config-nfs-1.3.19-1


NFS 데몬 실행

Server : rpcbind -> nfs -> nfslock 순으로 데몬 실행
Clinet : rpcbind -> nfs 순으로 데몬 실행

NFS 서버 설정

/etc/exports
- NFS서버의 주요 설정파일
- rpc.mountd, rpc.nfsd는 이 파일에 설정에 따라 구동

1) 형식
[디렉토리]     [클라이언트] (option)

Options
ro : 읽기 전용 모드
rw : 읽기 쓰기 모드
root_squash : 클라이언트의 root를 서버의 nobody 권한으로 설정
no_root_squash : 클라이언트의 root를 서버의 root 권한으로 설정
insecure : 인증되지 않은 엑세스도 가능
sync : 클라이언트가 파일 쓰기 완료 후 디스크 동기화

2) NFS로 공유하고자 하는 폴더 생성 (NFS 서버)
# mkdir /nfsdata

3) 환경설정 파일 수정
# vi /etc/exports
/nfsdata 10.10.1.100(rw) -> 10.10.1.100은 공유할 클라이언트 IP

- Example - 

  • nobody 권한 : 시스템 계정으로 로그인이 되진 않지만 아파치 웹 서버가 필요로 하는 계정이다. 웹 서버(httpd)가 메모리로 올라갈때 root 권한으로 동작하는 것이 아니라 nobody 권한으로 작동하므로 nobody 계정이 없을 경우 메모리에 올라갈 수 없다.

4) NFS 시작 (NFS 클라이언트)
# mkdir /client

mount -t nfs 10.10.1.100:/nfsdata /client

umount /client -> 마운트 해지

5) NFS 명령어

# mount -t nfs [NFS_server:/dir] [NFS_client_dir]
NFS클라이언트에서 NFS 서버의 자원을 마운트 할때 사용

Ex) mount -t nfs 10.10.1.100:/nfsdata /nfsdata

# showmount [host] [option]
# showmount -e
현재 마운트 되어 있는 NFS를 확인

# exportfs [option]
NFS상의 exporting 정보를 출력하거나 설정변경

option
-a : 공유를 허가한 모든 디렉토리 의미
-r : 공유를 허가한 디렉토리를 다시 export
-u : 공유 디렉토리를 export 리스트에서 제거
-i : /etc/exports 파일 무시하고 설정
-v : export 정보 출력

/var/lib/nfs/rmtab
NFS서버에 현재 마운트된 사용자 정보 출력
사용법
    # cat /var/lib/nfs/rmtab

/etc/fstab에 등록

해당 NFS를 부팅할때 불러오고 자동으로 불러오고 싶으면 /etc/fstab에 넣어주면 된다.
# vi /etc/fstab
10.10.1.100:/nfsdata    /client        nfs    defaults,_netdev 0.0
이렇게 설정하면 되는데 계속 nfs계속 연결시도 하는데 일정시간동안만 시도하고 없을경우 시도를 멈추게 하려면
defaults 대신에 timeo=25,intr 해주면 25초간만 확인하고 넘어가면 그냥 부팅된다.

10.10.1.100:/nfsdata    /client nfs    timeo=25,intr 0.0

/etc/fstab에서 NFS 마운트 옵션
rsize : NFS서버로부터 읽어 들이는 바이트수 지정 기본값 1024byte
wsize : NFS서버에 기록할 때 사용하는 바이트수 기본 지정값 1024byte
timeo : 클라이언트에서 타임아웃이 발생되고 나서, 다시 재전송 요구를 보낼때 시간
retrans : 재정송 횟수 지정
port : NFS서버에 연결시 사용하는 포트번호 지정
fg : NFS서버에 타임아웃이 발생되면 즉각 접속 중지
intr : 인터럽트 허용
hard : 타임아웃 발생시 "server not recording" 에러메시지 표시후 계속 재시도
soft : 타임아웃 발샐시 I/O 에러 표시
※ _netdev : 네트워크에 연결 후 Mount를 실행하라는 옵션
(네트워크연결보다 System의 Mount가 우선적으로 일어나기떄문에 nfs 서버에 연결이 안되어 부팅대기현상이 발생)





구축 예제


- 서버측 -

# service rpcbind start
# service nfs start
# service nfslock start

# rpcinfo -p

rpc.bind 또는 portmapper와 nfs가 보인 정상 실행중

# vi /etc/exports
/home/nfs 192.168.0.5(rw)

# service nfs restart

# showmount -e

# exportfs


- 클라이언트 -

# service rpcbind start

# service nfs start

# rpcinfo -p

# mount -t nfs 192.168.0.5:/home/nfs /home

# chkconfig --level 2345 rpcbind on

# chkconfig --level 2345 nfs on

# vi /etc/fstab

192.168.0.5:/home/nfs    /home    nfs    defaults,_netdev 0 0

# mount -a
으로 fstab 정상 확인

# showmount -e

# exportfs
반응형

'Linux' 카테고리의 다른 글

Linux root Password 변경 (RHEL7-가상화)  (0) 2018.08.08
Linux root Password 변경 (RHEL7)  (0) 2018.08.08
Linux Memory Slab 관리  (0) 2018.08.08
Linux strace  (0) 2018.08.08
Linux Memory 재할당  (0) 2018.08.08

+ Recent posts