ESXi와 VNXe간에 1Gbit iSCSI 제한을 해독하는 방법


15

iSCSI 네트워크에 큰 문제가있어 최대한 빨리 작동하지 않는 것 같습니다.

따라서 VMware 및 EMC 전문가와 함께 SAN에서 완전한 성능을 얻기 위해 거의 모든 것을 시도했습니다.

장비에 대한 간단한 설명 : 3 개의 HP DL360 G7 / vSphere 5.5 / 4 개의 온보드 NIC / 4 개의 PCIe Intel NIC for iSCSI 2x HP 2510-24G 1 ​​개의 EMC VNXe 3100 / 2 개의 스토리지 프로세서 (각각 2 개의 iSCSI 전용 NIC / 24x 15k SAS RAID10) / 6x 7.2k SAS RAID6

모범 사례를 수행하고 스토리지 풀을 두 iSCSI 서버에 균등하게 배치했습니다. 각 스토리지 프로세서마다 하나씩 2 개의 iSCSI 서버를 만들었습니다. 내 iSCSI 구성 이미지를 참조하십시오.

iSCSI 구성

iSCSI 트래픽은 VLAN을 통해 분리되며 (다른 VLAN의 경우 금지) 29xx 시리즈의 다른 HP 스위치로 시도했습니다. 흐름 제어가 활성화되어 있고 비활성화 된 상태에서도 점보가 비활성화되어 있습니다. 관련된 라우팅이 없습니다.

ESX 호스트에서 모든 데이터 저장소에 라운드 로빈 설정을 사용함에 따라 모든 iSCSI NIC가 사용되고 있습니다. 다른 많은 사람들이 그런 식으로 성능을 얻은 것처럼 보이기 때문에 1 IO의 경로 변경 정책으로 시도했습니다. 내부 NIC도 시도했지만 (Broadcom) 차이는 없습니다. 스위치에서 포트가 ESX 쪽과 VNXe 쪽에서 매우 균등하게 사용되고 있음을 알 수 있습니다. 나는 완벽한로드 밸런싱을 가지고 있지만 총 1 기가비트를 넘을 수는 없다. VNXe가 다중 연결에 최적화되어 있으며 라운드 로빈도 필요하다는 것을 이해하지만 2 개의 호스트와 2 개의 데이터 스토어 (다른 iSCSI 서버 사용)간에 스토리지 vMotion을 수행하더라도 84MBit / Unisphere 웹 인터페이스를 통해. 디스크가 그렇게 믿을 수없는 것과 정확히 같은 값으로 그 줄을 자주 볼 수 있습니다. ' 더 많은 것을 제공하지 않거나 작업이 충분하지 않습니다. 더 나아지고 있습니다. 각 호스트와 각 스토리지 프로세서에 케이블이 하나만 있으면 같은 성능을 얻을 수 있습니다. 그래서 많은 중복성을 얻었지만 추가 속도는 전혀 없었습니다.

상당수의 사람들이 iSCSI 성능에 대해 이야기하는 것을 보았을 때 필자는 구성에 문제가있는 것을 찾아야합니다. 모든 의견에 감사드립니다!

편집하다:

예, 여러 NIC를 사용하도록 vMotion을 구성했습니다. 해당 스토리지 이외에 vMotion은 항상 vMotion 어댑터가 아닌 iSCSI 어댑터를 통과합니다. 구성 스크린 샷을 첨부했습니다.

iSCSI 포트 바인딩

iSCSI 대상

iSCSI 경로

스토리지 vMotion이 벤치 마크가 아니라는 것을 알고 있지만 지난 며칠 동안이 작업을 많이 수행해야했으며 상한은 항상 약 80MB / s였습니다. RAID 10에 6x 15k 600GB SAS 디스크 풀을 사용하면 쉽게 더 많은 정보를 얻을 수 있어야한다고 생각하지 않습니까? 나는 당신을 위해 IO 미터 테스트를했습니다-그들 중 일부를 시도했는데, 가장 빠른 것은 256 KiB 100 % 읽기였습니다. 64.45MB / s를 얻었습니다. Unisphere는 거의 같은 속도를 보여줍니다. 이것은 6x 15k 300GB SAS 디스크 (RAID 10) 풀에 저장된 VM에 있으며이 시간에는 다른 활동이 거의 없습니다.

