일반적인 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 및 기타 네트워크의 가상 분할은 네트워크를 논리적으로 설계하는 방법은 제공하지만 링크의 물리적 용량과 스위치 간의 트렁크는 바꾸지 않습니다. VPN에서처럼 스토리지 트래픽 및 다른 네트워크 트래픽이 물리적 연결 공유를 종료해도 과다 구독 및 손실 패킷이 존재할 가능성이 있습니다. 인터스위치 트렁크를 공유하는 VLAN의 경우에도 마찬가지입니다. SAN에 대한 성능을 설계할 때는 논리적 할당이 아닌 네트워크의 물리적 제한을 고려해야 합니다.