728x90
반응형
NAS란?
- 분산처리환경의 RPC를 사용하는 파일 및 자원 공유 시스템
- TCP/IP 네트워크를 통한 서버/클라이언트 구조
- Unix 운영체제간의 파일 공유
- 보안에 취약하므로 주의해서 사용
NFS 관련 데몬
- portmap & rpc.bind : NIS,NFS등 RPC(Remote Procedure Call)연결에 관여하는 데몬(RPC : 다른 주소공간에서 서브루틴이나 프로시저를 실행시키기 위한 기술, RPC를 이용하면 로컬에서 실행하는 것같은 결과를 받음)
- nfs : nfs 서비스를 구동하기 위한 데몬
- rpc.nfsd : rpc 요청처리와 서버측에서 rpc.mountd에 의해 마운트되면 클라이언트는 rpc.nfsd로 서버에 요청 처리와 명령 실행등을 포함한 작업을 수행
- rpc.mountd : 클라이언트가 마운트를 요청하면 /etc/exports 파일 설정에 따라 마운트 요청을 처리
- rpc.statd : rpc.rockd와 함께 작동하며 파일잠금 및 해제와 비정상적인 종료시 복구를 담당
- rpc.lockd : 파일 잠금을 통해 클라이언트에서 여러 사용자가 한 파일을 수정하는 것을 방지
- rpc.rqoutad : NFS파일 시스템을 마운트한 사용자에게 quota를 처리
- 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 관련 패키지
- nfs-utils-1.0.8.rc2-4.FC5.2
- nfs-utils-lib-1.0.8-3.1
- 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 |