IO 측정기

유니 스피어

EDIT2 :

중복 된 사용자 이름으로 죄송하지만 직장에서이 질문을 작성했으며 이미 주식 오버플로에서 얻은 사용자 이름을 사용하지 않았습니다. 그러나 여기 내 라운드 로빈 설정을 보여주는 스크린 샷이 있습니다. 모든 호스트와 모든 상점에서 동일합니다.

라운드 로빈


나는 아무것도 잘못 생각하지 않습니다. 정확히 무엇을 기대하고 있습니까? 다중 NIC vMotion
ewwhite 2016 년

3
vmkernel이 I / O 및 CPU 사용으로 제한되므로 스토리지 vmotion 수행은 스토리지 시스템의 벤치 마크가 아닙니다. iometer 등을 사용하여 벤치마킹을 시도 했습니까? VNXe에는 어떤 종류의 디스크와 어떤 종류의 RAID / 스토리지 풀 설정이 있습니까?
pauska

또한 vSphere 내에서 LUN "관리 경로"스크린 샷을 게시 할 수 있습니까?
pauska 2016 년

질문 할 때 사용한 것과 다른 사용자로 로그인하여 편집 내용이 대기열에 멈췄습니다.
pauska

스크린 샷에 감사하지만 여전히 내가 요청한 것은 아닙니다. esxi 호스트 중 하나, 구성 탭, 데이터 스토어를 클릭하고 문제를 해결하려는 데이터 스토어를 선택한 다음 오른쪽 하단의 "속성"링크를 클릭하십시오. 그런 다음 "경로 관리"를 클릭하고 해당 창의 스크린 샷을 보내주십시오.
pauska

답변:


1

실제로 시작하기에 충분한 IOPS를 생성하지 못할 수 있습니다.
봐 가지고 여기에 작은 값으로 기본에서 1'000 IOPS를 설정을 변경하는 방법을. (이것은 대칭에 따라 다르지만 VMWare Round Robin Provider에 대해서도 동일하게 수행 할 수 있습니다)

그러나 하나의 데이터 저장소와 동시에 하나 이상의 링크를 완전히 병렬로 사용할 수 있는지는 아직 확신하지 못했습니다. 이점을 확인하려면 둘 이상의 데이터 스토어에서 IOMeter 테스트를 병렬로 수행해야한다고 생각합니다. (100 % 확실하지 않음)


내 질문에 언급했듯이 이미 경로 변경 정책을 1.000 대신 1로 설정했습니다.별로 많이 변경되지 않았습니다.
Ryan Hardy

아아, 나는 그 부분을 간과해야했다. 미안.
MichelZ

1

EMC라는 스토리지 공급 업체에 대한 SATP 규칙을 생성하고 경로 정책을 Round Robine 및 IOPS로 기본값 1000에서 1로 설정하십시오. 이는 재부팅시 지속성이며 새로운 EMC iSCSI LUN이 제공 될 때마다이 규칙이 적용됩니다. 기존 EMC iSCSI LUN에 적용하려면 호스트를 재부팅하십시오.

esxcli storage nmp satp rule add --satp="VMW_SATP_DEFAULT_AA" \
  --vendor="EMC" -P "VMW_PSP_RR" -O "iops=1"

IOPS를 1-3으로 변경하여 놀았으며 단일 VM에서 최고의 성능을 발견했습니다. 즉, 많은 VM과 많은 데이터 저장소가 있다면 1이 최적이 아닐 수 있습니다 ...

VNXe의 각 인터페이스가 9000 MTU로 설정되어 있는지 확인하십시오. 또한 iSCSI 인터페이스가있는 vSwitch는 각 VMKernel과 함께 9000 MTU로 설정되어야합니다. VNXe에서 두 개의 iSCSI 서버 (SPA 용 및 SPB 용)를 만듭니다. 처음에 하나의 IP를 연결하십시오. 그런 다음 각 iSCSI 서버에 대한 세부 정보를보고 SP 당 각 활성 인터페이스에 대한 추가 IP를 추가하십시오. 원하는 라운드 로빈 성능을 제공합니다.

그런 다음 최소한 두 개의 데이터 스토어를 생성하십시오. 하나의 데이터 저장소를 iSCSIServer-SPA와 연관시키고 다른 하나를 iSCSIServer-SPB와 연관 시키십시오. 이렇게하면 SP 중 하나가 유휴 상태에 있지 않습니다.

