네트워크 파일 시스템

Network File System

NFS(Network File System)는 [1]Sun Microsystems(Sun)가 1984년에 처음 개발한 분산 파일 시스템 프로토콜로, 클라이언트 컴퓨터의 사용자가 컴퓨터 네트워크를 통해 파일에 액세스할 수 있도록 합니다. 이는 로컬 스토리지에 액세스하는 것과 매우 유사합니다.NFS는 다른 많은 프로토콜과 마찬가지로 ONC RPC(Open Network Computing Remote Procedure Call) 시스템을 기반으로 구축됩니다.NFS는 RFC(Request for Comments)에 정의된 개방형 IETF 표준으로, 누구나 프로토콜을 구현할 수 있습니다.

버전 및 종류

Sun은 버전 1을 사내 실험용으로만 사용했다.개발 팀은 NFS 버전 1에 상당한 변경 사항을 추가하고 Sun 외부에서 릴리스한 후 버전 상호 운용 및 RPC 버전 폴백을 [2][3]테스트할 수 있도록 새 버전을 v2로 릴리스하기로 결정했습니다.

NFSv2

프로토콜 버전 2(RFC 1094, 1989년 3월 정의)는 원래 UDP(User Datagram Protocol)를 통해서만 작동합니다.설계자는 코어 프로토콜 외부에 잠금(예:)을 구현하여 서버 의 스테이트리스 상태를 유지하도록 의도했습니다.NFS 버전 2의 작성에는 Russel Sandberg, Bob Lyon, Bill Joy, Steve Kleiman [1][4]등이 관여하고 있습니다.

가상 파일 시스템 인터페이스를 통해 단순한 프로토콜에 반영되는 모듈식 구현이 가능합니다.1986년 2월까지 시스템 [4]V 릴리즈 2, DOS 및 Unice를 사용하는 VAX/VMS 의 운영체제에 대한 구현이 시연되었습니다.NFSv2에서는 32비트 제한으로 인해 파일의 처음 2GB만 읽을 수 있습니다.

NFSv3

버전 3(RFC 1813, 1995년 6월)에서는 다음 기능이 추가되었습니다.

  • 2기가바이트(GB)보다 큰 파일을 처리하기 위한 64비트 파일 크기 및 오프셋 지원
  • 서버에서의 비동기 쓰기 지원으로 쓰기 성능 향상
  • 많은 응답에 추가 파일 속성을 추가함으로써 파일 속성을 재작성할 필요가 없어집니다.
  • READDIRPLUS 조작: 디렉토리를 스캔할 때 파일명과 함께 파일[5] 핸들 및 속성을 가져옵니다.
  • 기타 여러 가지 개선 사항.

Sun Microsystems 내의 첫 번째 NFS 버전 3 제안은 NFS 버전 2가 출시된 지 얼마 지나지 않아 작성되었습니다.주요 동기는 NFS 버전 [6]2에서 동기 쓰기 작업의 성능 문제를 완화하기 위한 시도였습니다.1992년 7월까지 구현 관행은 NFS 버전 2의 많은 단점을 해결했으며, 대용량 파일 지원(64비트 파일 크기 및 오프셋) 부족만 시급한 문제로 남았습니다.이는 Digital Equipment Corporation이 새롭게 출시된 64비트 RISC 프로세서인 Alpha 21064를 지원하기 위해 64비트 버전의 Ultrix를 출시함에 따라 심각한 과제가 되었습니다.버전 3의 도입 당시, 트랜스포트 계층 프로토콜로서의 TCP에 대한 벤더의 지원이 증가하기 시작했습니다.이미 여러 벤더가 TCP를 전송으로 사용하는 NFS 버전 2에 대한 지원을 추가했지만, Sun Microsystems는 버전 3에 대한 지원을 추가함과 동시에 NFS에 대한 전송으로 TCP에 대한 지원을 추가했습니다.TCP를 WAN 경유로 NFS를 사용한 전송으로 사용하는 것이 보다 실현 가능하며, User Datagram Protocol에 의해 부과된 8KB의 제한보다 큰 읽기 및 쓰기 전송 크기를 사용할 수 있습니다.

