Skip to content

Commit 4fcf3d8

Browse files
Merge pull request #312896 from MicrosoftDocs/main
Auto Publish – main to live - 2026-03-10 10:00 UTC
2 parents 82406b7 + 450b6a6 commit 4fcf3d8

10 files changed

Lines changed: 63 additions & 44 deletions

articles/storage-mover/cloud-to-cloud-migration.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ Before you begin, ensure that you have:
2424
- An AWS account with access to the Amazon S3 bucket from which you want to migrate.
2525
- An [Azure Storage account](../storage/common/storage-account-create.md) to use as the destination.
2626
- A [Storage Mover resource](storage-mover-create.md) deployed in your Azure subscription.
27+
- A [private connection setup on Azure](migrations-requiring-private-connections.md), if your AWS source data is in a Virtual Private Cloud (VPC).
2728

2829
## Limits
2930

@@ -32,7 +33,6 @@ The Cloud-to-Cloud Migration feature in Azure Storage Mover has the following li
3233
- Each migration job supports the transfer of 500 million objects.
3334
- A maximum of 10 concurrent jobs is supported per subscription. If you need to run more than 10, you can do so by creating a support request.
3435
- Azure Storage Mover doesn't support automatic rehydration of archived objects. Data stored in AWS Glacier or Deep Archive must be restored before migration. Migration jobs should only be initiated after the data is fully restored.
35-
- Private Networking is currently not supported. However, Azure Storage Mover's Cloud-to-Cloud feature securely transfers data by limiting S3 access to trusted Azure IP ranges. This approach ensures secure, controlled connectivity over the public internet.
3636

3737
## Create a multicloud connector for AWS
3838

articles/storage-mover/cloud-to-cloud-private-network-configs.md

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,10 +103,6 @@ SD-WAN and firewall NVAs can terminate VPN tunnels, perform inspection, and appl
103103

104104
SD-WAN NVAs are commonly licensed as either pay-as-you-go (PAYG) or bring-your-own-license (BYOL). Vendor support varies by deployment option.
105105

106-
PAYG: Pay as you go
107-
108-
BYOL: Bring your own license
109-
110106
#### Example deployment (FortiGate NVA in Azure)
111107

112108
**Select a topology** (single VM, active/passive, or active/active) based on availability and throughput requirements.
@@ -206,7 +202,16 @@ After creating the Direct Connect resource, create a private connection in Stora
206202
4. Only private connections in **Approved** state can be selected.
207203
5. Remaining job steps are the same as a public S3-to-Blob migration.
208204

205+
## Architecture
206+
### Cloud-to-cloud Migration flow (private networking)
207+
208+
:::image type="content" source="./media/cloud-to-cloud-networking/cloud-to-cloud-private-networking.png" alt-text="Screenshot of cloud-to-cloud private networking architecture." lightbox="./media/cloud-to-cloud-networking/cloud-to-cloud-private-networking.png":::
209+
210+
Above diagram shown with private networking to AWS but same applies for other private networking scenarios.
209211

212+
### Cloud-to-cloud Migration flow (public S3 bucket to Azure Blob)
213+
214+
:::image type="content" source="./media/cloud-to-cloud-networking/cloud-to-cloud-public.png" alt-text="Screenshot of cloud-to-cloud public workflow." lightbox="./media/cloud-to-cloud-networking/cloud-to-cloud-public.png":::
210215

211216

