OS [Linux] NFS 동작 아키텍쳐 및 포트 변경
페이지 정보
작성자 LeeHyongDong 아이디로 검색 전체게시물 댓글 0건 조회 6,504회 좋아요 3회 작성일 21-10-20 16:40본문
# NFS 동작 아키텍쳐
NFS는 원격 프로시저 호출(Remote Procedure Calls)을 사용하여 통신합니다.
데이터를 전송하고 다른 구조로 된 시스템과 정보를 교환할 수 있도록 먼저 데이터를 일반 형식으로 변환하는 XDR(External Data Representation) 프로토콜을 기반으로 합니다.
로컬(클라이언트) 프로세스가 자체 주소 공간에서 프로시저 호출을 실행한 것처럼 원격(서버) 프로세스가 프로시저 호출을 실행하도록 지시하는데 사용할 수 있는 프로시저 라이브러리입니다.
클라이언트와 서버는 별도의 두 프로세스이므로 동일한 물리적 시스템에 있을 필요는 없습니다.
NFSv3 마운트 프로세스 과정.
1. 클라이언트 마운트가 서버의 portmap 데몬을 호출. mountd 데몬에 지정된 포트번호 검색.
2. portmap 데몬이 포트번호를 클라이언트에 전달.
3. 클라이언트 mount 명령이 서버 mountd 데몬에 직접 접속하여 원하는 디렉토리 이름을 전달.
4. 서버 mountd 데몬이 “ /etc/exports “을 검사하여 요청된 디렉토리의 가용성과 권한을 검증합니다.
5. 모든 사항이 검증되면, 서버 mountd 데몬이 반출된 디렉토리에 대한 파일 핸들(파일 시스템 디렉토리에 대한 포인터)을 가져와서 이를 다시 클라이언트 커널에 전달.
클라이언트는 시스템 재시작 후 첫 번째 마운트 요청의 portmap 데몬에만 접속합니다.
클라이언트가 mountd 데몬의 포트 번호가 알고 있으면 후속 마운트 요청에 대해 해당 포트 번호로 직접 이동합니다
위와 같은 과정을 거쳐 마운트된 최상위 디렉토리부터 속성을 읽어 오고, 하위 디렉토리를 찾고, 속성을 읽어오고, 파일을 찾아 읽는 과정을 거치게 됩니다.
NFSv4 마운트 프로세스 과정
1. 클라이언트 mount 명령이 서버 nfsd 데몬에 직접 접속하여 원하는 디렉토리 이름을 전달.
2. 서버 nfsd 데몬이 “ /etc/exports “을 검사하여 요청된 디렉토리의 가용성과 권한을 검증합니다.
3. 모든 사항이 검증되면, 서버 nfsd 데몬이 반출된 디렉토리에 대한 파일 핸들(파일 시스템 디렉토리에 대한 포인터)을 가져와서 이를 다시 클라이언트 커널에 전달.
# rpc.nfsd의 역할
마운트가 완료되고 클라이언트에서 서버와 통신 할 때 rpc.nfsd을 통해 데이터의 전송이 진행되는 데몬입니다.
# NFS 포트 및 프로토콜
Recommendations for NFS access ( NFS data I/O for static ports )
Port Number
|
Protocol
|
Service Name
|
Dependent network service names
|
2049
|
TCP and UDP
|
NFSV4 or NFSV3
|
rpcbind
rpc.statd
|
111
|
TCP and UDP
|
RPC (required only by NFSV3)
| |
User-defined static port
|
TCP and UDP
|
STATD (required only by NFSV3)
| |
User-defined static port
|
TCP and UDP
|
MNT (required only by NFSV3)
| |
User-defined static port
|
TCP and UDP
|
NLM (required only by NFSV3)
|
NFSv4는 TCP 2049포트만 사용하여, 기존 사용하던 portmap없이 연결 가능. 또한 nfslockd 및 nfsstatd 등의 프로그램 또한 필요하지 않습니다.
방화벽의 기타 포트 설정 필요없이 2049포트만 사용하면 됩니다.
# NFSv3, NFSv4에서 NFS용으로 사용되는 포트 변경
“ /etc/nfs.conf “ 파일을 수정하여 서비스별 포트를 변경가능.
NFSv3는 포트를 변경 후 정상 적용을 위해 재부팅이 필요하지만, NFSv4는 재부팅없이 nfs-server를 재시작하면 적용됩니다.
# NFS에 비해 NFSv4의 장점
Delegations
위임을 통해 클라이언트 측 캐싱의 성능과 정확성을 모두 향상시킬 수 있는 상당한 성능 개선
Support for a unified namespace
이 프로토콜을 사용하면 여러 위치에서 네임스페이스를 쉽게 연결할 수 있습니다.
Better support for migration and replication
고가용성 환경을 위해 다른 위치로 자동 리디렉션되도록 클라이언트를 구성할 수 있습니다.
Compound operations
NFS 클라이언트는 단일 NFS RPC 호출로 여러 작업을 수행할 수 있으므로 시스템 호출로 인해 더 이상 여러 클라이언트-서버 서비스 응답 시간이 발생하지 않습니다.
File locking
mounting 및 lockd 프로토콜이 NFSv4 프로토콜에 통합되었습니다.
NFS4.x locking은 대여 기반이며 클라이언트는 대여를 갱신해야 합니다. 그렇지 않으면 클라이언트가 키를 잃게 됩니다.
따라서 NFSv4.x locking은 잠금을 해제하기 위해 클라이언트가 정상적으로 재부팅해야하는 NFSv3(NLM) 프로토콜과 다릅니다.
자세한 내용은 https://access.redhat.com/solutions/895263 을 참조하십시오.
NFS-서버는 잘 알려진 TCP 포트 2049만 수신 대기합니다. 따라서 NFSv4는 rpcbind,lockd 그리고 rpc.statd 데몬을 사용할 필요가 없습니다.
rpc.mountd 데몬은 내보내기를 설정하기 위해 NFS 서버에 여전히 필요하지만 무선 작업에는 관여하지 않습니다.
A new security model
NFSv4의 출시는 NFS 내보내기에 대한 인증 및 보안에 혁명을 가져왔습니다. NFSv4는 RPCSEC_GSS 커널 모듈, Kerberos 버전 5 GSS-API 메커니즘, SPKM-3 및 LIPKEY의 구현을 요구합니다.
NFSv4에서 필수 보안 메커니즘은 NFSv2 및 NFSv3에서 사용되는 클라이언트 시스템이 아닌 개별 사용자 인증을 지향합니다.
댓글목록
등록된 댓글이 없습니다.