마지막으로 iSCSI에 사용되는 ESX 측의 모든 인터페이스는 모든 인터페이스가 활성화 된 별도의 vSwitch로 이동해야합니다. 그러나 지정된 vSwitch 내 ESX 측의 각 인터페이스에 대한 VMkernel이 필요합니다. 각 VMKernel이 하나의 활성 어댑터와 다른 모든 미사용을 갖도록 vSwitch 장애 조치 순서를 재정의해야합니다. 이것은 ESX 호스트 프로비저닝에 사용한 배포 스크립트입니다. 각 호스트에는 총 8 개의 인터페이스가 있으며 4 개는 LAN, 4 개는 iSCSI / VMotion 트래픽입니다.

  1. 아래 구성 수행

ㅏ. # DNS esxcli 네트워크 IP DNS 검색 추가 --domain = mydomain.net

esxcli 네트워크 IP DNS 서버 추가 --server = XXXX

esxcli 네트워크 IP DNS 서버 추가 --server = XXXX

비. # 적절히 호스트 이름 업데이트 설정

esxcli 시스템 호스트 이름 설정 --host = server1 --domain = mydomain.net

씨. # vSwitch0에 업 링크 추가 esxcli 네트워크 vswitch 표준 업 링크 추가 --uplink-name = vmnic1 --vswitch-name = vSwitch0

esxcli 네트워크 vswitch 표준 업 링크 추가 --uplink-name = vmnic4 --vswitch-name = vSwitch0

esxcli 네트워크 vswitch 표준 업 링크 추가 --uplink-name = vmnic5 --vswitch-name = vSwitch0

디. # 스토리지 용 vSwitch1을 생성하고 MTU를 9000으로 설정

esxcli 네트워크 vswitch 표준 add --vswitch-name = vSwitch1

esxcli 네트워크 vswitch 표준 세트 --vswitch-name = vSwitch1 --mtu = 9000

이자형. # vSwitch1에 업 링크 추가

esxcli 네트워크 vswitch 표준 업 링크 추가 --uplink-name = vmnic2 --vswitch-name = vSwitch1

esxcli 네트워크 vswitch 표준 업 링크 추가 --uplink-name = vmnic3 --vswitch-name = vSwitch1

esxcli 네트워크 vswitch 표준 업 링크 추가 --uplink-name = vmnic6 --vswitch-name = vSwitch1

esxcli 네트워크 vswitch 표준 업 링크 추가 --uplink-name = vmnic7 --vswitch-name = vSwitch1

에프. # vSwitch0에 대한 활성 NIC 설정

esxcli 네트워크 vswitch 표준 정책 장애 조치 세트 --vswitch-name = vSwitch0 --active-uplinks = vmnic0, vmnic1, vmnic4, vmnic5

지. # vSwitch1에 대한 활성 NIC 설정

esxcli 네트워크 vswitch 표준 정책 장애 조치 세트 --vswitch-name = vSwitch1 --active-uplinks = vmnic2, vmnic3, vmnic6, vmnic7

h. # ESX02가 아닌 ESX01 용 iSCSI 및 vmkernel에 대한 포트 그룹 생성

esxcli 네트워크 vswitch 표준 포트 그룹 추가 --portgroup-name = iSCSI-vmnic2 --vswitch-name = vSwitch1

esxcli 네트워크 IP 인터페이스 추가 --interface-name = vmk2 --portgroup-name = iSCSI-vmnic2 --mtu = 9000

esxcli 네트워크 IP 인터페이스 ipv4 set --interface-name = vmk2 --ipv4 = 192.158.50.152 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk2

esxcli 네트워크 vswitch 표준 포트 그룹 추가 --portgroup-name = iSCSI-vmnic3 --vswitch-name = vSwitch1

esxcli 네트워크 IP 인터페이스 추가 --interface-name = vmk3 --portgroup-name = iSCSI-vmnic3 --mtu = 9000

esxcli 네트워크 IP 인터페이스 ipv4 set --interface-name = vmk3 --ipv4 = 192.158.50.153 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk3

esxcli 네트워크 vswitch 표준 포트 그룹 추가 --portgroup-name = iSCSI-vmnic6 --vswitch-name = vSwitch1

