Оптимизация производительности эластичной сети SAN

В этой статье приводятся рекомендации по обеспечению оптимальной производительности с помощью среды, которая использует azure Elastic SAN.

Оптимизация на стороне клиента

Общие рекомендации

Виртуальные машины Windows и Linux

  • Для обеспечения высокой производительности разверните виртуальные машины (VMs) и Elastic SAN в одной зоне и в том же регионе.

  • Объемы операций ввода-вывода хранилища виртуальных машин в томах Elastic SAN используют пропускную способность сети виртуальной машины, поэтому традиционные ограничения пропускной способности дисков на виртуальной машине не применяются к томам Elastic SAN. Выберите виртуальную машину, которая может обеспечить достаточную пропускную способность для производственного использования, I/O между виртуальными машинами и iSCSI I/O для подключенных томов Elastic SAN. Как правило, для оптимальной производительности следует использовать виртуальные машины серии D, E или M.

  • Включите ускоренную сеть на виртуальной машине во время создания. Сведения о том, как включить его с помощью Azure PowerShell или Azure CLI или включить ускоренную сеть на существующих виртуальных машинах, см. в статье "Использование Azure PowerShell для создания виртуальной машины с ускорением сети".

Снимок экрана процесса создания виртуальной машины, выделена опция включения ускоренной сети.

  • Чтобы достичь максимального количества операций ввода-вывода в секунду и пропускной способности, используйте 32 сеанса на целевой том для каждого тома. Используйте Multipath I/O (MPIO) на клиенте для управления несколькими сеансами к каждому тому с целью балансировки нагрузки. Скрипты доступны для Windows, Linux или на странице подключения к томам на портале Azure, где по умолчанию используется 32 сеанса. Инициатор iSCSI программного обеспечения Windows имеет ограничение не более 256 сеансов. Если вам нужно подключить более восьми томов к виртуальной машине Windows, уменьшите количество сеансов к каждому тому по мере необходимости.

Решение Azure VMware

  • Развертывание эластичной сети SAN в том же регионе и зоне доступности, что и кластер решения Azure VMware
  • Настройте частные конечные точки перед подключением тома Elastic SAN как внешнего хранилища данных.
  • Используйте активное выделение ресурсов с предварительным обнулением при создании виртуальных дисков
  • Настройте ваш Elastic SAN на базовый размер не менее 16 ТиБ, чтобы достичь максимальной производительности ваших хранилищ данных Elastic SAN.
  • Объём Elastic SAN поддерживает до 128 сеансов iSCSI. При подключении тома Elastic SAN к кластеру он автоматически подключается ко всем узлам. Если у вас есть 16 узлов и каждый узел настроен на использование восьми сеансов iSCSI, конфигурация использует максимальное количество подключений (128).

Частное облако решения Azure VMWare 1-го поколения

  • Размер шлюза ExpressRoute, чтобы он соответствовал требованиям к пропускной способности
  • Если вы планируете использовать 16 узлов в кластере решения Azure VMware, используйте одну из следующих конфигураций в зависимости от типа узла частного облака:
    • AV36, AV36P, AV52 — шесть сеансов iSCSI по трем частным конечным точкам
    • AV64 — семь сеансов iSCSI на семи приватных конечных точках
  • Если в вашей среде нет 16 узлов, используйте одну из следующих конфигураций:
    • AV36, AV36P, AV52 — восемь сеансов iSCSI на четырех частных конечных точках
    • AV64 — восемь сеансов iSCSI через восемь частных конечных точек

Замечание

Настройка узлов для использования семи сеансов iSCSI гарантирует, что при необходимости подключить дополнительный узел (для обслуживания) у вас есть доступные сеансы iSCSI.

Частное облако решения Azure VMWare 2-го поколения

  • Настройте одну частную конечную точку в группе томов ESAN, чтобы создать 7 сеансов iSCSI из узла AVS в том 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 см. в справочнике по 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

Корпорация Майкрософт управляет параметрами MPIO для решения Azure VMware. При создании хранилища данных задаются оптимальные значения.

iSCSI

Виндоус

