iSCSI 성능 분석과 튜닝
이 프로시저는 시스템에 연결하는 동안 iSCSI 호스트 성능 문제점에 대한 솔루션과 네트워크 스위치 연결을 제공합니다.
이 태스크 정보
- Transmission Control Protocol(TCP) 지연 ACK
- 이더넷 점보 프레임
- 네트워크 병목현상 또는 초과 등록
- iSCSI 세션 로그인 밸런스
- 네트워크에서 iSCSI에 대한 우선순위 플로우 제어(PFC) 설정 및 대역폭 할당
프로시저
- TCP 지연 수신확인 기능을 사용 안함으로 설정하십시오. 이 기능을 사용하지 않으려면 OS/플랫폼 문서를 참조하십시오.
이러한 문제의 주요 신호: 읽기 성능이 쓰기 성능보다 현저히 떨어집니다. TCP(Transmission Control Protocol) 지연 수신확인은 네트워크 성능을 향상시키기 위해 일부 TCP 구현에서 사용하는 기술입니다. 그러나 우수한 I/O의 수가 하나인 경우 이러한 기술이 I/O 성능을 현저히 감소시킬 수 있습니다.
본질적으로, 여러 ACK 응답은 단일 응답으로 결합되어 프로토콜 오버헤드를 줄입니다. RFC 1122에 기술된 바와 같이 호스트는 최대 500밀리초까지 ACK 응답 전송을 지연시킬 수 있습니다. 또한 전체 크기의 수신 세그먼트 스트림의 경우 ACK 응답은 1초 세그먼트마다 전송되어야 합니다.
중요사항: 이러한 설정이 적용되려면 호스트를 다시 부팅해야 합니다. 일부 플랫폼(예: 표준 Linux 배포)은 이 기능을 사용 안함으로 설정하는 방법을 제공하지 않습니다. 그러나 이러한 문제가 버전 7.1 릴리스에서 해결되었으며 TcpDelayedAck 작동을 관리하는 데 호스트 구성의 변경이 필요하지 않습니다. - iSCSI에 대한 점보 프레임을 사용으로 설정하십시오.
점보 프레임은 1500바이트를 초과하는 크기를 갖는 이더넷 프레임입니다. MTU(Maximum Transmission Unit) 매개변수는 점보 프레임의 크기를 측정하는 데 사용됩니다.
시스템은 9000바이트의 MTU를 지원합니다. 점보 프레임을 사용으로 설정하려면 CLI 명령 cfgportip를 참조하십시오. 이 명령은 링크가 대칭 이동하므로 중단되고 포트를 통한 I/O 조작이 일시정지됩니다.
이를 적용하려면 네트워크가 점보 프레임 엔드 투 엔드를 지원해야 합니다. 단편화 없이 전달되는 ping 패킷을 전송하여 네트워크가 점보 프레임을 지원하는지 확인하십시오. 예를 들면, 다음과 같습니다.- Windows:
ping -t <iscsi target ip> -S <iscsi initiator ip> -f -l <new mtu size - packet overhead (usually 36, might differ)>다음 명령은 9000바이트 MTU가 Windows 7 시스템에서 올바르게 설정되었는지 확인하는 데 사용되는 명령 예입니다.
다음 출력은 성공 응답의 예입니다.ping -t -S 192.168.1.117 192.168.1.217 -f -l 8964192.168.1.217: bytes=8964 time=1ms TTL=52 - Linux:
ping -l <source iscsi initatior ip> -s <new mtu size> -M do <iscsi target ip> - ESXi:
ping <iscsi target ip> -I <source iscsi initiator ip> -s <new mtu size - 28> -d
- Windows:
- 패킷 드롭이 높지 않은지 확인하도록 개시자/대상 포트가 연결된 스위치의 포트 통계를 확인하십시오.
네트워크 아키텍처를 검토하여 병목현상과 초과 등록을 피할 수 있습니다. 패킷 드롭을 피하려면 네트워크가 밸런스를 이루어야 합니다. 패킷 드롭은 스토리지 성능을 심각하게 저하시킵니다. 네트워킹 지원에 문의하여 이러한 문제들을 해결하십시오.
- 모든 iSCSI 포트를 최적화한 후 이용하십시오. 시스템 자원 이용률을 최적화하려면, 모든 iSCSI 포트를 사용해야 합니다.
- 각 포트가 하나의 CPU에 지정되며 로그인의 밸런싱으로 CPU 활용도를 극대화하고 더 나은 성능을 얻을 수 있습니다. 시스템
노드에서 iSCSI 포트의 수와 동일하게 서브넷을 구성하는 것이 이상적입니다. 다른 서브넷의 IP를 사용하여 노드의 각 포트를 구성하고 다른 노드에 대해 동일하게
유지하십시오. 다음 예제는 이상적인 구성을 표시합니다.
노드 1
포트 1: 192.168.1.11
포트 2: 192.168.2.21
포트 3: 192.168.3.31
노드 2:
포트 1: 192.168.1.12
포트 2: 192.168.2.22
포트 3: 192.168.3.33 - 50개의 호스트가 포트 1에 로그인하지 않도록 하고 5개의 호스트만 포트 2에 로그인하게 하십시오.
- 적절한 서브넷 설정을 통해 세션 수와 중복성 간의 밸런스를 유지하십시오.
- 각 포트가 하나의 CPU에 지정되며 로그인의 밸런싱으로 CPU 활용도를 극대화하고 더 나은 성능을 얻을 수 있습니다. 시스템
노드에서 iSCSI 포트의 수와 동일하게 서브넷을 구성하는 것이 이상적입니다. 다른 서브넷의 IP를 사용하여 노드의 각 포트를 구성하고 다른 노드에 대해 동일하게
유지하십시오. 다음 예제는 이상적인 구성을 표시합니다.
- PFC 설정에 대한 문제점을 해결하십시오.
시스템에서 PFC를 사용으로 설정할 필요는 없습니다. 시스템은 DCBx(data center bridging exchange) 패킷을 읽고 스위치에 대해 사용되는 경우 자동으로 iSCSI에 대해 PFC를 사용으로 설정합니다. lsportip 명령 출력에서 lossless_iscsi 및 lossless_iscsi6 필드는 시스템에서 iSCSI에 대해 PFC가 사용으로 설정되었는지 여부에 따라 [on/off]를 표시합니다.
lossless_iscsi 및 lossless_iscsi6 필드가 off를 표시하는 경우, 다음 이유 중 하나 때문일 수 있습니다.- 해당 IP에 대해 VLAN이 설정되지 않았습니다. 다음 사항을 확인하십시오.
- IP 주소 유형 IPv4의 경우 lsportip 출력에서 vlan 필드를 확인하십시오. 이는 공백일 수 없습니다.
- IP 주소 유형 IPv6의 경우 lsportip 출력에서 vlan_6 필드를 확인하십시오. 이는 공백일 수 없습니다.
- vlan 및 vlan_6 필드가 공백인 경우 iSCSI용 VLAN 구성의 내용을 사용하여 IP 유형에 대해 VLAN을 설정하십시오.
- 해당 IP에 대해 호스트 플래그가 설정되지 않았습니다. 다음 사항을 확인하십시오.
- IP 주소 유형 IPv4의 경우 lsportip 출력에서 host 필드를 확인하십시오. 이는 yes여야 합니다.
- IP 주소 유형 IPv6의 경우 lsportip 출력에서 host_6 필드를 확인하십시오. 이는 yes여야 합니다.
- host 및 host_6 필드가 yes가 아닌 경우, cfgportip CLI 명령을 사용하여 IP 유형에 대한 호스트 플래그를 설정하십시오.
- PFC가 스위치에서 올바르게 설정되지 않았습니다.
VLAN이 적절하게 설정되고 호스트 플래그도 설정되었지만 lossless_iscsi 또는 lossless_iscsi6 필드가 여전히 off를 표시하는 경우, 일부 스위치 설정이 누락되었거나 잘못되었을 수 있습니다.
스위치에서 다음 설정을 확인하십시오.
- iSCSI 트래픽에 대해 우선순위 태그가 설정되었습니다.
- iSCSI CoS에 지정된 우선순위 태그에 대해 PFC가 사용으로 설정되었습니다.
- 스위치에서 DCBx가 사용으로 설정되었습니다.
적절한 문서를 확인하십시오.- 특정 스위치에 대해 PFC를 사용으로 설정하는 데 대한 문서를 참조하십시오.
- 사용자의 구성에 특정한 Red Hat Enterprise Linux(RHEL) 및 Windows 호스트에서 PFC를 사용으로 설정하는 데 대한 문서를 참조하십시오.
- 해당 IP에 대해 VLAN이 설정되지 않았습니다. 다음 사항을 확인하십시오.
- 네트워크에서 iSCSI에 적절한 대역폭이 제공되었는지 확인하십시오.
트래픽의 다양한 유형 사이에 대역폭을 나눌 수 있습니다. 좋은 성능을 위해서는 적절한 대역폭을 지정하는 것이 중요합니다. iSCSI 트래픽의 대역폭을 지정하려면 먼저 iSCSI에 대해 우선순위 플로우 제어를 사용으로 설정해야 합니다.