Skip to content

Commit c968bf2

Browse files
Merge pull request #296241 from roygara/fixPrac
Fixing score and improving readability
2 parents ddb8cf7 + e4c2977 commit c968bf2

File tree

1 file changed

+67
-26
lines changed

1 file changed

+67
-26
lines changed

articles/storage/elastic-san/elastic-san-best-practices.md

Lines changed: 67 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ description: Learn about the best practices for getting optimal performance when
44
author: roygara
55
ms.service: azure-elastic-san-storage
66
ms.topic: conceptual
7-
ms.date: 08/13/2024
7+
ms.date: 04/21/2025
88
ms.author: rogarana
99
---
1010

@@ -14,18 +14,37 @@ This article provides some general guidance on getting optimal performance with
1414

1515
## Client-side optimizations
1616

17-
### General recommendations (Windows & Linux Virtual Machines)
17+
### General recommendations
1818

19-
- For best performance, deploy your VMs and Elastic SAN in the same zone and the same region.
19+
#### Windows & Linux Virtual Machines
20+
21+
- For best performance, deploy your virtual machines (VM) and Elastic SAN in the same zone and the same region.
2022

2123
- VM storage I/O to Elastic SAN volumes uses VM network bandwidth, so traditional disk throughput limits on a VM don't apply to Elastic SAN volumes. Choose a VM that can provide sufficient bandwidth for production/VM-to-VM I/O and iSCSI I/O to attached Elastic SAN volumes. Generally, you should use Gen 5 (D / E / M series) VMs for the best performance.
2224

23-
- Enable Accelerated Networking on the VM, during VM creation. To do it via Azure PowerShell or Azure CLI or to enable Accelerated Networking on existing VMs, see [Use Azure PowerShell to create a VM with Accelerated Networking](../../virtual-network/create-vm-accelerated-networking-powershell.md)
25+
- Enable **Accelerated Networking** on the VM during creation. To do it via Azure PowerShell or Azure CLI or to enable Accelerated Networking on existing VMs, see [Use Azure PowerShell to create a VM with Accelerated Networking](../../virtual-network/create-vm-accelerated-networking-powershell.md)
2426

2527
:::image type="content" source="media/elastic-san-best-practices/enable-accelerated-networking.png" alt-text="Screenshot of VM creation flow, enable accelerated networking highlighted." lightbox="media/elastic-san-best-practices/enable-accelerated-networking.png":::
2628

