다음을 통해 공유


Elastic SAN의 성능 최적화

이 문서에서는 Azure Elastic SAN을 사용하는 환경에서 최적의 성능을 얻기 위한 몇 가지 일반적인 지침을 제공합니다.

클라이언트 쪽 최적화

일반 권장 사항

Windows 및 Linux Virtual Machines

  • 최상의 성능을 위해 동일한 영역과 동일한 지역에 VM(가상 머신) 및 Elastic SAN을 배포합니다.

  • VM 스토리지 I/O에서 Elastic SAN 볼륨으로의 I/O는 VM 네트워크 대역폭을 사용하므로 VM의 기존 디스크 처리량 제한은 Elastic SAN 볼륨에 적용되지 않습니다. 연결된 Elastic SAN 볼륨에 대한 프로덕션/VM-to-VM I/O 및 iSCSI I/O에 충분한 대역폭을 제공할 수 있는 VM을 선택합니다. 일반적으로 최상의 성능을 위해 5세대(D/E/M 시리즈) VM을 사용해야 합니다.

  • 만드는 동안 VM에서 가속화된 네트워킹을 사용하도록 설정합니다. Azure PowerShell 또는 Azure CLI를 통해 수행하거나 기존 VM에서 가속화된 네트워킹을 사용하도록 설정하려면 Azure PowerShell을 사용하여 가속화된 네트워킹을 사용하여 VM 만들기를 참조하세요.

가속 네트워킹 사용을 강조한 VM 생성 흐름의 스크린샷.

  • 최대 IOPS 및/또는 처리량 제한을 달성하려면 각 볼륨에 대해 대상 볼륨당 32개의 세션을 사용해야 합니다. 클라이언트에서 MPIO(다중 경로 I/O)를 사용하여 부하 분산을 위해 각 볼륨에 대한 이러한 여러 세션을 관리합니다. 스크립트는 Windows, Linux 또는 Azure Portal의 볼륨에 대한 볼륨에 연결 페이지에서 사용할 수 있으며, 기본적으로 32개의 세션을 사용합니다. Windows 소프트웨어 iSCSI 초기자는 최대 256개의 세션으로 제한됩니다. Windows VM에 8개 이상의 볼륨을 연결해야 하는 경우 필요에 따라 각 볼륨에 대한 세션 수를 줄입니다.

Azure VMware 솔루션

  • Azure VMware Solution 클러스터와 동일한 지역 및 가용성 영역에 Elastic SAN 배포

  • Elastic SAN 볼륨을 외부 데이터 저장소로 탑재하기 전에 프라이빗 엔드포인트 구성

  • Azure VMware Solution 클러스터에 16개의 노드가 있는 환경을 계획하는 경우 사용 중인 호스트에 따라 다음 구성 중 하나를 사용합니다.

    • AV36, AV36P, AV52 - 3개의 프라이빗 엔드포인트를 통해 6개의 iSCSI 세션
    • AV64 - 7개의 프라이빗 엔드포인트를 통해 7개의 iSCSI 세션
  • 환경에 노드가 16개 없는 경우 다음 구성 중 하나를 사용합니다.

    • AV36, AV36P, AV52 - 4개의 프라이빗 엔드포인트를 통해 8개의 iSCSI 세션
    • AV64 - 8개의 프라이빗 엔드포인트를 통해 8개의 iSCSI 세션

    비고

    Elastic SAN 볼륨이 클러스터에 연결되면 모든 노드에 자동으로 연결됩니다. 노드가 16개이고 각 노드가 최대 연결 수(128개)를 사용하는 8개의 iSCSI 세션을 사용하도록 구성된 경우 7개의 iSCSI 세션을 사용하도록 노드를 구성하면 유지 관리를 위해 추가 노드를 연결해야 하는 경우 iSCSI 세션을 사용할 수 있습니다.

  • 가상 디스크를 만들 때 EZT(Eager Zeroed Thick) 프로비전 사용

  • 처리량 요구 사항을 충족할 수 있도록 ExpressRoute 게이트웨이 크기 조정

  • Elastic SAN 데이터 저장소에서 최대 성능을 얻을 수 있도록 기본 크기가 16TiB 이상이 되도록 Elastic SAN을 구성합니다.

