>일반적인 문제 >nfs가 뭐야?

nfs가 뭐야?

青灯夜游
青灯夜游원래의
2022-11-29 11:16:3623092검색

nfs는 네트워크 파일 시스템을 말하며, FreeBSD에서 지원하는 파일 시스템 중 하나입니다. 네트워크상의 컴퓨터가 TCP/IP 네트워크를 통해 리소스를 공유할 수 있게 해줍니다. NFS는 UDP/IP 프로토콜을 기반으로 하는 애플리케이션으로, RPC는 주로 원격 프로시저 호출 RPC 메커니즘을 사용하여 시스템, 운영 체제 및 하위 수준 전송 프로토콜에 독립적인 원격 파일에 액세스하기 위한 일련의 작업을 제공합니다.

nfs가 뭐야?

이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.

1. nfs 소개

Network File System(NFS)은 SUN에서 개발한 UNIX 프레젠테이션 계층 프로토콜로, 사용자가 자신의 컴퓨터를 사용하는 것처럼 네트워크의 다른 곳에 있는 파일에 액세스할 수 있습니다.

NFS는 UDP/IP 프로토콜을 기반으로 하는 애플리케이션으로, RPC는 주로 원격 프로시저 호출 RPC 메커니즘을 사용하여 시스템, 운영 체제 및 하위 계층 전송에 독립적인 원격 파일에 액세스하기 위한 일련의 작업을 제공합니다. 규약. RPC는 XDR 지원을 사용합니다. XDR은 기계 독립적인 데이터 설명 인코딩 프로토콜로, 인터넷을 통해 전송되는 데이터를 기계 아키텍처와 독립적인 형식으로 인코딩 및 디코딩하고 이기종 시스템 간의 데이터 전송을 지원합니다.

1.1 nfs 기능

  • NFS(Network File System)는 FreeBSD에서 지원하는 파일 시스템 중 하나입니다. 이를 통해 네트워크의 컴퓨터는 TCP/IP 네트워크를 통해 리소스를 공유할 수 있습니다.
  • NFS 애플리케이션에서는 로컬 NFS 클라이언트가 사용됩니다. 응용 프로그램은 로컬 파일에 액세스하는 것처럼 원격 NFS 서버에 있는 파일을 투명하게 읽고 쓸 수 있습니다.
  • nfs는 Linux와 Unix 간의 파일 공유에 적합하지만 Linux와 Windows 간의 파일 공유 기능은 구현할 수 없습니다. 2049/tcp 및 2049/udp 소켓을 수신하는 애플리케이션 계층에서 실행되는 프로토콜입니다.
  • nfs 서비스는 IP를 기반으로만 인증할 수 있습니다.
1.2 nfs 애플리케이션 시나리오

nfs에는 많은 실제 애플리케이션 시나리오가 있습니다. 다음은 몇 가지 일반적인 시나리오입니다.

여러 컴퓨터가 CDROM이나 기타 장치를 공유합니다. 이는 여러 시스템에 소프트웨어를 설치하는 데 더 저렴하고 편리합니다. 대규모 네트워크에서는 모든 사용자의 홈 디렉토리를 호스팅하도록 중앙 NFS 서버를 구성하는 것이 편리할 수 있습니다. 이러한 디렉터리를 네트워크로 내보낼 수 있으므로 사용자는 로그인하는 워크스테이션에 관계없이 항상 동일한 홈 디렉터리를 얻을 수 있습니다.
  • 다른 클라이언트는 NFS에서 영화 및 TV 파일을 시청하여 로컬 공간을 절약할 수 있습니다.
  • 클라이언트에서 완료된 작업 데이터, NFS 서버의 사용자 고유 경로에 백업 및 저장할 수 있습니다.
  • 1.3 nfs 시스템 구성

nfs 시스템은 최소한 두 가지 주요 부분으로 구성됩니다.

하나의 nfs 서버

여러 클라이언트
  • nfs 시스템의 아키텍처 다이어그램은 다음과 같습니다.

클라이언트는 TCP/IP 네트워크를 통해 NFS 서버에 저장된 데이터에 원격으로 액세스합니다.

NFS 서버가 공식적으로 활성화되기 전에 일부 NFS 매개 변수를 다음과 같이 구성해야 합니다. 실제 환경과 요구사항nfs가 뭐야?

2 .nfs 작동 메커니즘

nfs는 네트워크 파일 시스템 공유를 구현하기 위해 rpc를 기반으로 합니다. 먼저 rpc에 대해 이야기 해 봅시다.

2.1 RPC

RPC(Remote Procedure Call Protocol), 원격 프로시저 호출 프로토콜은 기본 네트워크 기술을 알지 못한 채 네트워크를 통해 원격 컴퓨터 프로그램에 서비스를 요청하는 프로토콜입니다. RPC 프로토콜은 통신 프로그램 간에 정보 데이터를 전달하기 위해 TCP 또는 UDP와 같은 일부 전송 프로토콜이 존재한다고 가정합니다. OSI 네트워크 통신 모델에서 RPC는 전송 계층과 응용 프로그램 계층에 걸쳐 있습니다.