2729
- You must use 32 sessions per target volume for each volume to achieve its maximum IOPS and/or throughput limits. Use Multipath I/O (MPIO) on the client to manage these multiple sessions to each volume for load balancing. Scripts are available for [Windows](elastic-san-connect-windows.md#connect-to-volumes), [Linux](elastic-san-connect-linux.md#connect-to-volumes), or on the Connect to volume page for your volumes in the Azure portal, which uses 32 sessions by default. Windows software iSCSI initiator has a limit of maximum 256 sessions. If you need to connect more than eight volumes to a Windows VM, reduce the number of sessions to each volume as needed.
2830

31+
#### Azure VMware Solution
32+
33+
- Deploy your Elastic SAN in the same region and availability zone as your Azure VMware Solution cluster
34+
- Configure Private Endpoints before mounting your Elastic SAN volume as an external datastore
35+
- If you plan for your environment to ever have 16 nodes in an Azure VMware Solution cluster, use one of the following configurations, depending on which hosts you have.
36+
- AV36, AV36P, AV52 - Six iSCSI sessions over three Private Endpoints
37+
- AV64 - Seven iSCSI sessions over seven Private Endpoints
38+
- If your environment won't have 16 nodes, use one of the following configurations.
39+
- AV36, AV36P, AV52 - Eight iSCSI sessions over four Private Endpoints
40+
- AV64 - Eight iSCSI sessions over eight Private Endpoints
41+
42+
> [!NOTE]
43+
> When an Elastic SAN volume is attached to a cluster, it automatically attaches to all nodes. If you have 16 nodes and each node is configured to use eight iSCSI sessions that uses the maximum number of connections (128). Configuring your nodes to use seven iSCSI sessions ensures that if you need to attach an extra node (for maintenance) then you have available iSCSI sessions.
44+
45+
- Use eager zeroed thick provisioning when creating virtual disks
46+
- Size ExpressRoute Gateway so that it can meet your throughput requirements
47+
- Configure your Elastic SAN to have at least 16 TiB in its base size, so you can get up to the maximum performance on your Elastic SAN datastores
2948

3049
### MPIO
3150

@@ -47,7 +66,7 @@ For more information regarding MPIO cmdlets, see [MPIO reference](/powershell/mo
4766

4867
#### Linux
4968

50-
Update /etc/multipath.conf file with the following:
69+
Update /etc/multipath.conf file with the following commands:
5170

5271
```config
5372
defaults {
@@ -66,11 +85,16 @@ devices {
6685
}
6786
```
6887

88+
#### Azure VMware Solution
89+
90+
Microsoft manages MPIO settings for Azure VMware Solution. Optimal values are set when you create a datastore.
91+
92+
6993
### iSCSI
7094

7195
#### Windows
7296

73-
Update the below registry settings for iSCSI initiator on Windows.
97+
Update the registry settings for iSCSI initiator on Windows.
7498

7599
1. Open Registry Editor:
76100
1. Select Start, type regedit in the search box and press enter.
@@ -97,39 +121,56 @@ In cluster configurations, ensure iSCSI initiator names unique across all nodes
97121

98122
:::image type="content" source="media/elastic-san-best-practices/iscsi-initiator-config-widnows.png" alt-text="Screenshot of iSCSI Initiator configuration on Windows." lightbox="media/elastic-san-best-practices/iscsi-initiator-config-widnows.png":::
99123

100-
1. To modify it, select **Change**, enter new initiator name and select OK.
124+
1. To modify it, select **Change**, enter new initiator name, and select OK.
101125

102126
:::image type="content" source="media/elastic-san-best-practices/update-iscsi-initiator-name-windows.png" alt-text="Screenshot of updating the iSCSI Initiator Name on Windows." lightbox="media/elastic-san-best-practices/update-iscsi-initiator-name-windows.png":::
103127

104128

105129
#### Linux
106130

107-
Update the following settings with recommended values in global iSCSI configuration file (iscsid.conf, generally found in /etc/iscsi directory) on the client before connecting any volumes to it. When a volume is connected, a node is created along with a configuration file specific to that node (for example on Ubuntu, it can be found in /etc/iscsi/nodes/$volume_iqn/portal_hostname,$port directory) inheriting the settings from global configuration file. If you have already connected one or more volumes to the client before updating global configuration file, update the node specific configuration file for each volume directly or using the following command:
131+
Update the following settings with recommended values in global iSCSI configuration file (iscsid.conf, generally found in /etc/iscsi directory) on the client before connecting any volumes to it. When a volume is connected, a node is created along with a configuration file specific to that node (for example on Ubuntu VMs, it can be found in the `/etc/iscsi/nodes/$volume_iqn/portal_hostname,$port` directory) inheriting the settings from global configuration file. If you already connected one or more volumes to the client before updating global configuration file, update the node specific configuration file for each volume directly or using the following command:
108132

109-
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n $iscsi_setting_name -v $setting_value
133+
```
134+
# Variable declaration
135+
volume_iqn=<Elastic SAN volume IQN>
136+
portal_hostname=<Elastic SAN volume portal hostname>
137+
port=3260
110138
111-
Where
112-
- $volume_iqn: Elastic SAN volume IQN
113-
- $portal_hostname: Elastic SAN volume portal hostname
114-
- $port: 3260
115-
- $iscsi_setting_name: parameter for each setting listed below
116-
- $setting_value: value recommended for each setting below
139+
# Set maximum data the initiator sends in an iSCSI PDU to the target to 256 KB
140+
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n node.conn[0].iscsi.MaxXmitDataSegmentLength -v 262144
117141
118-
|Description |Parameter and value |
119-
|---------|---------|
120-
|# Set maximum data the initiator sends in an iSCSI PDU to the target to 256 KB |node.conn[0].iscsi.MaxXmitDataSegmentLength = 262144 |
121-
|# Set maximum SCSI payload that the initiator negotiates with the target to 256 KB |node.session.iscsi.MaxBurstLength = 262144 |
122-
|# Set maximum unsolicited data the initiator can send in an iSCSI PDU to a target to 256 KB |node.session.iscsi.FirstBurstLength = 262144 |
123-
|# Set maximum data the initiator can receive in an iSCSI PDU from the target to 256 KB |node.conn[0].iscsi.MaxRecvDataSegmentLength = 262144 |
124-
|# Disable R2T flow control |node.session.iscsi.InitialR2T = No |
125-
|# Enable immediate data |node.session.iscsi.ImmediateData = Yes |
126-
|# Set timeout value for WMI requests |node.conn[0].timeo.login_timeout = 30<br></br>node.conn[0].timeo.logout_timeout = 15 |
127-
|# Enable CRC digest checking for header and data |node.conn[0].iscsi.HeaderDigest = CRC32C<br></br>node.conn[0].iscsi.DataDigest = CRC32C |
142+
# Set maximum SCSI payload that the initiator negotiates with the target to 256 KB
143+
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n node.session.iscsi.MaxBurstLength -v 262144
128144
145+
# Set maximum unsolicited data the initiator can send in an iSCSI PDU to a target to 256 KB
146+
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n node.session.iscsi.FirstBurstLength -v 262144
129147
130-
In cluster configurations, ensure iSCSI initiator names are unique across all nodes that are sharing volumes. In Linux, you can modify /etc/iscsi/initiatorname.iscsi to update the initiator name.
148+
# Set maximum data the initiator can receive in an iSCSI PDU from the target to 256 KB
149+
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n node.conn[0].iscsi.MaxRecvDataSegmentLength -v 262144
150+
151+
# Disable R2T flow control
152+
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n node.session.iscsi.InitialR2T -v No
153+
154+
# Enable immediate data
155+
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n node.session.iscsi.ImmediateData -v Yes
156+
157+
# Set timeout value for WMI requests
158+
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n node.conn[0].timeo.login_timeout -v 30
159+
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n node.conn[0].timeo.logout_timeout -v 15
160+
161+
# Enable CRC digest checking for header and data
162+
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n node.conn[0].iscsi.HeaderDigest -v CRC32C
163+
sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n node.conn[0].iscsi.DataDigest -v CRC32C
164+
165+
```
166+
167+
168+
In cluster configurations, ensure iSCSI initiator names are unique across all nodes that are sharing volumes. In Linux, modify /etc/iscsi/initiatorname.iscsi to update the initiator name.
131169
:::image type="content" source="media/elastic-san-best-practices/update-iscsi-initiator-name-linux.png" alt-text="Screenshot updating the iSCSI Initiator Name on Linux." lightbox="media/elastic-san-best-practices/update-iscsi-initiator-name-linux.png":::
132170

171+
#### Azure VMware Solution
172+
173+
Microsoft manages iSCSI settings. Optimal values are set when you create a datastore.
133174

134175
## Elastic SAN optimizations
135176

0 commit comments

Comments
 (0)