Skip to content

Commit 259b880

Browse files
Merge pull request #288424 from kikucher/kikucher-patch-3
Changes for newly added CRC protection feature
2 parents 569e20e + f3bc813 commit 259b880

File tree

4 files changed

+116
-1
lines changed

4 files changed

+116
-1
lines changed

articles/storage/elastic-san/elastic-san-networking-concepts.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,15 @@ After configuring endpoints, you can configure network rules to further control
2929

3030
You can enable or disable public Internet access to your Elastic SAN endpoints at the SAN level. Enabling public network access for an Elastic SAN allows you to configure public access to individual volume groups in that SAN over storage service endpoints. By default, public access to individual volume groups is denied even if you allow it at the SAN level. If you disable public access at the SAN level, access to the volume groups within that SAN is only available over private endpoints.
3131

32+
## Data Integrity
33+
34+
Data integrity is important for preventing data corruption in cloud storage. TCP provides a foundational level of data integrity through its checksum mechanism, it can be enhanced over iSCSI with more robust error detection with a cyclic redundancy check (CRC), specifically CRC-32C. CRC-32C can be used to add checksum verification for iSCSI headers and data payloads.
35+
36+
Elastic SAN supports CRC-32C checksum verification when enabled on the client side for connections to Elastic SAN volumes. Elastic SAN also offers the ability to enforce this error detection through a property that can be set at the volume group level, which is inherited by any volume within that volume group. When you enable this property on a volume group, Elastic SAN rejects all client connections to any volumes in the volume group if CRC-32C isn't set for header or data digests on those connections. When you disable this property, Elastic SAN volume checksum verification depends on whether CRC-32C is set for header or data digests on the client, but your Elastic SAN won't reject any connections. To learn how to enable CRC protection, see [Configure networking](elastic-san-networking.md#enable-iscsi-error-detection).
37+
38+
> [!NOTE]
39+
> Some operating systems may not support iSCSI header or data digests. Fedora and its downstream Linux distributions like Red Hat Enterprise Linux, CentOS, Rocky Linux, etc. don't support data digests. Don't enable CRC protection on your volume groups if your clients use operating systems like these that don't support iSCSI header or data digests because connections to the volumes will fail.
40+
3241
## Storage service endpoints
3342

3443
[Azure Virtual Network service endpoints](../../virtual-network/virtual-network-service-endpoints-overview.md) provide secure and direct connectivity to Azure services using an optimized route over the Azure backbone network. Service endpoints allow you to secure your critical Azure service resources so only specific virtual networks can access them.
@@ -77,4 +86,4 @@ iSCSI sessions can periodically disconnect and reconnect over the course of the
7786
7887
## Next steps
7988

80-
[Configure Elastic SAN networking](elastic-san-networking.md)
89+
[Configure Elastic SAN networking](elastic-san-networking.md)

articles/storage/elastic-san/elastic-san-networking.md

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,112 @@ az elastic-san update \
130130

131131
---
132132

133+
## Configure iSCSI error detection
134+
135+
### Enable iSCSI error detection
136+
137+
To enable CRC-32C checksum verification for iSCSI headers or data payloads, set CRC-32C on header or data digests for all connections on your clients that connect to Elastic SAN volumes. To do this, connect your clients to Elastic SAN volumes using multi-session scripts generated either in the Azure portal or provided in either the [Windows](elastic-san-connect-windows.md) or [Linux](elastic-san-connect-Linux.md) Elastic SAN connection articles.
138+
139+
If you need to, you can do this without the multi-session connection scripts. On Windows, you can do this by setting header or data digests to 1 during login to the Elastic SAN volumes (`LoginTarget` and `PersistentLoginTarget`). On Linux, you can do this by updating the global iSCSI configuration file (iscsid.conf, generally found in /etc/iscsi directory). 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 volumes to your client before updating your global configuration file, update the node specific configuration file for each volume directly, or using the following command:
140+
141+
```sudo iscsiadm -m node -T $volume_iqn -p $portal_hostname:$port -o update -n $iscsi_setting_name -v $setting_value```
142+
143+
Where
144+
- $volume_iqn: Elastic SAN volume IQN
145+
- $portal_hostname: Elastic SAN volume portal hostname
146+
- $port: 3260
147+
- $iscsi_setting_name: node.conn[0].iscsi.HeaderDigest (or) node.conn[0].iscsi.DataDigest
148+
- $setting_value: CRC32C
149+
150+
### Enforce iSCSI error detection
151+
152+
To enforce iSCSI error detection, set CRC-32C for both header and data digests on your clients and enable the CRC protection property on the volume group that contains volumes already connected to or have yet to be connected to from your clients. If your Elastic SAN volumes are already connected and don't have CRC-32C for both digests, you should disconnect the volumes and reconnect them using multi-session scripts generated in the Azure portal when connecting to an Elastic SAN volume, or from the [Windows](elastic-san-connect-windows.md) or [Linux](elastic-san-connect-Linux.md) Elastic SAN connection articles.
153+
154+
> [!NOTE]
155+
> CRC protection feature isn't currently available in North Europe and South Central US.
156+
157+
To enable CRC protection on the volume group:
158+
159+
# [Portal](#tab/azure-portal)
160+
161+
Enable CRC protection on a new volume group:
162+
163+
:::image type="content" source="media/elastic-san-networking/elastic-san-crc-protection-create-volume-group.png" alt-text="Screenshot of CRC protection enablement on new volume group." lightbox="media/elastic-san-networking/elastic-san-crc-protection-create-volume-group.png":::
164+
165+
Enable CRC protection on an existing volume group:
166+
167+
:::image type="content" source="media/elastic-san-networking/elastic-san-crc-protection-update-volume-group.png" alt-text="Screenshot of CRC protection enablement on an existing volume group." lightbox="media/elastic-san-networking/elastic-san-crc-protection-update-volume-group.png":::
168+
169+
# [PowerShell](#tab/azure-powershell)
170+
171+
Use this script to enable CRC protection on a new volume group using the Azure PowerShell module. Replace the values of `$RgName`, `$EsanName`, `$EsanVgName` before running the script.
172+
173+
```powershell
174+
# Set the variable values.
175+
# The name of the resource group where the Elastic San is deployed.
176+
$RgName = "<ResourceGroupName>"
177+
# The name of the Elastic SAN.
178+
$EsanName = "<ElasticSanName>"
179+
# The name of volume group within the Elastic SAN.
180+
$EsanVgName = "<VolumeGroupName>"
181+
182+
# Create a volume group by enabling CRC protection
183+
New-AzElasticSanVolumeGroup -ResourceGroupName $RgName -ElasticSANName $EsanName -Name $EsanVgName -EnforceDataIntegrityCheckForIscsi $true
184+
185+
```
186+
187+
Use this script to enable CRC protection on an existing volume group using the Azure PowerShell module. Replace the values of `$RgName`, `$EsanName`, `$EsanVgName` before running the script.
188+
189+
```powershell
190+
# Set the variable values.
191+
$RgName = "<ResourceGroupName>"
192+
$EsanName = "<ElasticSanName>"
193+
$EsanVgName = "<VolumeGroupName>"
194+
195+
# Edit a volume group to enable CRC protection
196+
Update-AzElasticSanVolumeGroup -ResourceGroupName $RgName -ElasticSANName $EsanName -Name $EsanVgName -EnforceDataIntegrityCheckForIscsi $true
197+
```
198+
199+
# [Azure CLI](#tab/azure-cli)
200+
201+
The following code sample enable CRC protection on a new volume group using Azure CLI. Replace the values of `RgName`, `EsanName`, `EsanVgName`, before running the sample.
202+
203+
```azurecli
204+
# Set the variable values.
205+
# The name of the resource group where the Elastic San is deployed.
206+
RgName="<ResourceGroupName>"
207+
# The name of the Elastic SAN.
208+
EsanName="<ElasticSanName>"
209+
# The name of volume group within the Elastic SAN.
210+
EsanVgName= "<VolumeGroupName>"
211+
212+
# Create the Elastic San.
213+
az elastic-san volume-group create \
214+
--elastic-san-name $EsanName \
215+
--resource-group $RgName \
216+
--volume-group-name $EsanVgName \
217+
--data-integrity-check true
218+
```
219+
220+
The following code sample enable CRC protection on an existing volume group using Azure CLI. Replace the values of `RgName`, `EsanName`, `EsanVgName`, before running the sample.
221+
222+
```azurecli
223+
# Set the variable values.
224+
RgName="<ResourceGroupName>"
225+
EsanName="<ElasticSanName>"
226+
EsanVgName= "<VolumeGroupName>"
227+
228+
# Create the Elastic San.
229+
az elastic-san volume-group update \
230+
--elastic-san-name $EsanName \
231+
--resource-group $RgName \
232+
--volume-group-name $EsanVgName \
233+
--data-integrity-check true
234+
```
235+
236+
---
237+
238+
133239
## Configure a virtual network endpoint
134240

135241
You can configure your Elastic SAN volume groups to allow access only from endpoints on specific virtual network subnets. The allowed subnets can belong to virtual networks in the same subscription, or those in a different subscription, including a subscription belonging to a different Microsoft Entra tenant.
34.7 KB
Loading
42.3 KB
Loading

0 commit comments

Comments
 (0)