MPIO

윈도우즈

다음 명령을 사용하여 설정을 업데이트합니다.

# Enable multipath support for iSCSI devices
Enable-MSDSMAutomaticClaim -BusType iSCSI

# Set the default load balancing policy based on your requirements. In this example, we set it to round robin which should be optimal for most workloads.
mpclaim -L -M 2

# Set disk time out to 30 seconds
Set-MPIOSetting -NewDiskTimeout 30

MPIO cmdlet에 대한 자세한 내용은 MPIO 참조를 참조하세요.

리눅스

다음 명령을 사용하여 /etc/multipath.conf 파일을 업데이트합니다.

defaults {
    user_friendly_names yes		# To create ‘mpathn’ names for multipath devices
    path_grouping_policy multibus	# To place all the paths in one priority group
    path_selector "round-robin 0"	# To use round robin algorithm to determine path for next I/O operation
    failback immediate			# For immediate failback to highest priority path group with active paths
    no_path_retry 3			# To disable I/O queueing after retrying once when all paths are down
    polling_interval 5         # Set path check polling interval to 5 seconds
    find multipaths yes        # To allow multipath to take control of only those devices that have multiple paths 
}
devices {
  device {
    vendor "MSFT"
    product "Virtual HD"
  }
}

Azure VMware 솔루션

Microsoft는 Azure VMware Solution에 대한 MPIO 설정을 관리합니다. 데이터 저장소를 만들 때 최적 값이 설정됩니다.

iSCSI

윈도우즈

Windows에서 iSCSI 초기자에 대한 레지스트리 설정을 업데이트합니다.

  1. 레지스트리 편집기를 엽니다.
  2. 시작을 선택하고 검색 상자에 regedit를 입력하고 Enter 키를 누릅니다.
  3. [\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e97b-e325-11ce-bfc1-08002be10318}\0004 (Microsoft iSCSI 이니시에이터)\Parameters] 위치로 이동합니다.
  4. 다음 설정을 업데이트합니다. 각 설정을 마우스 오른쪽 단추로 클릭하고 수정을 선택합니다. Base10진수로 변경하고, 값을 업데이트하고, 확인을 선택합니다.
설명 매개 변수 및 값
초기자가 iSCSI PDU에서 대상에 보내는 최대 데이터를 256KB로 설정합니다. MaxTransferLength=262144
초기자가 대상과 협상하는 최대 SCSI 페이로드를 256KB로 설정합니다. MaxBurstLength=262144
초기자가 iSCSI PDU에서 대상에 보낼 수 있는 최대 원치 않는 데이터를 256KB로 설정합니다. FirstBurstLength=262144
초기자가 iSCSI PDU에서 대상에서 받을 수 있는 최대 데이터를 256KB로 설정합니다. MaxRecvDataSegmentLength=262144
R2T 흐름 제어를 사용하지 않도록 설정 InitialR2T=0 (초기 R2T=0)
즉각적인 데이터를 사용하도록 설정 ImmediateData=1
WMI 요청에 대한 시간 제한 값을 30초로 설정합니다. WMIRequestTimeout = 30초
링크 중지 시간의 시간 제한 값을 30초로 설정합니다. LinkDownTime = 30초

참고: 최적의 성능을 위해 레지스트리 설정을 업데이트한 후 변경 내용을 적용하려면 VM을 다시 시작해야 합니다. VM이 다시 시작되지 않은 경우 기본 설정을 계속 사용합니다.

클러스터 구성에서 볼륨을 공유하는 모든 노드에서 고유한 iSCSI 초기자 이름을 확인합니다. Windows에서는 iSCSI 초기자 앱을 통해 업데이트할 수 있습니다.

  1. 시작을 선택하고, 검색 상자에서 iSCSI 초기자를 검색합니다. 그러면 iSCSI 이니시에이터가 열립니다.

  2. 구성을 선택하여 현재 발신자 이름을 확인합니다.

    Windows의 iSCSI 초기자 구성 스크린샷

  3. 수정하려면 변경을 선택하고 새 초기자 이름을 입력한 다음 확인을 선택합니다.

    Windows에서 iSCSI 초기자 이름을 업데이트하는 스크린샷