212217
## Troubleshooting
@@ -276,3 +281,5 @@ For BGP between Azure and AWS, follow: [Tutorial - Configure a BGP-enabled conne
276281

277282

278283

284+
285+
327 KB
Loading
134 KB
Loading

articles/storage/container-storage/configure-encryption-for-elastic-san.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ Create a YAML manifest file such as `storageclass.yaml`. Use the names and varia
9191
apiVersion: storage.k8s.io/v1
9292
kind: StorageClass
9393
metadata:
94-
name: azuresan-encrypted
94+
name: azuresan-csi-encrypted
9595
provisioner: san.csi.azure.com
9696
reclaimPolicy: Delete
9797
volumeBindingMode: Immediate
@@ -124,7 +124,7 @@ spec:
124124
resources:
125125
requests:
126126
storage: 1Gi
127-
storageClassName: azuresan-encrypted
127+
storageClassName: azuresan-csi-encrypted
128128
```
129129
130130
Apply the manifest to create the PVC.

articles/storage/container-storage/container-storage-faq.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,14 @@ Azure Container Storage is a cloud-based volume management, deployment, and orch
5555
Example:
5656

5757
```azurecli
58-
az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage ephemeralDisk,elasticSan
58+
az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage ephemeralDisk elasticSan
5959
```
6060

6161
**Behavior:**
6262
- Installs the installer plus the selected CSI driver(s).
6363
- Creates default storage class objects if none exists.
64-
- Supports comma-separated storage types.
64+
- Default storage class names are `local-csi` for `ephemeralDisk` (local NVMe) and `azuresan-csi` for `elasticSan` (Azure Elastic SAN).
65+
- Supports multiple storage types.
6566

6667
Supported storage types for version 2.1.0 and later: `ephemeralDisk` (local NVMe) and `elasticSan` (Azure Elastic SAN).
6768

@@ -70,7 +71,8 @@ Azure Container Storage is a cloud-based volume management, deployment, and orch
7071
The extension configuration supports the same flows as Azure CLI:
7172

7273
- **Installer-only (choose storage later):** Set `enable-azure-container-storage` to `true`. Create a storage class later to trigger driver installation.
73-
- **Installer + storage type(s):** Set `enable-azure-container-storage` to a storage type value such as `ephemeralDisk`, `elasticSan`, or a comma-separated list like `ephemeralDisk,elasticSan`. This installs the installer and the selected CSI drivers.
74+
- **Installer + storage type(s):** Set `enable-azure-container-storage` to a storage type value such as `ephemeralDisk`, `elasticSan`, or a list like `ephemeralDisk elasticSan`. This installs the installer, the selected CSI drivers, and creates a default storage class.
75+
Default storage class names are `local-csi` for `ephemeralDisk` (local NVMe) and `azuresan-csi` for `elasticSan` (Azure Elastic SAN).
7476

7577
Supported storage types for version 2.1.0 and later: `ephemeralDisk` (local NVMe) and `elasticSan` (Azure Elastic SAN).
7678

articles/storage/container-storage/install-container-storage-aks.md

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ Run the following command to create a new AKS cluster and install Azure Containe
106106
az aks create -n <cluster-name> -g <resource-group> --node-vm-size Standard_L8s_v3 --enable-azure-container-storage ephemeralDisk --generate-ssh-keys
107107
```
108108

109-
This command installs the installer, deploys the `ephemeralDisk` driver, and creates a default storage class. You can install and use both local NVMe and Elastic SAN by providing comma-separated values such as `ephemeralDisk,elasticSan`.
109+
This command installs the installer, deploys the local NVMe CSI driver, and creates a default storage class called `local-csi`. You can install and use both local NVMe and Elastic SAN by providing a list such as `ephemeralDisk elasticSan`.
110110

111111
## Install Azure Container Storage on an existing AKS cluster
112112

@@ -128,7 +128,7 @@ Run the following command to enable Azure Container Storage on an existing AKS c
128128
az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage elasticSan
129129
```
130130

131-
This command installs the installer, deploys the Elastic SAN CSI driver, and creates a default storage class. You can install and use both local NVMe and Elastic SAN by providing comma-separated values such as `ephemeralDisk,elasticSan`.
131+
This command installs the installer, deploys the Elastic SAN CSI driver, and creates a default storage class called `azuresan-csi`. You can install and use both local NVMe and Elastic SAN by providing a list such as `ephemeralDisk elasticSan`.
132132

133133
::: zone-end
134134

@@ -286,6 +286,16 @@ When it completes, the cluster has the Azure Container Storage installer compone
286286

287287
## Verify installation
288288

289+
### Connect to the AKS cluster
290+
291+
Before running the verification commands, make sure your local kubeconfig is set to the target cluster:
292+
293+
```azurecli
294+
az aks get-credentials --resource-group <resource-group-name> --name <cluster-name>
295+
```
296+
297+
If you manage multiple clusters, add `--overwrite-existing` to replace an existing context or use `--context` to set a unique context name.
298+
289299
### Verify installer (installer-only mode)
290300

291301
After an installer-only enable, verify that the installer is present:
@@ -313,8 +323,8 @@ Example output:
313323

314324
```output
315325
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
316-
azuresan san.csi.azure.com Delete Immediate false 4d7h
317-
local localdisk.csi.acstor.io Delete WaitForFirstConsumer true 4d5h
326+
azuresan-csi san.csi.azure.com Delete Immediate false 4d7h
327+
local-csi localdisk.csi.acstor.io Delete WaitForFirstConsumer true 4d5h
318328
```
319329

320330
### Verify driver installation

articles/storage/container-storage/use-container-storage-with-elastic-san.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ Create a YAML manifest file such as `storageclass.yaml`, then use the following
8585
apiVersion: storage.k8s.io/v1
8686
kind: StorageClass
8787
metadata:
88-
name: azuresan
88+
name: azuresan-csi
8989
provisioner: san.csi.azure.com
9090
reclaimPolicy: Delete
9191
volumeBindingMode: Immediate
@@ -113,9 +113,9 @@ Alternatively, you can create the storage class using Terraform.
113113
config_path = "~/.kube/config"
114114
}
115115
116-
resource "kubernetes_storage_class_v1" "azuresan" {
116+
resource "kubernetes_storage_class_v1" "azuresan_csi" {
117117
metadata {
118-
name = "azuresan"
118+
name = "azuresan-csi"
119119
}
120120
121121
storage_provisioner = "san.csi.azure.com"
@@ -140,7 +140,7 @@ If you need a different initial capacity than the default 1 TiB, set the `initia
140140
apiVersion: storage.k8s.io/v1
141141
kind: StorageClass
142142
metadata:
143-
name: azuresan
143+
name: azuresan-csi
144144
provisioner: san.csi.azure.com
145145
reclaimPolicy: Delete
146146
volumeBindingMode: Immediate
@@ -177,7 +177,7 @@ If you don't already have Azure Container Storage installed, [install it](instal
177177
apiVersion: storage.k8s.io/v1
178178
kind: StorageClass
179179
metadata:
180-
name: azuresan
180+
name: azuresan-csi
181181
provisioner: san.csi.azure.com
182182
reclaimPolicy: Delete
183183
volumeBindingMode: Immediate
@@ -225,7 +225,7 @@ If you don't already have Azure Container Storage installed, [install it](instal
225225
apiVersion: storage.k8s.io/v1
226226
kind: StorageClass
227227
metadata:
228-
name: azuresan
228+
name: azuresan-csi
229229
provisioner: san.csi.azure.com
230230
reclaimPolicy: Delete
231231
volumeBindingMode: Immediate
@@ -246,14 +246,14 @@ kubectl apply -f storageclass.yaml
246246
Verify that the storage class is created:
247247

248248
```azurecli
249-
kubectl get storageclass azuresan
249+
kubectl get storageclass azuresan-csi
250250
```
251251

252252
You should see output similar to:
253253

254254
```output
255-
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
256-
azuresan san.csi.azure.com Delete Immediate true 10s
255+
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
256+
azuresan-csi san.csi.azure.com Delete Immediate true 10s
257257
```
258258

259259
## Create a persistent volume claim
@@ -273,7 +273,7 @@ A persistent volume claim (PVC) automatically provisions storage based on a stor
273273
resources:
274274
requests:
275275
storage: 1Gi
276-
storageClassName: azuresan
276+
storageClassName: azuresan-csi
277277
```
278278

279279
1. Apply the manifest to create the PVC.
@@ -360,7 +360,7 @@ Use the following YAML manifest to create a default Elastic SAN storage class:
360360
apiVersion: storage.k8s.io/v1
361361
kind: StorageClass
362362
metadata:
363-
name: azuresan
363+
name: azuresan-csi
364364
provisioner: san.csi.azure.com
365365
reclaimPolicy: Delete
366366
volumeBindingMode: Immediate
@@ -376,7 +376,7 @@ kubectl apply -f storageclass.yaml
376376
Verify the storage class:
377377

378378
```azurecli
379-
kubectl get storageclass azuresan
379+
kubectl get storageclass azuresan-csi
380380
```
381381

382382
### Create an Elastic SAN volume
@@ -410,7 +410,7 @@ spec:
410410
accessModes:
411411
- ReadWriteOnce
412412
persistentVolumeReclaimPolicy: Retain
413-
storageClassName: azuresan
413+
storageClassName: azuresan-csi
414414
csi:
415415
driver: san.csi.azure.com
416416
volumeHandle: #{rg}#{san}#{vg}#{vol}
@@ -443,7 +443,7 @@ spec:
443443
requests:
444444
storage: 5Gi
445445
volumeName: pv-san
446-
storageClassName: azuresan
446+
storageClassName: azuresan-csi
447447
```
448448

449449
Apply the manifest to create the PVC.

articles/storage/container-storage/use-container-storage-with-local-disk.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,15 @@ For more information, refer to [Best practices for ephemeral NVMe data disks in
6969

7070
If you don't already have Azure Container Storage installed, [install it](install-container-storage-aks.md).
7171

72-
Azure Container Storage (version 2.x.x) presents local NVMe as a standard Kubernetes storage class. Create the `local` storage class once per cluster and reuse it for both generic ephemeral volumes and persistent volume claims.
72+
Azure Container Storage (version 2.x.x) presents local NVMe as a standard Kubernetes storage class. Create the `local-csi` storage class once per cluster and reuse it for both generic ephemeral volumes and persistent volume claims.
7373

7474
1. Use your favorite text editor to create a YAML manifest file such as `storageclass.yaml`, then paste in the following specification.
7575

7676
```yaml
7777
apiVersion: storage.k8s.io/v1
7878
kind: StorageClass
7979
metadata:
80-
name: local
80+
name: local-csi
8181
provisioner: localdisk.csi.acstor.io
8282
reclaimPolicy: Delete
8383
volumeBindingMode: WaitForFirstConsumer
@@ -109,9 +109,9 @@ Alternatively, you can create the storage class using Terraform.
109109
config_path = "~/.kube/config"
110110
}
111111
112-
resource "kubernetes_storage_class_v1" "local" {
112+
resource "kubernetes_storage_class_v1" "local_csi" {
113113
metadata {
114-
name = "local"
114+
name = "local-csi"
115115
}
116116
117117
storage_provisioner = "localdisk.csi.acstor.io"
@@ -134,19 +134,19 @@ Alternatively, you can create the storage class using Terraform.
134134
Run the following command to verify that the storage class is created:
135135

136136
```azurecli
137-
kubectl get storageclass local
137+
kubectl get storageclass local-csi
138138
```
139139

140140
You should see output similar to:
141141

142142
```output
143-
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
144-
local localdisk.csi.acstor.io Delete WaitForFirstConsumer true 10s
143+
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
144+
local-csi localdisk.csi.acstor.io Delete WaitForFirstConsumer true 10s
145145
```
146146

147147
## Create and attach generic ephemeral volumes
148148

149-
Follow these steps to create and attach a generic ephemeral volume using Azure Container Storage. Make sure Azure Container Storage is [installed](install-container-storage-aks.md) and the `local` storage class exists before you continue.
149+
Follow these steps to create and attach a generic ephemeral volume using Azure Container Storage. Make sure Azure Container Storage is [installed](install-container-storage-aks.md) and the `local-csi` storage class exists before you continue.
150150

151151
### Deploy a pod with generic ephemeral volume
152152

@@ -178,7 +178,7 @@ Create a pod using [Fio](https://github.com/axboe/fio) (Flexible I/O Tester) for
178178
spec:
179179
volumeMode: Filesystem
180180
accessModes: ["ReadWriteOnce"]
181-
storageClassName: local
181+
storageClassName: local-csi
182182
resources:
183183
requests:
184184
storage: 10Gi
@@ -211,7 +211,7 @@ While generic ephemeral volumes are recommended for ephemeral storage, Azure Con
211211
> [!NOTE]
212212
> Azure Container Storage (version 2.x.x) uses the new annotation `localdisk.csi.acstor.io/accept-ephemeral-storage: "true"` instead of the previous `acstor.azure.com/accept-ephemeral-storage: "true"`.
213213

214-
Make sure Azure Container Storage is [installed](install-container-storage-aks.md) and the `local` storage class you created earlier is available before deploying workloads that use it.
214+
Make sure Azure Container Storage is [installed](install-container-storage-aks.md) and the `local-csi` storage class you created earlier is available before deploying workloads that use it.
215215

216216
### Deploy a stateful set with persistent volumes
217217

@@ -259,7 +259,7 @@ spec:
259259
localdisk.csi.acstor.io/accept-ephemeral-storage: "true"
260260
spec:
261261
accessModes: ["ReadWriteOnce"]
262-
storageClassName: local
262+
storageClassName: local-csi
263263
resources:
264264
requests:
265265
storage: 10Gi
@@ -289,8 +289,8 @@ You should see output similar to this example:
289289

290290
```output
291291
NAME STORAGE_CLASS CAPACITY NODE
292-
csisc-2pkx4 local 1373172Mi aks-storagepool-31410930-vmss000001
293-
csisc-gnmm9 local 1373172Mi aks-storagepool-31410930-vmss000000
292+
csisc-2pkx4 local-csi 1373172Mi aks-storagepool-31410930-vmss000001
293+
csisc-gnmm9 local-csi 1373172Mi aks-storagepool-31410930-vmss000000
294294
```
295295

296296
If you encounter empty capacity output, confirm that a StorageClass for `localdisk.csi.acstor.io` exists. The `csistoragecapacities.storage.k8s.io` resource is only generated after a StorageClass for `localdisk.csi.acstor.io` exists.
@@ -309,10 +309,10 @@ az aks nodepool scale --cluster-name <cluster-name> --name <nodepool-name> --res
309309

310310
To clean up storage resources, you must first delete all PersistentVolumeClaims and/or PersistentVolumes. Deleting the Azure Container Storage StorageClass doesn't automatically remove your existing PersistentVolumes/PersistentVolumeClaims.
311311

312-
To delete a storage class named `local`, run the following command:
312+
To delete a storage class named `local-csi`, run the following command:
313313

314314
```azurecli
315-
kubectl delete storageclass local
315+
kubectl delete storageclass local-csi
316316
```
317317

318318
## See also

articles/storage/container-storage/volume-snapshot-restore.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ Create a new PVC that uses the volume snapshot as a data source.
108108
spec:
109109
accessModes:
110110
- ReadWriteOnce
111-
storageClassName: azuresan
111+
storageClassName: azuresan-csi
112112
resources:
113113
requests:
114114
storage: 100Gi

0 commit comments

Comments
 (0)