NFS 대 iSCSI – VMware VM 파일을 저장하기 위해 어떤 프로토콜을 선택해야 할까요? 이 질문은 보통 ESXi 호스트 간에 이동해야 하는 가상 머신(VM)을 저장하기 위해 공유 저장소를 구성해야 할 때, 클러스터링 기능을 사용할 때, 그리고 서버에 물리적 디스크를 연결할 수 있는 빈 슬롯이 없을 때 등에 나오게 됩니다.
대형 데이터 센터에 VMware vSphere를 배포하는 기관들은 비용이 많이 드는 Fibre Channel (FC) 또는 Fibre Channel over Ethernet (FCoE)를 선호합니다. 그러나 NFS와 iSCSI는 VMware vSphere 인프라에 사용되는 소규모 및 중규모 데이터 센터에서 하드웨어 비용이 더 저렴하기 때문에 매력적입니다. 이 블로그 글은 VMware vSphere 가상 인프라에서 이들을 사용하는 데 중점을 두고 NFS 대 iSCSI를 비교합니다.
NFS란 무엇인가요?
Network File System (NFS)은 서버의 디스크 또는 디스크 어레이에 저장된 파일을 네트워크의 다른 컴퓨터와 공유할 수 있는 네트워크 프로토콜입니다. NFS는 SUN Microsystems에 의해 개발되었으며 최초 버전은 1984년에 발표되었습니다. 이 글을 작성하는 시점에서 NFS의 최신 구현은 버전 4.1입니다. 버전 4.2는 개발 중이며 아직 제품 사용을 위해 제시되지 않았습니다.
각 새로운 NFS 버전마다 가상화 저장소에 유용한 기능을 포함한 새로운 기능과 개선 사항이 추가되었습니다. NFS v4.1은 여러 사용자가 동일한 파일을 공유하고 데이터 일관성(병렬 액세스)을 보장하기 위한 메커니즘을 제공합니다. 작업에 대한 여러 스레드가 지원됩니다.
NFS는 Open Systems Interconnect (OSI) 모델의 응용 계층에서 작동하는 프로토콜입니다. 클라이언트는 NFS 서버에 파일 및 디렉터리 작업을 위한 원격 프로시저 호출 (RPC) 요청을 보내어 파일에 액세스합니다.
RPC 요청은 프레젠테이션 계층에서 작동하는 XDR 프로토콜 (eXternal Data Representation)로 전송되며, 이는 플랫폼 간의 데이터 추상화를 위한 표준입니다. XDR은 컴퓨팅 시스템의 아키텍처에 의존하지 않는 데이터 표현의 통일된 및 규범적인 형태를 설명합니다. 클라이언트가 데이터를 전송할 때, RPC 클라이언트는 로컬 데이터를 규범적인 형태로 변환하고, 서버는 역변환 작업을 수행합니다.
데이터 통일이 완료되면, 클라이언트 측 RPC 서비스는 서버에서 원격 프로시저의 요청 및 실행을 보장합니다 (세션 계층의 기능을 제공). 이 단계에서 NFS 특정 계층의 설명이 완료됩니다. 다음으로, 데이터는 표준 TCP 또는 UDP 데이터 단위로 캡슐화되어 OSI 모델의 하위 계층으로 전송됩니다.
OSI 계층 | 프로토콜 |
응용 | NFS |
프레젠테이션 | XDR |
세션 | RPC |
전송 | TCP |
네트워크 | IP |
데이터 링크 | 이더넷 |
물리 | – |
NFS는 파일 수준에서 데이터를 공유합니다. 표준 네트워크 어댑터는 이더넷 인터페이스와 RJ-45 포트를 사용하여 NFS 공유 스토리지를 구현하는 데 사용될 수 있습니다.
가장 오래된 NFS 버전은 IP 네트워크를 통해 UDP를 통해 작동하며, 새로운 버전(NFS v2 및 v3)은 TCP 및 UDP를 통해 작동할 수 있습니다. NFS 4.0 및 4.1은 표준으로 IPv4 상의 TCP를 사용합니다. NFS v4는 방화벽을 통해 인터넷을 통해 작동합니다.
VMware vSphere ESXi 6.0 및 더 높은 ESXi 버전은 NFS 3.0 및 NFS 4.1을 지원합니다. ESXi에는 TCP/IP를 통해 NFS 서버에 연결하는 내장 NFS 클라이언트가 포함되어 있습니다. NFS 버전 3.0 및 4.1을 통해 연결할 때 각각 두 가지 다른 NFS 클라이언트가 사용됩니다. 새 NFS 데이터스토어를 생성할 때 사용할 NFS 버전을 선택할 수 있습니다. VMware는 NFS v.4.1을 사용할 때 다음 기능을 지원하지 않습니다:
- 저장소 DRS
- 저장소 I/O 제어
- 사이트 복구 관리자
가상 머신에 운영 체제를 설치하기 위한 VM 템플릿 및 ISO 이미지를 저장할 때 NFS 데이터스토어를 사용하는 것이 편리합니다.
iSCSI란 무엇인가요?
인터넷 소형 컴퓨터 인터페이스(iSCSI)는 데이터를 공유하기 위해 네트워크 내의 개체(이니셔티에이터 및 타겟) 상호 작용을 보장하는 네트워크 프로토콜입니다. iSCSI 이니셔티에이터는 클라이언트 측에서 구성되고 iSCSI 타겟은 서버 측에서 구성됩니다.
iSCSI 이니셔에이터는 소프트웨어 기반과 하드웨어 기반으로 구분될 수 있습니다. 하드웨어 기반 이니셔에이터는 클라이언트 기기의 중앙 처리 장치(CPU 또는 프로세서)에 부하를 줄이기 위해 하드웨어 호스트 버스 어댑터(HBA)의 설치가 필요합니다. 하드웨어 iSCSI HBA는 이더넷 인터페이스를 가진 네트워크 인터페이스 컨트롤러(NIC)입니다. 이 iSCSI 대 NFS 비교에서는 소프트웨어 기반 iSCSI 이니셔에이터의 사용을 고려합니다. iSCSI는 2003년에 소개되었으며 RFC 3720에서 설명되고 있습니다.
iSCSI는 TCP/IP 스택 위에서 작동하는 세션 계층 프로토콜입니다(OSI 모델의 5계층에서 작동합니다). 데이터는 블록 레벨에서 공유됩니다, NFS와는 달리 FC와 유사한 방식입니다. 이는 iSCSI 대 NFS 비교에서 중요한 포인트입니다. SCSI 명령은 TCP/IP 데이터 유닛에 캡슐화되어 표준 이더넷 네트워크를 통해 전송됩니다. 결과적으로 한 컴퓨터는 네트워크를 통해 다른 컴퓨터에 위치한 스토리지 블록 장치로 SCSI 명령을 전송할 수 있습니다.
레이어 | 설명 |
응용 | 파일 시스템, 데이터베이스 등 |
SCSI | SCSI 데이터, SCSI 명령, SCSI 상태 |
iSCSI | iSCSI 프로토콜 서비스, iSCSI Qualified Name (IQN), 인터넷 스토리지 이름 서비스 (iSNS), CHAP 인증 등 |
TCP | 에러 제어 메커니즘을 갖춘 프로토콜 (보통 TCP/IP 스택에서 작동) |
IP | 네트워크 통신과 라우팅을 위한 프로토콜 |
이더넷 | 스위치, 케이블, 포트 (커넥터), 프로토콜 |
참고: iSCSI가 VMware VM 복구에 어떻게 사용될 수 있는지에 대한 흥미로운 사실이 있습니다. 예를 들어, NAKIVO Backup & Replication에서 인스턴트 VM 복구를 사용하여 백업에서 직접 ESXi 호스트에서 VM을 실행할 때, VM은 선택한 ESXi 호스트에 생성되고 가상 디스크는 가상 호환 모드에서 RDM 디스크로 iSCSI 프로토콜을 사용하여 VM에 마운트됩니다.
VMware NFS vs iSCSI – 주요 차이점
NFS와 iSCSI는 구리 선을 사용하여 배치된 1기가비트 및 10기가비트 이더넷 네트워크(1GbE 및 10GbE)에서 작동할 수 있습니다. 더 높은 네트워크 속도가 더 좋습니다. 네트워크 토폴로지에 대해 더 읽어보세요. VMware vSphere에서 공유 데이터스토어를 사용하여 VM 파일을 저장할 때, NFS와 iSCSI 모두 VM 라이브 마이그레이션, 로드 밸런싱 및 데이터스토어 간 VM 마이그레이션에 사용할 수 있습니다. 두 공유 프로토콜 모두 TCP/IP 네트워크 상에서 다층 데이터 캡슐화 메커니즘으로 인한 상당한 오버헤드가 있습니다.
NFS는 대부분의 공급업체 NAS 장치에서 지원되며, 예를 들어 Synology 및 QNAP이 있습니다. 그러나 현재는 iSCSI 지원 NAS를 선택하는 것이 어렵지 않습니다.
자세한 내용은 VMware NFS 대 iSCSI 비교를 살펴보겠습니다.
로드 밸런싱
하나의 네트워크 경로가 실패하거나 과부하가 발생하는 경우, 다중 경로를 사용하여 서버와 스토리지 간에 로드 밸런싱을 제공합니다.
NFS 4.1은 서버에서 세션 트랑킹이 가능한 경우 다중 경로를 지원합니다(그러나 클라이언트 ID 트랑킹은 지원하지 않음). 결과적으로 단일 NFS 볼륨에 여러 IP 주소에서 액세스할 수 있습니다. NFS v3를 사용하는 경우 네트워크 로드 밸런싱을 위해 DNS 라운드로빈을 사용하세요.
VMware vSphere에서 iSCSI 다중 경로 작업은 VMkernel 네트워크 어댑터 수준에서 작동합니다. vSphere에서 iSCSI 로드 밸런싱을 위해 포트 바인딩을 사용할 수 있습니다.
캐싱
NFS를 사용할 때 파일 시스템 캐시가 NFS 서버에 위치하며 클라이언트 기기는 일관된 방식으로 NFS 서버의 메타데이터를 확인해야 합니다. NFS v3 및 v4는 비동기 데이터 쓰기를 지원하지만 메타데이터 업데이트는 동기적입니다.
iSCSI를 사용할 때 클라이언트 기기는 블록 수준에서 공유 저장소에 액세스한 후 파일 시스템을 생성합니다(예: VMware vSphere의 경우 ESXi 호스트가 iSCSI LUN에서 VMFS 파일 시스템을 생성합니다). 캐싱 정책은 iSCSI 공유 저장소를 위한 파일 시스템에 의해 정의되며 파일 시스템 캐시는 클라이언트 측에 위치합니다. 예를 들어, iSCSI를 공유 프로토콜로 사용하고 파일 시스템으로 ext3를 사용하는 경우 데이터 및 메타데이터 업데이트에 대한 완전한 Write-back 캐시를 사용할 수 있습니다.
가장 현대적인 파일 시스템은 비동기 메타데이터 업데이트를 사용하며 데이터 복구를 위해 로그 기반 저널링이 사용됩니다. 일반적으로 비동기 데이터 업데이트(iSCSI에서 사용)는 NFS에서 사용되는 동기 업데이트와 비교하여 데이터 및 메타데이터의 지속성 면에서 신뢰성이 낮습니다.
신뢰성
NFS. NIC 팀핑을 사용하여 네트워크 장애로부터 보호할 수 있습니다. 하나의 NIC가 실패하면 다른 NIC가 계속 작동할 수 있습니다.
iSCSI. VMware Pluggable Storage Architecture (PSA)는 iSCSI 배열과 작업할 때 장애 조치 구현을 위해 스토리지 어레이 유형 플러그인을 사용합니다. iSCSI 바인딩은 다중 서브넷에 있는 여러 iSCSI 타겟을 iSCSI 이니셔에 매핑하는 것을 필요로 합니다.
iSCSI와 NFS 모두 TCP를 캡슐화하는 데 사용하므로 데이터 전송은 네트워크 수준에서 확인됩니다.
VMFS는 iSCSI 스토리지에 저장할 경우 가상 디스크를 얇게 할당하는 경우에 취약할 수 있습니다. 전원 장애가 발생하면 볼륨을 복구할 수 없게 될 수 있습니다. 이러한 상황에서 NFS 데이터 스토어의 동작은 약간 더 신뢰할 수 있습니다. 정기적으로 VMware 백업을 수행한다면 이러한 문제를 완화할 수 있습니다.
보안
일반적으로 iSCSI 트래픽은 암호화되지 않지만, 이는 iSCSI 트래픽을 보호할 수 없다는 의미가 아닙니다. 이름과 암호를 사용하여 iSCSI 공유에 대한 인증이 지원됩니다. Challenge Handshake Authentication Protocol (CHAP)을 사용하면 서버와 클라이언트가 서로 신뢰할 수 있도록 할 수 있습니다.
NFS는 호스트 기반 인증을 사용합니다. NFS의 기본 구성은 암호화를 제공하지 않습니다(sys=system), 그러나 NFSv4를 사용하고 Kerberos를 활성화한 경우(sec=krb5p), 연결이 안전합니다. NFS 서버 구성에서는 NFS 공유에 액세스할 수 있는 호스트의 IP 주소를 정의해야 합니다. 여러 호스트 또는 전체 서브넷을 정의할 수도 있습니다. 예를 들어, 널리 알려진 SMB 파일 기반 공유 프로토콜은 사용자 기반 인증을 사용합니다.
VMware vSphere에서 공유된 iSCSI 및 NFS 스토리지를 사용하는 경우 전용 VLAN을 구성하거나 별도(개인)의 물리 네트워크를 사용하는 것이 권장되는 관행입니다. 이 접근 방식을 통해 스토리지 트래픽을 다른 유형의 트래픽으로부터 격리시킬 수 있습니다. NFS v3는 NFS v4.1과 유사한 보안 기능을 갖고 있지 않습니다. ESXi 서버는 NFS 공유를 루트 액세스로 마운트합니다(케르버스를 사용하지 않을 때). 따라서 안전한 구성을 할 때 이를 염두에 두십시오. 또한 VLAN과 VXLAN에 대해 읽어보십시오.
NFS v.4.1은 DES(데이터 암호화 표준)에 추가로 케르버스 인증을 지원하며 암호화 메커니즘을 포함합니다. 케르버스의 암호화 알고리즘은 무단 사용자가 NFS 트래픽에 액세스하는 것을 방지합니다. ESXi는 케르버스의 krb5 및 krb5i 구현을 지원합니다. ESXi 7.0는 NFS 4.1 케르버스 암호화 및 AUTH_SYS 보안 메커니즘을 지원하지만 동시에는 지원하지 않습니다.
VMware NFS 대 iSCSI – Raw Device Mapping
iSCSI를 공유 스토리지로 사용할 때, VM에 옛 디바이스 맵핑을 구성할 수 있습니다. 옛 디바이스 맵핑(RDM)은 VM에 전체 물리적 디스크나 iSCSI LUN을 직접(VM 구성에 가상 디스크를 삽입하는 대신) device로 依附시키는 기능입니다. RDM기반 접근法은 LUN(Logical Unit Number)에 데이터스토어를 생성하는 것, VMFS 파일 시스템을 생성하는 것, 그리고 VM이 사용하는 가상 디스크를 그 데이터스토어에 보관하는 전통적인 접근法과 다릅니다. iSCSI를 사용할 때 RDM가 가능하是因为 iSCSI 공유는 블록 阶层에 사용되며, VM에 依附된 블록 RDM 디스크를 Guest Operating System가 사용하는 사용자 defined 파일 시스템으로 포맷할 수 있습니다.
NFS로는 RDM 디스크로 依附하는 것은 지원되지 않습니다. NFS 공유는 파일 阶层에 사용되며, RDM는 블록 device를 VM에 依附시키는 것이 필요합니다. NFS 공유를 사용하면 NFS 데이터스토어를 생성하고 VMDK 가상 디스크 파일을 그 데이터스토어에 보관할 수 있습니다. Guest Operating System가 NFS 客户端或者 iSCSI 기동자를 갖추고 있다면, 그 阶层에서 NFS 공유나 iSCSI 공유를 依附할 수 있습니다. 따라서, VMware iSCSI와 NFS 대비 옛 디바이스 맵핑 ategory에서는 iSCSI가 이번에 승리합니다.
iSCSI와 NFS 성능
SOFTWARE iSCSI 구현으로써 성능은 약간 더 높습니다. 그러나 클라이언트 호스트의 CPU 부하도 더 커집니다. iSCSI는 네트워크에도 더 많은 부하를 가져옵니다. iSCSI는 네트워크 이전을 많이 가져가며 네트워크 부하를 높이고, NFS를 사용하면 更为 수elligible and 예측 가능하게 过程합니다. 大量的 쓰기 操作을 수행할 때, NFS 공유의 성능 저하를 확인할 수 있습니다.
vSphere에서 NFS를 사용할 때는 저장소 측에서 vStorage API for Array Integration (VAAI)를 지원하는 NFS를 사용하는 것이 좋습니다. VAAI를 사용하면 NFS 데이터스토어에서 두껍게 프로비저닝된 가상 디스크를 생성할 수 있습니다. 기본적으로 NFS 데이터스토어에서는 얇게 프로비저닝된 디스크가 생성됩니다. NFS와 iSCSI 모두 Jumbo 프레임을 지원하여 네트워크 성능을 향상시킬 수 있습니다.
iSCSI 대 NFS 속도 비교의 끝에는 성능이 저장소 어레이 공급 업체에 따라 달라진다는 점을 언급해야 합니다.
동시 액세스
iSCSI는 블록 장치에 대한 동시 또는 병렬 데이터 액세스를 지원하지 않습니다. 데이터는 두 개의 호스트 간에 공유되어야 합니다. 그러나 병렬 액세스는 파일 시스템 수준에서 허용됩니다. 예를 들어 VMFS나 GFS와 같은 병렬 파일 액세스를 지원하는 파일 시스템에서는 병렬 액세스가 허용됩니다. VMware vSphere에서 iSCSI 공유를 사용할 때, 공유에 대한 동시 액세스는 VMFS 수준에서 보장됩니다.
NFS는 잠금 메커니즘을 사용하여 공유 파일에 대한 동시 액세스를 지원하며 충돌을 피하고 데이터 일관성을 유지하기 위한 close-to-open 일관성 메커니즘을 사용합니다. NFS v3 및 NFS v4.1은 서로 다른 메커니즘을 사용합니다. NFS v3은 Network Lock Manager 프로토콜 (NLM)을 사용하며, NFS v4.1은 네이티브 프로토콜 지정 잠금을 사용합니다. VMware ESXi에서 파일 공유에 NFS v3을 사용하는 경우, VMware는 이 경우에 자체 잠금 프로토콜을 제공하기 때문에 ESXi는 NLM 프로토콜을 사용하지 않습니다. NFS v3 공유를 사용할 때 파일 공유에서는 .lck-file_id와 같은 이름의 잠금 파일이 생성됩니다.
NFS v4.1은 동시 액세스를 위해 파일을 잠그기 위해 예약을 사용합니다. NFS 파일 공유를 생성하면 모든 클라이언트가 NFS 프로토콜의 동일한 버전을 사용해야 합니다 (예: 모든 ESXi 호스트가 NFS v.4.1을 통해 공유에 연결). 호환되지 않는 두 클라이언트가 NFS 서버의 파일에 대해 서로 다른 버전의 NFS에 액세스하는 경우 일관되지 않은 동작 및 데이터 손상이 발생할 수 있습니다.
구성의 어려움
NFS를 사용할 때 서버와 클라이언트를 구성하는 것이 더 쉽습니다. 공유 저장소를 구성하기 위해 iSCSI를 사용하는 것은 더 어렵습니다. 저장소와 호스트에 대한 IQN을 구성하고 iSCSI 서비스, LUN 및 마스킹의 구성을 해야 하며 보안 이유로 다중 VLAN을 구성해야 합니다 (iSCSI 통신에 사용되는 네트워크 세그먼트를 격리하여 더 높은 보안 수준을 제공).
VM 데이터를 저장하는 데 사용할 수 있는 VMware 가상 볼륨에 대해 읽어보세요.
VMware vSphere에서의 NFS 대 iSCSI – 요약 표
이 iSCSI 대 NFS VMware 비교에서 각 데이터 공유 프로토콜의 주요 기능을 요약 표에서 강조해 봅시다.
iSCSI | NFS | |
데이터 공유 | 블록 수준 | 파일 수준 |
VM용 Raw Device Mapping | 예 | 아니오 |
구성의 어려움 | 중간 | 쉬움 |
SAN에서 부팅 | 예 | 아니오 |
오류 검사 | 예 | 예 |
보안 기능 | CHAP | 케르베로스 |
스토리지 vMotion | 예 | 예 |
스토리지 DRS | 예 | 예 |
결론
iSCSI와 NFS의 두 공유 프로토콜은 VMware vSphere에서 사용할만큼 충분히 성숙합니다. iSCSI와 NFS의 주요 차이점은 iSCSI가 블록 수준에서 데이터를 공유하고 NFS가 파일 수준에서 데이터를 공유한다는 것입니다. 성능은 거의 동일하지만 일부 상황에서는 iSCSI가 더 나은 결과를 제공할 수 있습니다. VM용 RDM 디스크는 iSCSI와 함께 사용할 수 있지만 NFS와 함께 사용할 수 없습니다.
두 가지 네트워크 공유 프로토콜은 신뢰할 수 있습니다. 그러나 데이터 손실과 다운타임을 피하기 위해 제3자 데이터 보호 솔루션을 사용해야 합니다. 공유 저장소에서 데이터 손실을 피하기 위해 전원 고장 및 기타 하드웨어 고장을 피하세요. 무정전 전원 장치를 사용하고 정기적인 백업을 만드세요.
Source:
https://www.nakivo.com/blog/nfs-vs-iscsi-for-accessing-vm-data/