你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

优化弹性 SAN 的性能

本文提供有关使用 Azure 弹性 SAN 的环境如何获得最佳性能的一些常规指南。

客户端优化

常规建议(Windows 和 Linux 虚拟机)

  • 为了获得最佳性能,请将 VM 和弹性 SAN 部署到同一区域和同一地区。

  • 到弹性 SAN 卷的 VM 存储 I/O 使用 VM 网络带宽,因此 VM 上的传统磁盘吞吐量限制不适用于弹性 SAN 卷。 选择可为生产/VM 到 VM I/O 和 iSCSI I/O 到附加弹性 SAN 卷提供足够带宽的 VM。 通常,应使用第 5 代(D/E/M 系列)VM 获得最佳性能。

  • 在 VM 创建期间,在 VM 上启用“加速网络”。 要通过 Azure PowerShell 或 Azure CLI 启用,或在现有 VM 上启用启用加速网络,请参阅使用 Azure PowerShell 创建具有加速网络的 VM

VM 创建流的屏幕截图,其中突出显示了“启用加速网络”。

  • 必须对每个卷的每个目标卷使用 32 个会话来实现其最大 IOPS 和/或吞吐量限制。 使用客户端上的多路径 I/O (MPIO) 管理每个卷的这些会话,以便进行负载均衡。 脚本可用于 WindowsLinux,或在 Azure 门户中的“连接到卷”页上用于你的卷,该页面默认使用 32 个会话。 Windows 软件 iSCSI 发起程序的最大会话数限制为 256 个。 如果需要将八个以上的卷连接到 Windows VM,请根据需要减少每个卷的会话数。

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 发起程序)\Parameters]
  4. 更新以下设置。 右键单击每个设置并选择“修改”。 将基数更改为十进制,更新值并选择“确定”。
说明 参数和值
将 iSCSI PDU 中发起程序发送到目标的最大数据设置为 256 KB MaxTransferLength=262144
将发起程序与目标协商的最大 SCSI 有效负载设置为 256 KB MaxBurstLength=262144
将发起程序可以在 iSCSI PDU 中发送到目标到的最大未请求数据设置为 256 KB FirstBurstLength=262144
将发起程序可以在 iSCSI PDU 中从目标收到的最大数据设置为 256 KB 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 配置文件(iscsid.conf,通常位于 /etc/iscsi 目录中)中的建议值更新以下设置。 连接卷后,将创建一个节点以及特定于此节点的配置文件(例如,在 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 volume IQN
  • $portal_hostname: Elastic SAN volume portal hostname
  • $port: 3260
  • $iscsi_setting_name: parameter for each setting listed below
  • $setting_value: value recommended for each setting below
说明 参数和值
# 将 iSCSI PDU 中发起程序发送到目标的最大数据设置为 256 KB node.conn[0].iscsi.MaxXmitDataSegmentLength = 262144
# 将发起程序与目标协商的最大 SCSI 有效负载设置为 256 KB node.session.iscsi.MaxBurstLength = 262144
# 将发起程序可以在 iSCSI PDU 中发送到目标到的最大未请求数据设置为 256 KB node.session.iscsi.FirstBurstLength = 262144
# 将发起程序可以在 iSCSI PDU 中从目标收到的最大数据设置为 256 KB node.conn[0].iscsi.MaxRecvDataSegmentLength = 262144
# 禁用 R2T 流控制 node.session.iscsi.InitialR2T = 否
# 启用即时数据 node.session.iscsi.ImmediateData = 是
# 设置 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 发起程序名称的屏幕截图。

弹性 SAN 优化

在部署弹性 SAN 之前,必须确定部署的弹性 SAN 的最佳大小,以便为工作负载和成本实现适当的性能平衡。 使用以下步骤确定适合的最佳大小:

使用现有存储解决方案,选择时间间隔(日/周/季度)以跟踪性能。 最佳时间间隔是应用程序/工作负载的良好快照。 在此期间,记录所有工作负载的最大 IOPS 和吞吐量总值。 如果使用的间隔长于一分钟,或者如果任何工作负荷对于当前配置存在瓶颈,请考虑向弹性 SAN 部署添加更多基本容量。 确定基本容量时,应留出一些余留空间,以考虑增长。 弹性 SAN 存储的其余部分应使用额外的容量,以节省成本。

有关性能的详细信息,请参阅弹性 SAN 和虚拟机性能