RPC는 클라이언트/서버 모드를 채택합니다. 요청자는 클라이언트이고 서비스 제공자는 서버입니다.

위 그림에 rpc의 작동 메커니즘이 나와 있습니다.

  • 클라이언트 프로그램은 RPC 시스템 호출을 시작하고 이를 TCP 프로토콜을 기반으로 다른 호스트(서버)로 보냅니다.
  • 서버는 클라이언트의 시스템 호출 요청을 수신한 후 해당 요청을 수신합니다. 전달된 매개변수는 로컬 시스템 호출을 통해 실행되고, 반환된 실행 결과를 받은 후 서버의 서비스 프로세스는 이를 응답 메시지로 캡슐화한 후 rpc 프로토콜을 통해 반환합니다. 클라이언트에게
  • 클라이언트는 응답 정보를 받기 위해 프로세스를 호출하고, 프로세스 결과를 얻은 다음 계속하기 위해 실행을 호출합니다.
2.2 nfs 작동 메커니즘

NFS 서버는 4개의 프로세스를 실행합니다.

    nfsd
  • mountd
  • idmapd
  • portmapper
idmapd

은 사용자 계정을 중앙 집중식으로 매핑합니다. NFSNOBODY, 그러나 액세스할 때 로컬 사용자가 가능합니다. 액세스할 ID

mountd

는 클라이언트가 이 NFS 파일 시스템에 액세스하도록 허용된 클라이언트 목록에 있는지 확인하는 데 사용됩니다. 그렇다면 액세스가 허용됩니다(토큰을 발행하고 nfsd를 찾으려면 토큰을 보관하세요). ), 그렇지 않으면 액세스 거부됨

mountd의 서비스 포트는 무작위이며, 무작위 포트 번호는 rpc 서비스(portmapper)

nfsd

nfs 데몬에서 제공되며 2049/tcp 및 2049/udp에서 수신됩니다. ports

는 파일 저장을 담당하지 않으며(NFS 서버의 로컬 커널은 저장 예약을 담당함) 클라이언트가 시작한 rpc 요청을 이해하고 이를 로컬 커널로 전송한 후 저장하는 데 사용됩니다. 지정된 파일 시스템에서

portmapper

111/TCP 및 111/UDP 소켓을 수신하는 NFS 서버의 rpc 서비스는 RPC(원격 프로시저 호출)를 관리하는 데 사용됩니다.

다음은 NFS의 간단한 작업 흐름을 설명하는 예:

요구 사항:

file

파일 정보를 확인합니다. 이 file은 원격 NFS 서버 호스트(로컬 디렉터리 /shared/nfs에 마운트됨)

nfs가 뭐야?에 저장됩니다.

클라이언트는 커널에 대한 파일 정보(ls 파일)를 보기 위한 명령을 시작합니다. 커널은 NFS 모듈을 통해 이 파일이 로컬 파일 시스템의 파일이 아니라 원격 NFS 호스트의 파일임을 학습합니다. 클라이언트 호스트는 RPC 요청으로 캡슐화되어 TCP 포트 111을 통해 NFS 서버 호스트의 portmapper로 전송되는 RPC 프로토콜(시스템 호출)을 통해 파일 정보를 보기 위한 명령을 보냅니다.
  • NFS의 portmapper(RPC 서비스 프로세스) 서버 호스트는 NFS 서버의 mountd 서비스가 특정 포트에 있음을 클라이언트에게 알려주고 이를 찾을 수 있습니다. mountd가 서비스를 제공할 때 portmapper에 포트 번호를 등록해야 하기 때문에 portmapper는 클라이언트 후에 어떤 포트에서 작동하는지 알 수 있음을 확인합니다. 서버에서 mountd 프로세스의 포트 번호를 학습하고 알려진 서비스를 전달합니다. Mountd 포트 번호 요청 확인 종료
  • 확인 요청을 받은 후, mountd는 요청을 시작한 클라이언트가 이에 액세스할 수 있는 클라이언트 목록에 있는지 확인합니다. NFS 파일 시스템이고, 그렇다면 액세스가 허용됩니다(토큰 발행, nfsd를 찾기 위해 토큰 보유). 그렇지 않으면 액세스가 거부됩니다
  • 검증이 통과된 후 클라이언트는 mountd에서 발행한 토큰을 사용하여 nfsd 프로세스로 이동합니다. 서버의 nfsd 프로세스는 로컬 시스템 호출을 시작하고 클라이언트가 보려는 파일을 보기 위해 커널에 요청합니다.
서버의 커널이 시스템 호출을 실행합니다.

nfsd 프로세스는 커널에서 반환된 결과를 받은 후 이를 rpc 요청 메시지로 캡슐화하고 tcp/ip 프로토콜을 통해 클라이언트에 반환합니다.
    더 많은 관련 지식을 알고 싶다면
  • FAQ
  • 칼럼을 방문해주세요!

위 내용은 nfs가 뭐야?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.