esxcli 네트워크 IP 인터페이스 추가 --interface-name = vmk6 --portgroup-name = iSCSI-vmnic6 --mtu = 9000

esxcli 네트워크 IP 인터페이스 ipv4 set --interface-name = vmk6 --ipv4 = 192.158.50.156 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk6

esxcli 네트워크 vswitch 표준 포트 그룹 추가 --portgroup-name = iSCSI-vmnic7 --vswitch-name = vSwitch1

esxcli 네트워크 IP 인터페이스 추가 --interface-name = vmk7 --portgroup-name = iSCSI-vmnic7 --mtu = 9000

esxcli 네트워크 IP 인터페이스 ipv4 set --interface-name = vmk7 --ipv4 = 192.158.50.157 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk7

나는. # ESX01이 아닌 ESX02의 iSCSI 및 vmkernel에 대한 포트 그룹 생성

esxcli 네트워크 vswitch 표준 포트 그룹 추가 --portgroup-name = iSCSI-vmnic2 --vswitch-name = vSwitch1

esxcli 네트워크 IP 인터페이스 추가 --interface-name = vmk2 --portgroup-name = iSCSI-vmnic2 --mtu = 9000

esxcli 네트워크 IP 인터페이스 ipv4 set --interface-name = vmk2 --ipv4 = 192.168.50.162 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk2

esxcli 네트워크 vswitch 표준 포트 그룹 추가 --portgroup-name = iSCSI-vmnic3 --vswitch-name = vSwitch1

esxcli 네트워크 IP 인터페이스 추가 --interface-name = vmk3 --portgroup-name = iSCSI-vmnic3 --mtu = 9000

esxcli 네트워크 IP 인터페이스 ipv4 set --interface-name = vmk3 --ipv4 = 192.168.50.163 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk3

esxcli 네트워크 vswitch 표준 포트 그룹 추가 --portgroup-name = iSCSI-vmnic6 --vswitch-name = vSwitch1

esxcli 네트워크 IP 인터페이스 추가 --interface-name = vmk6 --portgroup-name = iSCSI-vmnic6 --mtu = 9000

esxcli 네트워크 IP 인터페이스 ipv4 set --interface-name = vmk6 --ipv4 = 192.168.50.166 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk6

esxcli 네트워크 vswitch 표준 포트 그룹 추가 --portgroup-name = iSCSI-vmnic7 --vswitch-name = vSwitch1

esxcli 네트워크 IP 인터페이스 추가 --interface-name = vmk7 --portgroup-name = iSCSI-vmnic7 --mtu = 9000

esxcli 네트워크 IP 인터페이스 ipv4 set --interface-name = vmk7 --ipv4 = 192.168.50.167 --netmask = 255.255.255.0 --type = static

vim-cmd hostsvc / vmotion / vnic_set vmk7

제이. # 각 iSCSI vmkernel에 대해 활성 NIC를 설정합니다

esxcli 네트워크 vswitch 표준 포트 그룹 정책 장애 조치 세트 --portgroup-name = iSCSI-vmnic2 --active-uplinks = vmnic2

esxcli 네트워크 vswitch 표준 포트 그룹 정책 장애 조치 세트 --portgroup-name = iSCSI-vmnic3 --active-uplinks = vmnic3

esxcli 네트워크 vswitch 표준 포트 그룹 정책 장애 조치 세트 --portgroup-name = iSCSI-vmnic6 --active-uplinks = vmnic6

esxcli 네트워크 vswitch 표준 포트 그룹 정책 장애 조치 세트 --portgroup-name = iSCSI-vmnic7 --active-uplinks = vmnic7

케이. # 포트 그룹 생성

esxcli 네트워크 vswitch 표준 포트 그룹 추가 --portgroup-name = VMNetwork1 --vswitch-name = vSwitch0

esxcli 네트워크 vswitch 표준 포트 그룹 추가 --portgroup-name = VMNetwork2 --vswitch-name = vSwitch0

esxcli 네트워크 vswitch 표준 포트 그룹 추가 --portgroup-name = VMNetwork3 --vswitch-name = vSwitch0

엘. # VLAN을 VM 포트 그룹으로 설정

