iSCSI에 대한 상세 설명
1. iSCSI란 무엇인가?
iSCSI(Internet Small Computer System Interface)는 SCSI 명령을 TCP/IP 네트워크를 통해 전송하여 원격 스토리지를 로컬 디스크처럼 사용할 수 있도록 하는 스토리지 프로토콜이다.
즉, 일반적인 NAS(Network Attached Storage) 방식(SMB, NFS)과 달리, 네트워크를 통해 원격 디스크를 직접 마운트하여 로컬 블록 스토리지처럼 동작하게 만드는 기술이다.
💡 쉽게 말해:
- SMB/NFS → 파일 단위(File-Level) 공유
- iSCSI → 블록 단위(Block-Level) 공유 (로컬 디스크처럼 동작)
📌 iSCSI의 주요 특징:
- TCP/IP 기반이므로 기존 네트워크 인프라(이더넷)를 활용할 수 있음.
- SCSI 명령어를 encapsulation(캡슐화)하여 네트워크로 전송.
- OS에서 로컬 디스크로 인식되므로, 일반 HDD/SSD와 동일한 방식으로 사용할 수 있음.
- 스토리지 프로토콜 중에서 가장 범용성이 높고, 네트워크 기반 SAN(Storage Area Network)에서 많이 사용됨.
✅ iSCSI는 과거 데이터센터에서 SAN(Storage Area Network) 구축 시 광채널(Fibre Channel)보다 저렴한 대안으로 많이 사용되었음.
✅ 현재도 고성능 NAS나 가상화 환경(VMware, Proxmox, Hyper-V)에서 블록 스토리지 공유 용도로 여전히 널리 활용됨.
2. iSCSI의 구조 및 동작 방식
iSCSI는 크게 두 가지 역할로 나뉜다.
- iSCSI Initiator (클라이언트): iSCSI Target에 연결하여 원격 디스크를 마운트하는 장치 (예: Windows/Linux PC, Hypervisor)
- iSCSI Target (서버): iSCSI Initiator에게 스토리지를 제공하는 장치 (예: TrueNAS, Windows Server, SAN 장비)
📌 iSCSI 데이터 전송 과정:
- iSCSI Initiator가 Target에 연결 요청을 보냄.
- TCP/IP 기반으로 SCSI 명령을 캡슐화하여 전송.
- iSCSI Target이 명령을 받아 원격 스토리지 블록을 제공.
- Initiator는 이를 로컬 디스크처럼 사용하며 파일 시스템(FAT, NTFS, EXT4 등)으로 마운트.
💡 결과적으로:
➡ 네트워크를 통해 원격 스토리지를 직접 로컬 디스크처럼 사용 가능
➡ 네트워크 레벨에서 동작하는 블록 스토리지 방식
3. iSCSI vs SMB vs NFS – 성능 및 비교
구분 | iSCSI (블록 레벨) | SMB (파일 레벨) | NFS (파일 레벨) |
사용 방식 | OS에서 로컬 디스크처럼 인식 | 네트워크 공유 폴더 | 네트워크 공유 폴더 |
프로토콜 계층 | 블록 단위 I/O (SCSI) | 파일 단위 I/O | 파일 단위 I/O |
속도 | 가장 빠름 (CPU 부하 적음) | 상대적으로 느림 (파일 단위) | 중간 (파일 단위) |
지연시간 (Latency) | 가장 낮음 ( |
상대적으로 높음 (~1ms 이상) | 중간 ( |
CPU 사용량 | 낮음 (네트워크 처리만 필요) | 중간 (파일 접근 권한, 메타데이터 처리) | 높음 (파일 메타데이터 + 락 처리) |
멀티유저 동시 접속 | 제한적 (1:1 연결) | 다수 동시 접속 가능 | 다수 동시 접속 가능 |
장점 | 높은 성능, 낮은 지연시간, 로컬 디스크처럼 사용 가능 | 광범위한 호환성, Windows에서 기본 지원 | Linux 환경에서 빠르고 효율적 |
단점 | 설정이 복잡함, 여러 클라이언트가 동일 디스크를 공유할 수 없음 | 파일 단위라 속도가 제한됨 | SMB보다 설정이 어려움 |
📌 성능 측면에서 보면:
✅ iSCSI는 네트워크를 통해 SCSI 명령을 직접 처리하므로 파일 단위 공유 방식(SMB, NFS)보다 속도가 빠르고, I/O 지연이 적음.
✅ SMB와 NFS는 파일 단위 접근 방식이라, 메타데이터 처리, 파일 락킹 등으로 인해 오버헤드가 발생하여 성능이 낮아질 수 있음.
💡 결론:
✅ SMB는 파일 공유에 적합
✅ NFS는 리눅스 기반 서버에서 유용
✅ iSCSI는 고성능 블록 스토리지가 필요할 때 가장 적합
4. PC방 노하드 시스템과 iSCSI – 왜 느릴까?
과거 PC방에서 iSCSI 기반 "노하드 시스템"이 널리 사용되었지만, 일반적으로 느린 성능을 보였음.
📌 노하드 시스템이 느렸던 이유:
- 저속 네트워크 사용 (1Gbps 환경이 일반적)
- 1GbE(125MB/s)에서는 OS 부팅 및 게임 실행 시 병목 발생.
- OS 부팅 시 수십~수백 개의 클라이언트가 동시에 I/O 요청을 보내면서 속도가 저하됨.
- 스토리지 성능 부족
- 당시 사용된 SATA HDD나 SSD의 IOPS(입출력 성능)가 부족하여 병목 발생.
- RAID 설정이 비효율적이거나 캐싱이 부족하여 성능 저하.
- 대규모 동시 요청 처리 어려움
- iSCSI는 1:1 연결이 기본 구조이므로, 다수의 클라이언트가 동시에 접속하면 트래픽이 과부하됨.
💡 하지만 최근 10GbE 이상 환경에서는 iSCSI도 충분히 빠름.
5. iSCSI를 사용할 때 성능을 극대화하는 방법
iSCSI의 성능을 최대한 활용하려면 네트워크 및 스토리지 최적화가 필수다.
📌 최적화 방법:
✅ 10GbE 이상 네트워크 사용 (1GbE는 속도 병목 발생)
✅ MTU 설정 (Jumbo Frame 활성화, 9000으로 설정)
✅ Flow Control 비활성화, NIC에서 RSS/TSO 활성화
✅ NVMe SSD 캐시 적용 (HDD는 속도 한계가 있음)
✅ iSCSI LUN을 SSD RAID로 구성하여 성능 극대화
✅ Direct Access Mode 사용 (Windows iSCSI Initiator 설정에서 설정 가능)
➡ 이렇게 설정하면 로컬 NVMe SSD에 가까운 성능을 제공할 수 있음.
6. 결론 – 현재도 iSCSI가 가장 빠른가?
✅ 파일 공유라면 SMB/NFS가 더 유용하지만, 블록 단위 스토리지 성능이 중요할 경우 iSCSI가 여전히 최적의 솔루션.
✅ 특히, 10GbE 이상 네트워크와 SSD 스토리지 환경에서는 iSCSI의 성능이 매우 뛰어남.
✅ 반면, 1GbE 환경에서는 SMB/NFS와 큰 차이가 없으며, 설정이 잘못되면 속도가 오히려 낮아질 수 있음.
✅ 과거 PC방 노하드 시스템이 느렸던 이유는 네트워크 및 스토리지 병목 때문이며, 현재의 10GbE + SSD 환경에서는 충분히 고속으로 동작 가능.
➡ 결론적으로, 현재도 고성능 네트워크 스토리지가 필요하다면 iSCSI는 SMB/NFS보다 빠른 선택지! 🚀
설명에 사용된 용어 정리 및 iSCSI 관련 추가 설명
1. MTU (Maximum Transmission Unit) 설정
- MTU란?
네트워크에서 **한 번에 전송할 수 있는 최대 패킷 크기(Byte 단위)**를 의미함.- 일반적으로 이더넷의 기본 MTU는 1500바이트로 설정됨.
- iSCSI, SMB Direct, RDMA 등의 고속 데이터 전송에서는 MTU를 9000으로 설정하여 더 큰 패킷을 한 번에 전송할 수 있음.
- MTU 설정의 효과:
- MTU가 크면, 더 적은 패킷 수로 동일한 데이터를 전송할 수 있어 CPU 부하가 감소하고 속도가 향상됨.
- 하지만, MTU 설정이 네트워크의 모든 장치에서 동일하게 적용되지 않으면 패킷 단편화(fragmentation)가 발생하여 성능이 오히려 저하될 수 있음.
📌 MTU 설정 방법 (Windows/Linux 예시)
# Linux에서 MTU 9000으로 설정
ip link set eth0 mtu 9000
# Windows에서 MTU 확인 및 설정
netsh interface ipv4 show subinterfaces
netsh interface ipv4 set subinterface "Ethernet" mtu=9000 store=persistent
2. Jumbo Frame
- Jumbo Frame이란?
- 기본적으로 이더넷 패킷은 1500바이트(MTU 1500)까지 전송할 수 있지만, Jumbo Frame을 활성화하면 최대 9000바이트까지 증가시킬 수 있음.
- MTU가 9000이면, 패킷 크기가 커져서 한 번에 더 많은 데이터를 보낼 수 있음.
- Jumbo Frame의 장점:
- 패킷 수 감소 → CPU 부하 감소 → 네트워크 효율 증가
- 대량의 데이터 전송(iSCSI, SMB, NFS, 10GbE 환경 등)에서 성능 향상
- Jumbo Frame 사용 시 주의점:
- 네트워크의 모든 장치(스위치, 라우터, 서버, 클라이언트)에서 동일한 설정이 필요함.
- 하나라도 설정이 다르면 패킷 단편화(fragmentation) 문제가 발생하여 성능이 저하될 수 있음.
📌 Jumbo Frame 활성화 방법 (Windows 예시)
# 네트워크 인터페이스 MTU 9000으로 설정
netsh interface ipv4 set subinterface "Ethernet" mtu=9000 store=persistent
📌 Jumbo Frame 활성화 방법 (Linux 예시)
ip link set eth0 mtu 9000
3. Flow Control (흐름 제어, FC)
- Flow Control이란?
네트워크에서 송신 속도를 조절하여 수신 측이 데이터를 감당할 수 있도록 하는 기능.- 네트워크 트래픽이 과부하 상태가 되면 송신 측이 전송 속도를 줄이도록 제어함.
- 일반적으로 스위치와 네트워크 카드(NIC)에서 활성화할 수 있음.
- Flow Control의 문제점:
- 대역폭이 큰 환경(10GbE 이상)에서는 Flow Control이 오히려 성능 저하를 유발할 수 있음.
- iSCSI, SMB Direct 등의 고속 네트워크 환경에서는 Flow Control을 비활성화하는 것이 일반적임.
📌 Flow Control 비활성화 방법 (Windows 예시)
- 장치 관리자 → 네트워크 어댑터 → 속성
- 고급(Advanced) 탭 → "Flow Control"을 "Disabled"로 변경
📌 Flow Control 비활성화 방법 (Linux 예시)
ethtool -A eth0 rx off tx off
4. RSS (Receive Side Scaling) / TSO (TCP Segmentation Offload)
✅ RSS (Receive Side Scaling):
- 다중 CPU 코어를 활용하여 네트워크 트래픽을 병렬 처리하는 기술
- 기본적으로 네트워크 트래픽은 단일 CPU 코어에서 처리되는데, RSS를 활성화하면 여러 코어에서 동시에 처리하여 성능을 높일 수 있음.
✅ TSO (TCP Segmentation Offload):
- 패킷을 작은 단위로 나누는 작업을 CPU가 아닌 네트워크 카드(NIC)에서 처리하도록 하는 기술
- CPU 부하를 줄이고 네트워크 성능을 향상시킬 수 있음.
📌 RSS/TSO 활성화 방법 (Windows 예시)
- 장치 관리자 → 네트워크 어댑터 → 속성 → 고급(Advanced)
- "Receive Side Scaling" 옵션을 "Enabled"로 변경
- "TCP Segmentation Offload" 옵션을 "Enabled"로 변경
📌 RSS/TSO 활성화 방법 (Linux 예시)
ethtool -K eth0 rx on tx on tso on gso on
5. iSCSI LUN (Logical Unit Number)
- iSCSI LUN이란?
- iSCSI Target에서 클라이언트(Initiator)에게 제공하는 블록 스토리지 단위
- 하나의 LUN은 하나의 논리적 디스크(Logical Volume)처럼 동작
📌 예제:
- 10TB의 스토리지가 있는 iSCSI 서버에서,
- 5TB를 LUN 1로 설정 → Windows 서버에서 사용
- 3TB를 LUN 2로 설정 → Linux 서버에서 사용
- 2TB를 LUN 3으로 설정 → VMware에서 사용
➡ 클라이언트 입장에서는 LUN이 하나의 독립적인 로컬 디스크처럼 보임.
6. iSCSI는 꼭 전용 용량을 할당해야 하나?
✅ iSCSI는 기본적으로 "블록 스토리지"이므로, 반드시 특정 용량을 LUN으로 할당해야 함.
✅ 즉, NFS처럼 하나의 스토리지 전체를 공유하는 방식이 아님.
📌 차이점 비교:
구분 | iSCSI (블록 스토리지) | NFS (파일 스토리지) |
데이터 접근 방식 | 블록 단위 (Raw Disk) | 파일 단위 (Shared Folder) |
사용 방식 | OS에서 로컬 디스크처럼 마운트 | 네트워크 공유 폴더로 사용 |
멀티 클라이언트 지원 | 제한적 (1:1 연결이 기본) | 다중 클라이언트 접근 가능 |
유연성 | 정해진 용량만큼 LUN 할당 필요 | 전체 스토리지를 공유 가능 |
➡ iSCSI는 블록 단위 접근이므로, 특정 용량을 LUN으로 할당해야 사용 가능.
➡ 반면, NFS는 스토리지 전체를 공유할 수 있으며, 여러 사용자가 동시에 접근 가능.
📌 iSCSI를 유연하게 사용하는 방법:
- Thin Provisioning 사용 → 필요할 때만 실제 공간을 차지하도록 설정
- LVM(Logical Volume Manager)과 조합하여 관리
결론
✅ MTU & Jumbo Frame → 네트워크 패킷 크기 조절하여 성능 최적화
✅ Flow Control 비활성화 → 고속 네트워크 환경에서 오버헤드 방지
✅ RSS/TSO 활성화 → 네트워크 트래픽 처리 최적화
✅ iSCSI LUN → 특정 용량을 할당하여 사용
✅ iSCSI는 블록 단위 스토리지이므로, NFS처럼 전체 공유는 불가능
➡ iSCSI는 성능이 뛰어나지만, 블록 스토리지 방식이라 반드시 용량을 지정해서 할당해야 함.
➡ NFS처럼 자유롭게 공유하고 싶다면, 대신 SMB/NFS를 사용하는 것이 더 적절함.
'IT생활' 카테고리의 다른 글
TrueNAS에서 iSCSI 볼륨을 마운트한 상태에서 Windows에서도 동시에 마운트할 수 있을까? 설명해보았다 (0) | 2025.02.03 |
---|---|
iSCSI LUN에 저장된 파일을 NFS처럼 외부에서 접근할 수 있을까? (0) | 2025.02.03 |
40GbE 네트워크 카드 NIC – Mellanox vs. Intel 멜라녹스 인텔 비교 (0) | 2025.02.03 |
10Gbps SFP+ 케이블로 40GbE 연결이 가능할까? (0) | 2025.02.03 |
OpenVPN 클라이언트 연결 시 VPN으로만 통신하게 만들기 (Kill Switch) (0) | 2025.02.03 |