本文提供有关使用 Azure 弹性 SAN 的环境获得最佳性能的一些常规指南。
客户端优化
一般建议
Windows 和 Linux 虚拟机
为了获得最佳性能,请将虚拟机(VM)和弹性 SAN 部署到同一区域和同一区域。
VM 存储 I/O 到弹性 SAN 卷使用 VM 网络带宽,因此 VM 上的传统磁盘吞吐量限制不适用于弹性 SAN 卷。 选择可为生产/VM 到 VM I/O 和 iSCSI I/O 到附加弹性 SAN 卷提供足够带宽的 VM。 通常,应使用第 5 代(D/E/M 系列)VM 获得最佳性能。
在创建期间在 VM 上启用 加速网络 。 若要通过 Azure PowerShell 或 Azure CLI 执行此作或在现有 VM 上启用加速网络,请参阅 使用 Azure PowerShell 创建具有加速网络的 VM
- 必须对每个卷的每个目标卷使用 32 个会话来实现其最大 IOPS 和/或吞吐量限制。 使用客户端上的多路径 I/O (MPIO) 管理每个卷的这些会话,以便进行负载均衡。 脚本可用于 Windows、Linux,或在 Azure 门户中的“连接到卷”页上用于你的卷,该页面默认使用 32 个会话。 Windows 软件 iSCSI 发起程序的最大会话数限制为 256 个。 如果需要将 8 个以上的卷连接到 Windows VM,请根据需要减少每个卷的会话数。
Azure VMware 解决方案
在 Azure VMware 解决方案群集所在的同一区域和可用性区域中部署 Elastic SAN
在将弹性 SAN 卷装载为外部数据存储之前配置专用终结点
如果计划让环境在 Azure VMware 解决方案群集中有 16 个节点,请使用以下配置之一,具体取决于你拥有的主机。
- AV36、AV36P、AV52 - 三个专用终结点的六个 iSCSI 会话
- AV64 - 七个 iSCSI 会话通过七个专用终结点进行
如果环境没有 16 个节点,请使用以下配置之一。
- AV36、AV36P、AV52 - 四个专用终结点的八个 iSCSI 会话
- AV64 - 八个专用终结点上的八个 iSCSI 会话
注释
将弹性 SAN 卷附加到群集时,它会自动附加到所有节点。 如果你有 16 个节点,并且每个节点都配置为使用 8 个 iSCSI 会话,这些会话使用最大连接数(128 个)。 将节点配置为使用七个 iSCSI 会话可确保如果需要附加额外的节点(维护),则具有可用的 iSCSI 会话。
创建虚拟磁盘时使用急切归零厚预配
调整 ExpressRoute 网关的大小,使其满足吞吐量要求
将弹性 SAN 的基本大小配置为至少 16 TiB,以便可以达到弹性 SAN 数据存储的最大性能
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 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
}
devices {
device {
vendor "MSFT"
product "Virtual HD"
}
}
Azure VMware 解决方案
Microsoft管理 Azure VMware 解决方案的 MPIO 设置。 创建数据存储时会设置最佳值。
iSCSI
Windows操作系统
更新 Windows 上的 iSCSI 发起程序的注册表设置。
- 打开注册表编辑器:
- 选择“开始”,在搜索框中键入 regedit,然后按 Enter。
- 导航到以下位置:[\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e97b-e325-11ce-bfc1-08002be10318}\0004(Microsoft iSCSI 发起程序)\Parameters]
- 更新以下设置。 右键单击每个设置,然后选择“ 修改”。 将 Base 更改为 Decimal,更新值并选择“ 确定”。
DESCRIPTION | 参数和值 |
---|---|
将 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 发起程序应用更新它们。
选择 “开始”,在搜索框中搜索 iSCSI 发起程序 。 这会打开 iSCSI 发起程序。
选择 “配置” 以查看当前发起程序名称。
若要修改它,请选择 “更改”,输入新的发起程序名称,然后选择“确定”。
Linux
在将任何卷连接到客户端之前,请使用客户端上的全局 iSCSI 配置文件(iscsid.conf,通常位于 /etc/iscsi 目录中)中的建议值更新以下设置。 连接卷后,将创建一个节点以及特定于此节点的配置文件(例如,在 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 发起程序名称在所有共享卷的节点上都是唯一的。 在 Linux 中,修改 /etc/iscsi/initiatorname.iscsi 以更新发起程序名称。
Azure VMware 解决方案
Microsoft管理 iSCSI 设置。 创建数据存储时会设置最佳值。
弹性 SAN 优化
在部署弹性 SAN 之前,必须确定部署的弹性 SAN 的最佳大小,以便为工作负荷和成本实现适当的性能平衡。 使用以下步骤来确定适合您的最佳尺码
使用现有存储解决方案,选择时间间隔(日/周/季度)以跟踪性能。 最佳时间间隔是应用程序/工作负载的良好快照。 在此期间,记录所有工作负荷的总 IOPS 和吞吐量。 如果使用的时间间隔高于一分钟,或者如果任何工作负荷与当前配置存在瓶颈,请考虑向弹性 SAN 部署添加更多基本容量。 确定基本容量时,应留出一些留出空间,以考虑增长。 弹性 SAN 存储的其余部分应使用额外的容量来节省成本。
有关性能的详细信息,请参阅 弹性 SAN 和虚拟机性能。