다음을 통해 공유


Elastic SAN의 성능 최적화

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

클라이언트 쪽 최적화

일반 권장 사항(Windows 및 Linux Virtual Machines)

  • 최상의 성능을 얻으려면 동일한 영역 및 동일한 지역에 VM과 Elastic SAN을 배포합니다.

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

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

강조 표시된 가속화된 네트워킹을 사용하는 VM 만들기 흐름의 스크린샷.

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

MPIO

Windows

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

# 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 참조를 참조하세요.

Linux

/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 1			# To disable I/O queueing after retrying once when all paths are down
}
devices {
  device {
    vendor "MSFT"
    product "Virtual HD"
  }
}

iSCSI

Windows

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

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

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

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

  2. 현재 초기자 이름을 보려면 구성을 선택합니다.

    Windows의 iSCSI 개시 장치 구성의 스크린샷.

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

    Windows에서 iSCSI 개시 장치를 업데이트하는 스크린샷.

Linux

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

sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n $iscsi_setting_name -v $setting_value

Where

  • $volume_iqn: Elastic SAN 볼륨 IQN
  • $portal_hostname: Elastic SAN 볼륨 포털 호스트 이름
  • $port: 3260
  • $iscsi_setting_name: 아래에 나열된 각 설정에 대한 매개 변수
  • $setting_value: 아래의 각 설정에 권장되는 값
설명 매개 변수 및 값
# 초기자가 iSCSI PDU에서 대상으로 보내는 최대 데이터를 256KB로 설정 node.conn[0].iscsi.MaxXmitDataSegmentLength = 262144
# 초기자가 대상과 협상하는 최대 SCSI 페이로드를 256KB로 설정 node.session.iscsi.MaxBurstLength = 262144
# 초기자가 iSCSI PDU에서 대상으로 보낼 수 있는 최대 원치 않는 데이터를 256KB로 설정 node.session.iscsi.FirstBurstLength = 262144
# 초기자가 대상의 iSCSI PDU에서 수신할 수 있는 최대 데이터를 256KB로 설정 node.conn[0].iscsi.MaxRecvDataSegmentLength = 262144
# R2T 흐름 제어 사용 안 함 node.session.iscsi.InitialR2T = No
# 즉각적인 데이터 사용 node.session.iscsi.ImmediateData = Yes
# WMI 요청에 대한 시간 제한 값 설정 node.conn[0].timeo.login_timeout = 30

node.conn[0].timeo.logout_timeout = 15
# 헤더와 데이터에 대한 CRC 다이제스트 검사 사용 node.conn[0].iscsi.HeaderDigest = CRC32C

node.conn[0].iscsi.DataDigest = CRC32C

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

Elastic SAN 최적화

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

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

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