리눅스

볼륨을 연결하기 전에 클라이언트의 전역 iSCSI 구성 파일(일반적으로 /etc/iscsi 디렉터리에 있는 iscsid.conf)의 권장 값으로 다음 설정을 업데이트합니다. 볼륨이 연결되면, 노드가 전역 구성 파일의 설정을 상속받아 해당 노드에 맞는 구성 파일과 함께 생성됩니다. 예를 들어, Ubuntu VM에서는 /etc/iscsi/nodes/$volume_iqn/portal_hostname,$port 디렉토리에서 찾을 수 있습니다. 전역 구성 파일을 업데이트하기 전에 하나 이상의 볼륨을 클라이언트에 이미 연결한 경우 각 볼륨에 대한 노드별 구성 파일을 직접 업데이트하거나 다음 명령을 사용합니다.

# Variable declaration
volume_iqn=<Elastic SAN volume IQN>
portal_hostname=<Elastic SAN volume portal hostname>
port=3260

# Set maximum data the initiator sends in an iSCSI PDU to the target to 256 KB
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n node.conn[0].iscsi.MaxXmitDataSegmentLength -v 262144

# Set maximum SCSI payload that the initiator negotiates with the target to 256 KB
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n node.session.iscsi.MaxBurstLength -v 262144

# Set maximum unsolicited data the initiator can send in an iSCSI PDU to a target to 256 KB 
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n node.session.iscsi.FirstBurstLength -v 262144

# Set maximum data the initiator can receive in an iSCSI PDU from the target to 256 KB 
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n node.conn[0].iscsi.MaxRecvDataSegmentLength -v 262144

# Disable R2T flow control 
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n node.session.iscsi.InitialR2T -v No

# Enable immediate data
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n node.session.iscsi.ImmediateData -v Yes

# Set timeout value for WMI requests
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n node.conn[0].timeo.login_timeout -v 30
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n node.conn[0].timeo.logout_timeout -v 15

# Enable CRC digest checking for header and data 
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n node.conn[0].iscsi.HeaderDigest -v CRC32C
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n node.conn[0].iscsi.DataDigest -v CRC32C 

참고: iSCSI 구성 파일을 업데이트한 후 VM을 다시 시작하여 새 설정이 적용되었는지 확인합니다.

클러스터 구성에서 iSCSI 초기자 이름이 볼륨을 공유하는 모든 노드에서 고유한지 확인합니다. Linux에서 /etc/iscsi/initiatorname.iscsi를 수정하여 초기자 이름을 업데이트합니다. Linux에서 iSCSI 초기자 이름을 업데이트하는 스크린샷

Azure VMware 솔루션

Microsoft는 iSCSI 설정을 관리합니다. 데이터 저장소를 만들 때 최적 값이 설정됩니다.

탄력적 SAN 최적화

Elastic SAN을 배포하기 전에 워크로드 및 비용에 대한 적절한 성능 균형을 달성하기 위해 배포하는 Elastic SAN의 최적 크기를 결정해야 합니다. 다음 단계를 사용하여 가장 적합한 크기를 결정합니다.

기존 스토리지 솔루션을 사용하여 시간 간격(일/주/분기)을 선택하여 성능을 추적합니다. 가장 좋은 시간 간격은 애플리케이션/워크로드의 좋은 스냅샷입니다. 해당 기간 동안 모든 워크로드에 대한 결합된 최대 IOPS 및 처리량을 기록합니다. 1분보다 높은 간격을 사용하거나 워크로드 중 현재 구성에 병목 현상이 있는 경우 Elastic SAN 배포에 더 많은 기본 용량을 추가하는 것이 좋습니다. 성장을 고려하기 위해 기본 용량을 결정할 때 일부 헤드룸을 남겨두어야 합니다. 나머지 Elastic SAN 스토리지는 추가 용량을 사용하여 비용을 절감해야 합니다.

성능에 대한 자세한 내용은 Elastic SAN 및 가상 머신 성능을 참조하세요.