WebNFS

WebNFS는 NFSv2 및 NFSv3의 확장 기능으로 포트맵 및 MOUNT 프로토콜의 복잡함 없이 제한적인 방화벽에서 작동할 수 있었습니다.WebNFS는 고정 TCP/UDP 포트 번호(2049년)를 가지고 있으며 클라이언트가 모든 파일 시스템의 초기 파일 처리를 확인하기 위해 MOUNT RPC 서비스에 문의할 필요가 없는 대신 시작 지점으로 사용할 수 있는 퍼블릭 파일 핸들(NFSv2의 특수한 길이, NFSv3의 제로) 개념을 도입했습니다.이 두 가지 변경 사항은 모두 나중에 NFSv4에 통합되었습니다.

NFSv4

Andrew File System(AFS) 및 Server Message Block(SMB, CIFS라고도 함)의 영향을 받은 버전4(RFC 3010, 2000년 12월, RFC 3530, 2003년 4월 및 RFC 7530, 2015년 3월 개정)에는 성능 향상, 강력한 보안 요구 및 스테이트풀 [7]프로토콜이 도입되었습니다.버전 4는 Sun Microsystems가 NFS 프로토콜 개발을 넘겨준 후 Internet Engineering Task Force(IETF)와 함께 개발된 첫 번째 버전이 되었습니다.

NFS 버전 4.1(RFC 5661, 2010년 1월, RFC 8881에서 개정, 2020년 8월)은 여러 서버 간에 분산된 파일에 확장 가능한 병렬 액세스를 제공하는 기능을 포함하여 클러스터된 서버 배치를 활용할 수 있는 프로토콜 지원을 제공하는 것을 목표로 합니다.버전 4.1에는 세션 트렁킹 메커니즘(NFS 멀티패스라고도 함)이 포함되어 있으며 일부 엔터프라이즈 솔루션에서 VMware ESXi로 사용할 수 있습니다.

NFS 버전 4.2(RFC 7862)는 2016년 11월에[8] 서버 측 복제 및 복사, 애플리케이션 I/O 조언, 스파스 파일, 공간 예약, 애플리케이션 데이터 블록(ADB), 모든 MAC 보안 시스템을 수용하는 sec_label로 NFS 레이블 지정, PNFS(LAU 및 Layout)에 대한 두 가지 새로운 작업을 포함하여 게시되었습니다.

NFSv4의 큰 장점 중 하나는 서비스를 실행하는 데 UDP 또는 TCP 포트 2049 하나만 사용되므로 방화벽 전체에서 프로토콜 사용이 단순해진다는 것입니다.

기타 내선번호

버전 2 및 버전 3의 확장 기능인 WebNFS를 사용하면 NFS를 웹 브라우저에 보다 쉽게 통합하고 방화벽을 통해 작업을 수행할 수 있습니다.2007년에 Sun Microsystems는 클라이언트 측 WebNFS 구현을 오픈 [9]소싱했습니다.