esxcli 네트워크 vswitch 표준 포트 그룹 세트 -p VMNetwork1 --vlan-id ##

esxcli 네트워크 vswitch 표준 포트 그룹 세트 -p VMNetwork2 --vlan-id ##

esxcli 네트워크 vswitch 표준 포트 그룹 세트 -p VMNetwork3 --vlan-id ###

미디엄. # 기본 VM 포트 그룹 제거

esxcli 네트워크 vswitch 표준 포트 그룹 제거 --portgroup-name = "VM 네트워크"-v = vSwitch0

엔. # iSCSI 소프트웨어 어댑터 사용

esxcli iscsi 소프트웨어 세트 --enabled = true

esxcli iscsi networkportal 추가 -A vmhba33 -n vmk2

esxcli iscsi networkportal 추가 -A vmhba33 -n vmk3

esxcli iscsi networkportal 추가 -A vmhba33 -n vmk6

esxcli iscsi networkportal 추가 -A vmhba33 -n vmk7

영형. # 로컬 데이터 스토어 이름 바꾸기

호스트 이름> $ var =

vim-cmd hostsvc / datastore / rename datastore1 로컬-$var

피. # EMC VNXe 3300 용 기본 다중 경로 스토리지 어레이 유형 플러그인 정의 및 라운드 로빈 IOPS를 1000에서 1로 조정

esxcli 스토리지 nmp satp 규칙 추가 --satp = "VMW_SATP_DEFAULT_AA"--vendor = "EMC"-P "VMW_PSP_RR"-O "iops = 1"

큐. # 새로 고침 네트워킹

esxcli 네트워크 방화벽 새로 고침

vim-cmd hostsvc / net / 갱신

  1. 각 호스트에 대해 vSphere Client를 사용하여 NTP 클라이언트 구성

ㅏ. 구성-> 시간 구성-> 특성-> 옵션-> NTP 설정-> 추가-> ntp.mydomain.net-> "NTP 서비스를 다시 시작하여 변경 사항 적용"-> 확인-> 확인 wait…-> "호스트 시작 및 중지"선택-> 확인-> "NTP 클라이언트 활성화-> 확인

  1. 호스트 재부팅

  2. EMC VNXe 스토리지 프로비저닝을 진행하고 완료되면이 가이드로 돌아갑니다.

  3. 호스트 당 vSphere 클라이언트에 로그인

  4. 각 데이터 스토어를 VMFS-5로 업그레이드

ㅏ. 구성-> 스토리지-> 데이터 스토어 하이라이트-> VMFS-5로 업그레이드


0

불행히도, 나는 당신의 설정에 아무런 문제가 없다고 생각합니다. 단일 VM에 1Gb / s 이상을 사용할 수 없습니다.

여기서 요점은 단순히 두 개 이상의 NIC를 사용하지 않고 RAID-0과 같은 구성에서 동시에 사용하려는 것 입니다.

링크 수준 집계에 대한 표준이며 스위치에서 구성했다고 생각하는 802.3ad는 일반적으로 다른 NIC에서 단일 연결을 스트라이프하도록 구성 할 수 없습니다. 이는 인터페이스 알고리즘 선택의 작동 방식 때문입니다. src 및 dst MAC 및 / 또는 IP / 포트를 기반으로 하며 단일 연결은 항상 동일한 MAC / IP / 포트를 갖습니다 .

그렇다고해서 설정에서 더 높은 숫자 (tput 및 IOPS)를 푸시 할 수는 없지만 단일 VM이 추출 할 수있는 성능의 양이 크게 제한됩니다. 2/4 개의 다른 VM에 2 개 또는 4 개의 IOMeter 인스턴스를로드 해보십시오. 집계 된 입력은 단일 VM 벤치 마크보다 훨씬 높지만 단일 시스템은 1Gb / s 제한을 통과하지 않을 것입니다.

Linux 브리징과 일부 고급 스위치는 서로 다른 링크 집계 방법을 지원하며 완전한 스트라이프 집계 네트워크 인터페이스를 가능하게합니다. 그러나 이것은 다른 스위치 / 시스템이 이러한 "비표준"집계 방법과 상호 작용하는 방식에 대한 사소한 영향을 미칩니다.

어쨌든 스토리지 네트워크의 경우 지원되는 경우 점보 프레임을 실제로 활성화해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.