Обновите параметры реестра для инициатора iSCSI в Windows.

  1. Откройте редактор реестра:
  2. Нажмите кнопку "Пуск", введите regedit в поле поиска и нажмите клавишу ВВОД.
  3. Перейдите по следующему пути: [\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e97b-e325-11ce-bfc1-08002be10318}\0004 (Microsoft iSCSI Initiator)\Parameters]
  4. Обновите следующие параметры. Щелкните правой кнопкой мыши каждый параметр и выберите "Изменить". Измените базовый на десятичный, обновите значение и нажмите кнопку "ОК".
Описание Параметр и значение
Задает максимальный объем данных, который инициатор отправляет в цель в iSCSI PDU, до 256 КБ. MaxTransferLength=262144
Задает максимальную полезную нагрузку SCSI, которую инициатор согласовывает с целевым устройством до 256 КБ. MaxBurstLength=262144
Устанавливает максимальный объем незапрошенных данных, которые инициатор может отправить в целевое устройство в iSCSI PDU, до 256 КБ. FirstBurstLength=262144
Задает максимальные данные, которые инициатор может получать в PDU iSCSI из целевого объекта до 256 КБ Максимальная длина сегмента получаемых данных=262144
Отключает управление потоком R2T InitialR2T=0
Включает немедленные данные НемедленныеДанные=1
Задает значение времени ожидания для запросов WMI в 30 секунд WMIRequestTimeout = 30 секунд
Задает значение времени ожидания для времени простоя ссылки на 30 секунд LinkDownTime = 30 секунд

Замечание

После обновления параметров реестра для оптимальной производительности необходимо перезапустить виртуальную машину, чтобы изменения вступили в силу. Если вы не перезагрузите виртуальную машину, вы продолжите использовать параметры по умолчанию.

В конфигурациях кластера убедитесь, что имена инициаторов iSCSI уникальны для всех узлов, совместно использующих тома. В Windows их можно обновить с помощью приложения инициатора iSCSI.

  1. Нажмите кнопку "Пуск", найдите инициатор iSCSI в поле поиска. Это действие открывает инициатор iSCSI.

  2. Выберите "Конфигурация", чтобы просмотреть текущее имя инициатора.

    Снимок экрана: конфигурация инициатора iSCSI в Windows.

  3. Чтобы изменить его, нажмите кнопку "Изменить", введите имя инициатора и нажмите кнопку "ОК".

    Снимок экрана: обновление имени инициатора iSCSI в Windows.

Линукс

Обновите следующие параметры с рекомендуемыми значениями в глобальном файле конфигурации iSCSI (iscsid.confкак правило, найденном в /etc/iscsi каталоге) на клиенте перед подключением к нему любых томов. При подключении тома узел создается вместе с файлом конфигурации, определенным для этого узла. Например, на виртуальных машинах Ubuntu его можно найти в каталоге /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 перезапустите виртуальную машину, чтобы обеспечить применение новых параметров.

В конфигурациях кластера убедитесь, что имена инициаторов iSCSI уникальны для всех узлов, совместно использующих тома. В Linux измените /etc/iscsi/initiatorname.iscsi, чтобы обновить имя инициатора. Снимок экрана: обновление имени инициатора iSCSI в Linux.

Решение Azure VMware

Корпорация Майкрософт управляет параметрами iSCSI. При создании хранилища данных задаются оптимальные значения.

Оптимизация эластичной сети SAN

Перед развертыванием эластичной сети SAN определите оптимальный размер развертывания, чтобы обеспечить правильный баланс производительности для рабочих нагрузок и затрат. Чтобы определить оптимальный размер, выполните следующие действия.

В существующем решении для хранения выберите интервал времени (день, неделя или квартал) для отслеживания производительности. Лучший интервал времени — это тот, который обеспечивает хороший мгновенный снимок ваших приложений и рабочих процессов. За этот период запишите объединенные максимальные IOPS и пропускную способность для всех рабочих нагрузок. Если вы используете интервал выше минуты или если у любой из рабочих нагрузок есть узкие места в текущей конфигурации, рассмотрите возможность добавления дополнительной базовой емкости в развертывание Elastic SAN. Оставьте дополнительную емкость при определении базовой емкости для учета роста. Используйте хранилище с дополнительной емкостью для остальной части эластичной SAN, чтобы снизить затраты.

Дополнительные сведения о производительности см. в разделе "Эластичная сеть SAN" и "Производительность виртуальных машин".