일반적인 SAN은 스위치 네트워크를 통해 스토리지 시스템 모음에 연결된 컴퓨터 모음으로 구성되어 있습니다. 보통 여러 컴퓨터가 동일한 스토리지에 액세스합니다.

다음 그래픽에서는 단일 이더넷 스위치를 통해 스토리지 시스템에 연결된 여러 컴퓨터 시스템을 보여 줍니다. 이 구성에서는 각 시스템이 단일 이더넷 링크를 통해 스위치에 연결됩니다. 스위치는 단일 이더넷 링크를 통해 스토리지 시스템에 연결됩니다.

그림 1. 스토리지에 대한 단일 이더넷 링크 연결
이 그래픽에서는 단일 이더넷 스위치를 통해 스토리지 시스템에 연결된 여러 시스템을 보여 줍니다.

시스템이 스토리지에서 데이터를 읽을 때 스토리지는 충분한 데이터를 보내 스토리지 시스템과 이더넷 스위치 간의 링크를 채움으로써 응답합니다. 단일 시스템 또는 가상 시스템이 네트워크 속도를 모두 사용할 가능성은 적습니다. 그러나 많은 시스템이 하나의 스토리지 디바이스를 공유하는 경우 이러한 상황이 발생할 수 있습니다.

스토리지에 데이터를 쓰는 경우 여러 시스템 또는 가상 시스템이 링크를 채우려고 시도할 수 있습니다. 결과적으로, 시스템과 스토리지 시스템 간 스위치의 네트워크 패킷이 손실될 수 있습니다. 단일 링크로 전송할 수 있는 것보다 많은 트래픽을 스위치에서 스토리지 시스템으로 전송해야 하기 때문에 데이터 손실이 발생할 수 있습니다. 스위치에서 전송할 수 있는 데이터 양은 스위치와 스토리지 시스템 간 링크의 속도에 의해 제한됩니다.

그림 2. 손실된 패킷
이 그래픽에서는 서버와 스토리지 시스템 간 스위치에서 데이터가 손실되는 상황을 보여 줍니다.

손실된 네트워크 패킷의 복구로 인해 성능이 크게 저하됩니다. 데이터가 손실되었는지 확인하는 데는 시간이 걸릴 뿐 아니라 현재 트랜잭션에 사용할 수 있는 네트워크 대역폭을 재전송에 사용하게 됩니다.

iSCSI 트래픽은 네트워크에서 TCP(Transmission Control Protocol)를 통해 전송됩니다. TCP는 손실된 패킷을 재시도하여 결국 대상에 도달시켜 주는 신뢰할 수 있는 전송 프로토콜입니다. TCP는 손실된 패킷을 복구하도록 설계되었으며 복구된 패킷을 신속하고 원활하게 재전송합니다. 그러나 스위치에서 규칙적으로 패킷을 삭제한 경우에는 네트워크 처리량이 저하됩니다. 데이터 재전송 요청과 재전송된 패킷으로 인해 네트워크가 정체됩니다. 정체가 없을 때보다 적은 데이터가 네트워크에서 전송됩니다.

대부분의 이더넷 스위치는 데이터를 버퍼링 또는 저장할 수 있습니다. 이 기술을 통해 데이터를 전송하려는 모든 디바이스가 대상에 도달할 수 있는 동등한 기회를 갖습니다. 일부 전송을 버퍼링하는 기능과 많은 시스템에서 미결 명령 수를 제한하는 기능으로 인해 전송량이 소규모 버스트로 감소합니다. 여러 시스템의 버스트를 스토리지 시스템에 차례로 전송할 수 있습니다.

전송량이 많고 여러 서버가 단일 스위치 포트를 통해 데이터를 전송하는 경우 버퍼링 제한이 초과될 수 있습니다. 이 경우 스위치에서 전송할 수 없는 데이터가 손실되므로 스토리지 시스템은 손실된 패킷의 재전송을 요청해야 합니다. 예를 들어, 이더넷 스위치는 32KB를 버퍼링할 수 있지만 서버가 256KB를 스토리지 디바이스에 보내는 경우 일부 데이터가 손실됩니다.

대부분의 관리되는 스위치는 손실된 패킷에 대해 다음과 유사한 정보를 제공합니다.

*: interface is up
IHQ: pkts in input hold queue     IQD: pkts dropped from input queue
OHQ: pkts in output hold queue    OQD: pkts dropped from output queue
RXBS: rx rate (bits/sec)          RXPS: rx rate (pkts/sec)
TXBS: tx rate (bits/sec)          TXPS: tx rate (pkts/sec)
TRTL: throttle count
표 1. 샘플 스위치 정보
인터페이스 IHQ IQD OHQ OQD RXBS RXPS TXBS TXPS TRTL
* GigabitEthernet0/1 3 9922 0 0 476303000 62273 477840000 63677 0

Cisco 스위치와 관련된 이 예에서는 사용되는 대역폭이 476303000비트/초인데, 이는 회선 속도의 절반에도 미치지 못하는 수준입니다. 포트는 들어오는 패킷을 버퍼링하지만 몇몇 패킷이 손실되었습니다. 이 인터페이스 요약의 마지막 줄은 IQD 열에서 이 포트가 10,000개에 가까운 인바운드 패킷을 이미 손실했음을 나타냅니다.

이러한 문제를 방지하기 위해서는 여러 입력 이더넷 링크가 하나의 출력 링크로 집중되어 링크가 과다 구독되지 않도록 구성을 변경해야 합니다. 용량 제한에 가까운 데이터를 전송하는 여러 링크가 적은 수의 링크로 전환될 경우 과다 구독이 발생할 수 있습니다.

일반적으로 많은 데이터를 스토리지에 기록하는 애플리케이션 또는 시스템은 스토리지 디바이스에 대한 이더넷 링크를 공유해서는 안 됩니다. 이러한 유형의 애플리케이션은 스토리지 디바이스에 다중 연결을 사용해야 최적으로 수행됩니다.

스위치에서 스토리지로의 다중 연결은 스위치에서 스토리지로의 다중 연결을 보여 줍니다.

그림 3. 스위치에서 스토리지로의 다중 연결
그래프에 스위치에서 스토리지로의 다중 연결이 표시됩니다.

VLAN 또는 VPN을 사용해도 공유된 구성의 링크 과다 구독 문제에 대한 적절한 해결책이 제공되지는 않습니다. VLAN 및 네트워크의 기타 가상 파티셔닝을 통해 네트워크를 논리적으로 설계할 수 있습니다. 그러나 이를 통해 스위치 간의 링크와 트렁크의 물리적 기능은 변경되지 않습니다. 스토리지 트래픽 및 다른 네트워크 트래픽이 물리적 연결을 공유하는 경우 과다 구독 및 손실된 패킷이 발생할 수 있습니다. 인터스위치 트렁크를 공유하는 VLAN의 경우에도 마찬가지입니다. SAN에 대한 성능을 설계할 때는 논리적 할당이 아닌 네트워크의 물리적 제한을 고려해야 합니다.