NFS에는 다양한 사이드밴드 프로토콜이 연결되었습니다.주의:

  • 바이트 범위 어드바이저리 NLM(Network Lock Manager) 프로토콜(UNIX System V 파일 잠금 API를 지원하기 위해 추가됨)
  • RQUOTAD(Remote Quota Reporting) 프로토콜: NFS 사용자가 NFS 서버의 데이터 스토리지 할당량을 볼 수 있습니다.
  • NFS over RDMA(Remote Direct Memory Access[10][11](RDMA)를 트랜스포트
  • NFS 서버인 NFS-Ganesha는 사용자 공간에서 실행되며 각 FSAL(파일 시스템 추상화 계층) 모듈을 통해 GPFS/Spectrum Scale, CephFS와 같은 다양한 파일 시스템을 지원합니다.CephFS FSAL은 libcephfs를[12] 사용하여 지원되었습니다.
  • 신뢰할 수 있는 NFS(TNFS)[13]

플랫폼

NFS는 종종 Unix 운영 체제(: Solaris, AIX, HP-UX), Apple의 MacOS 및 Unix와 유사한 운영 체제(예: LinuxFreeBSD)에서 사용됩니다.또한 도토리 리스크 OS,[14]아미가 OS의 고전적인 맥 OS, OpenVMS,[3]MS-DOS,[15]마이크로 소프트 Windows,[16]OS[17]ArcaOS,[18]노벨 NetWare,[19], 그리고 IBM과 같은 운영 체제에 i.[20]대안 원격 파일 액세스 프로토콜은 서버 메시지 블록(SMB, 또한 CIFS라고도 한다), 애플 파일링 프로토콜(AFP), NetWareCore프로토콜을 포함한다 사용할 수 있습니다.L(NCP는), OS/400 파일 Serve.r 파일 시스템(QFileSvr.400).

SMB 및 NetWare Core Protocol(NCP)은 Microsoft Windows를 실행하는 시스템에서 NFS보다 더 자주 발생하고, AFP는 Apple Macintosh 시스템에서 NFS보다 더 자주 발생하며, QFileSvr.400은 IBM i 시스템에서 더 자주 발생합니다.2012년 Haiku는 Google Summer of Code 프로젝트의 일환으로 NFSv4 지원을 추가했습니다.

2013년 11월 22일 현재 NFS SPECsfs2008 성능 비교

표준 구현

Unix 형식의 시나리오에서는, 1대의 머신(클라이언트)이 다른 머신(NFS 서버)에 보존되어 있는 데이터에 액세스 할 필요가 있다고 가정합니다.

  1. 서버는 NFS 데몬 프로세스를 구현하며 기본적으로 다음과 같이 실행됩니다.nfsd데이터를 클라이언트가 일반적으로 사용할 수 있도록 합니다.
  2. 서버 관리자는 디렉토리 이름 및 파라미터를 내보내고 사용할 수 있는 항목을 결정합니다.일반적으로 디렉토리 이름 및 파라미터는/etc/exports컨피규레이션파일 및exportfs명령어를 입력합니다.
  3. 서버 보안 관리를 통해 검증된 클라이언트를 인식하고 승인할 수 있습니다.
  4. 서버 네트워크 구성을 통해 적절한 클라이언트가 방화벽 시스템을 통해 서버와 네고시에이트할 수 있습니다.
  5. 클라이언트 머신은 내보낸 데이터에 대한 액세스를 요구합니다(일반적으로mount명령어를 입력합니다.(클라이언트는 NFS 서버가 사용하는 포트를 서버(rpcbind)에 문의하고 클라이언트는 NFS 서버에 접속(nfsd), nfsd는 요구를 mountd에 전달합니다.)
  6. 모든 것이 정상적으로 진행되면 클라이언트머신의 사용자는 허용된 파라미터 내에서 서버상의 마운트파일 시스템을 표시 및 조작할 수 있습니다.

NFS 마운트 프로세스의 자동화가 이루어질 수 있음에 주의해 주십시오.예를 들어,/etc/fstab및/또는 자동 마운트 설비.

프로토콜 개발

ONC 프로토콜(당시 SunRPC로 불림)의 개발 기간 동안, 오직 아폴로 네트워크 컴퓨팅 시스템(NCS)만이 유사한 기능을 제공했습니다.두 개의 경쟁 그룹은 두 개의 원격 프로시저 호출 시스템의 근본적인 차이를 두고 개발되었습니다.데이터 부호화 방법에 초점을 맞춘 인수: 접속의 양쪽 피어가 리틀 엔디안 머신 아키텍처를 사용하고 있어도 ONC의 XDR(External Data Representation)은 항상 빅 엔디안 순서로 정수를 렌더링합니다.반면 NCS의 방식은 2개의 피어가 머신 아키텍처에서 공통 엔디안을 공유할 때마다 바이트 스왑을 회피하려고 했습니다. 개의 네트워크 컴퓨팅 환경을 조화시키기 위한 (결국 성공하지 못한) 시도에서 Network Computing Forum이라고 불리는 업계 그룹이 결성되었습니다(1987년 3월).

1987년 Sun과 AT&T는 AT&T의 UNIX System V Release [21]4를 공동 개발한다고 발표했습니다.이로 인해 AT&T의 UNIX System 라이선스 계약자 중 많은 수가 Sun이 유리한 위치에 설 것을 우려하게 되었고, 결국 1988년 Digital Equipment, HP, IBM 및 기타 기업이 Open Software Foundation(OSF)을 설립하게 되었습니다.얄궂게도, 태양과 AT&T이전에 태양의 NFS대 AT&amp고 출전해 왔다.T의 원격 파일 시스템(RFS), NFS의 RFS에 디지털 장비, HP, IBM에 의해 신속한 선정과 다른 많은 컴퓨터 공급 업체 NFS.NFS의 상호 운용성을 찬성하는 행사"Connectathons"1986년에 vendo게 시작하라 불리는 효소에 의해 지원을 받고 있었는데 대다수의 사용자들 팁을 주었다.서로 간의 구현에 대한 r-중립 테스트.[22]OSF는 Sun/ONC RPC 및 NFS를 통해 Distributed Computing Environment(DCE) 및 DCE Distributed File System(DFS)을 채택했습니다.DFS는 RPC로 DCE를 사용하고, Andrew File System(AFS; 앤드류 파일 시스템)에서 파생된 DFS(스위트 테크놀로지 포함)를 사용했습니다.

1990년대

Sun Microsystems와 Internet Society(ISOC)는 ISOC의 엔지니어링 표준 기관인 Internet Engineering Task Force(IETF)가 ONC RPC 프로토콜과 관련된 표준 문서(RFC)를 발행하고 시도된 ONC RPC를 확장할 수 있도록 ONC RPC의 "변경 제어"를 양도하기로 합의했습니다.변화 통제권을 포기하기 싫다는 것이 증명되었다.이후 IETF는 프로토콜 표준이 적절한 보안을 갖는 IETF 요건을 충족하기 위해 Generic Security Services Application Program Interface(GSSAPI; 범용 보안 서비스 애플리케이션 프로그램인터페이스) RPCSEC GSS기반한 새로운 인증 플레이버를 추가함으로써 ONC RPC의 확장을 선택했습니다.

이후 Sun과 ISOC는 NFS 버전 2와 버전 3을 제외하도록 계약서를 신중하게 작성했지만 NFS에 대한 ISOC 변경 제어 권한을 부여하는 유사한 합의에 도달했습니다.대신 ISOC는 NFS 프로토콜에 새 버전을 추가할 수 있는 권한을 얻었고, 그 결과 2003년에 IETF가 NFS 버전 4를 지정하게 되었습니다.

2000년대

21세기까지 DFS와 AFS 모두 SMB-CIFS나 NFS에 비해 큰 상업적 성공을 거두지 못했습니다.이전에 DFS 및 AFS의 주요 상용 벤더인 Transarc를 인수했던 IBM은 2000년에 AFS 소스 코드 대부분을 자유 소프트웨어 커뮤니티에 기증했습니다.오픈AFS 프로젝트는 계속됩니다.2005년 초에 IBM은 AFS 및 DFS의 판매 종료를 발표했습니다.

2010년 1월 Panasas는 데이터 액세스[23] 병렬화 기능을 개선한다고 주장하는 병렬 NFS(pNFS) 기술을 기반으로 하는 NFSv4.1을 제안했습니다.NFSv4.1 프로토콜은 파일 시스템 메타데이터를 파일 데이터 위치에서 분리하는 방법을 정의합니다. 데이터 서버 세트 간에 데이터를 스트라이핑하여 단순한 이름/데이터 분리를 넘어섭니다.이는 파일 이름 및 데이터 이름을 단일 서버 아래에 보관하는 기존 NFS 서버와는 다릅니다.일부 제품은 다중 노드 NFS 서버이지만 메타데이터와 데이터를 분리하는 데 클라이언트의 참여가 제한됩니다.

NFSv4.1 pNFS 서버는 서버 리소스 또는 컴포넌트의 집합이며, 이들은 메타데이터 서버에 의해 제어되는 것으로 간주됩니다.

pNFS 클라이언트는 여전히 하나의 메타데이터 서버에 액세스하여 네임스페이스와 상호 작용합니다.클라이언트가 서버 간에 데이터를 이동할 때 pNFS 서버 컬렉션에 속한 데이터 서버 세트와 직접 상호 작용할 수 있습니다.NFSv4.1 클라이언트는 파일 데이터의 정확한 위치에 직접 참여하고 데이터를 이동할 때 NFS 서버 한 대와의 단독 작업을 피할 수 있습니다.

NFSv4.1은 pNFS와 더불어 다음을 제공합니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ a b Russel Sandberg; David Goldberg; Steve Kleiman; Dan Walsh; Bob Lyon (1985). "Design and Implementation of the Sun Network Filesystem". USENIX. CiteSeerX 10.1.1.14.473. {{cite journal}}:Cite 저널 요구 사항 journal=(도움말)
  2. ^ NFS 일러스트레이티드 (2000) by Brent Callaghan - ISBN 0-201-32570-5
  3. ^ a b "HP TCP/IP Services for OpenVMS Management". h41379.www4.hpe.com. HP. Retrieved 24 September 2016.
  4. ^ a b Russel Sandberg. "The Sun Network Filesystem: Design, Implementation and Experience" (PDF). Technical Report. Sun Microsystems.
  5. ^ Arpaci-Dusseau, Remzi; Arpaci-Dusseau, Andrea (March 2015). Operating Systems: Three Easy Pieces (PDF) (.9 ed.). Arpaci-Dusseau Books. p. 5. Retrieved 8 November 2017.
  6. ^ Brian Pawlowski; Chet Juszczak; Peter Staubach; Carl Smith; Diane Lebel; David Hitz (1994). "NFS Version 3 Design and Implementation". USENIX.
  7. ^ "NFS Version 4". USENIX. 2005-04-14.
  8. ^ Haynes, Thomas (2016-11-01). "NFS Version 4 Minor Version 2".
  9. ^ yanfs.dev.java.net[영구 데드링크]
  10. ^ Tom Talpey (February 28, 2006). "NFS/RDMA Implementation(s) Update" (PDF). Network Appliance, Inc. Archived from the original (PDF) on May 12, 2011.
  11. ^ Brent Callaghan (January 28, 2002). "NFS over RDMA" (PDF). Sun Microsystems.
  12. ^ Singh, Karan (2016). "4: Working with the Ceph Filesystem". Ceph Cookbook. Birmingham: Packt Publishing Ltd. p. 110. ISBN 9781784397364. Retrieved 2017-03-21. NFS-Ganesha is an NFS server that runs in user space and supports the CephFS FSAL (File System Abstraction Layer) using libcephfs.
  13. ^ Glover <fglover@zk3.dec.com>, Fred. "A Specification of Trusted NFS (TNFS) Protocol Extensions". tools.ietf.org.
  14. ^ "Networking related programs".
  15. ^ "Other Software by SUN Microsystems". www.computinghistory.org.uk. The Centre for Computing History. Retrieved 24 September 2016.
  16. ^ "Introduction to Microsoft Windows Services for UNIX 3.5". technet.microsoft.com. Microsoft. Retrieved 24 September 2016.
  17. ^ "NTFS plugin for NetDrive". ecsoft2.org. Retrieved 2020-09-22.
  18. ^ "NetDrive for OS/2". arcanoae.com. Retrieved 2020-09-22.
  19. ^ "NFS Gateway for NetWare 6.5". www.novell.com. Novell. Retrieved 24 September 2016.
  20. ^ "OS/400 Network File System Support" (PDF). publib.boulder.ibm.com. IBM. Retrieved 24 September 2016.[영구 데드링크]
  21. ^ Carole Patton (1987-10-26). "AT&T to License Sun Microsystems' SPARC Chip". InfoWorld. p. 37. Retrieved 2019-07-16.
  22. ^ "What is Connectathon?". Original Connectathon.Org web site. Archived from the original on January 28, 1999.
  23. ^ "pNFS". Panasas. Retrieved August 4, 2013.

외부 링크