Share via


佈建適用於 Azure Kubernetes Service 的 Azure NetApp Files SMB 磁碟區

設定適用於 Azure Kubernetes Service 的 Azure NetApp Files 後,即可佈建適用於 Azure Kubernetes Service 的 Azure NetApp Files 磁碟區。

Azure NetApp Files 支援使用 NFS (NFSv3 或 NFSv4.1)、SMB 和雙重通訊協定 (NFSv3 和 SMB,或 NFSv4.1 和 SMB) 的磁碟區。

靜態設定使用 SMB 磁碟區的應用程式

本節說明如何在 Azure NetApp Files 上建立 SMB 磁碟區,並以靜態方式向 Kubernetes 公開磁碟區,以便容器化應用程式取用。

建立 SMB 磁碟區

  1. 定義變數以供稍後使用。 以適合環境的值取代 myresourcegroupmylocationmyaccountnamemypool1premiummyfilepathmyvolsizemyvolnamevirtnetid。 檔案路徑在所有 ANF 帳戶中均不得重複。

    RESOURCE_GROUP="myresourcegroup"
    LOCATION="mylocation"
    ANF_ACCOUNT_NAME="myaccountname"
    POOL_NAME="mypool1"
    SERVICE_LEVEL="premium" # Valid values are standard, premium, and ultra
    UNIQUE_FILE_PATH="myfilepath"
    VOLUME_SIZE_GIB="myvolsize"
    VOLUME_NAME="myvolname"
    VNET_ID="vnetId"
    SUBNET_ID="anfSubnetId"
    
  2. 使用 az netappfiles volume create 命令建立磁碟區。

    az netappfiles volume create \
        --resource-group $RESOURCE_GROUP \
        --location $LOCATION \
        --account-name $ANF_ACCOUNT_NAME \
        --pool-name $POOL_NAME \
        --name "$VOLUME_NAME" \
        --service-level $SERVICE_LEVEL \
        --vnet $VNET_ID \
        --subnet $SUBNET_ID \
        --usage-threshold $VOLUME_SIZE_GIB \
        --file-path $UNIQUE_FILE_PATH \
        --protocol-types CIFS
    

使用網域認證建立祕密

  1. 使用 kubectl create secret 命令,在 AKS 叢集上建立存取 Active Directory (AD) 伺服器的祕密。 Kubernetes 永續性磁碟區會使用此秘密來存取 Azure NetApp Files SMB 磁碟區。 使用下列命令來建立祕密,並將 USERNAME 取代為您的使用者名稱、PASSWORD 取代為您的密碼,以及 DOMAIN_NAME 取代為您 AD 的網域名稱。

        kubectl create secret generic smbcreds --from-literal=username=USERNAME --from-literal=password="PASSWORD" --from-literal=domain='DOMAIN_NAME'
    
  2. 檢查是否已建立秘密。

       kubectl get secret
       NAME       TYPE     DATA   AGE
       smbcreds   Opaque   2      20h
    

安裝 SMB CSI 驅動程式

您必須安裝容器儲存體介面 (CSI) 驅動程式,才能建立 Kubernetes SMB PersistentVolume

  1. 使用 helm 在叢集上安裝 SMB CSI 驅動程式。 請務必將 windows.enabled 選項設定為 true

    helm repo add csi-driver-smb https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts   
    helm install csi-driver-smb csi-driver-smb/csi-driver-smb --namespace kube-system --version v1.13.0 --set windows.enabled=true
    

    如需安裝 SMB CSI 驅動程式的其他方法,請參閱在 Kubernetes 叢集上安裝 SMB CSI 驅動程式主要版本

  2. 確認 csi-smb 控制器 Pod 正在執行中,且每個背景工作角色節點都有使用 kubectl get pods 命令執行的 Pod:

    kubectl get pods -n kube-system | grep csi-smb
    
    csi-smb-controller-68df7b4758-xf2m9   3/3     Running   0          3m46s
    csi-smb-node-s6clj                    3/3     Running   0          3m47s
    csi-smb-node-win-tfxvk                3/3     Running   0          3m47s
    

建立永續性磁碟區

  1. 使用 az netappfiles volume show 列出磁碟區的詳細資料。 如果未在上一個步驟中定義,請將這些變數取代為 Azure NetApp Files 帳戶和環境中的適當值。

    az netappfiles volume show \
        --resource-group $RESOURCE_GROUP \
        --account-name $ANF_ACCOUNT_NAME \
        --pool-name $POOL_NAME \
        --volume-name "$VOLUME_NAME -o JSON
    

    下列輸出是使用實際值執行上述命令的範例。

    {
      ...
      "creationToken": "myvolname",
      ...
      "mountTargets": [
        {
          ...
          "
             "smbServerFqdn": "ANF-1be3.contoso.com",
          ...
        }
      ],
      ...
    }
    
  2. 建立名為 pv-smb.yaml 的檔案,然後將下列 YAML 複製進來。 必要時,請將 myvolname 取代為 creationToken,並以上一個步驟中的 smbServerFqdn 值取代 ANF-1be3.contoso.com\myvolname。 請務必包含您的 AD 認證祕密,以及您在之前步驟中建立的秘密所在的命名空間。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: anf-pv-smb
    spec:
      storageClassName: ""
      capacity:
        storage: 100Gi
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      mountOptions:
        - dir_mode=0777
        - file_mode=0777
        - vers=3.0
      csi:
        driver: smb.csi.k8s.io
        readOnly: false
        volumeHandle: myvolname  # make sure it's a unique name in the cluster
        volumeAttributes:
          source: \\ANF-1be3.contoso.com\myvolname
        nodeStageSecretRef:
          name: smbcreds
          namespace: default
    
  3. 使用 kubectl apply 命令建立永續性磁碟區:

    kubectl apply -f pv-smb.yaml
    
  4. 使用 kubectl describe 命令,確認永續性磁碟區的狀態為 [可用]

    kubectl describe pv pv-smb
    

建立永續性磁碟區宣告

  1. 建立檔案名稱 pvc-smb.yaml,然後將下列 YAML 複製進來。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: anf-pvc-smb
    spec:
      accessModes:
        - ReadWriteMany
      volumeName: anf-pv-smb
      storageClassName: ""
      resources:
        requests:
          storage: 100Gi
    
  2. 使用 kubectl apply 命令建立永續性磁碟區宣告:

    kubectl apply -f pvc-smb.yaml
    

    使用 kubectl describe 命令,確認永續性磁碟區宣告的狀態為 [繫結]

    kubectl describe pvc pvc-smb
    

使用 Pod 裝載

  1. 建立名為 iis-smb.yaml 的檔案,然後將下列 YAML 複製進來。 此檔案將用來建立 Internet Information Services Pod,用來將磁碟區掛接至路徑 /inetpub/wwwroot

    apiVersion: v1
    kind: Pod 
    metadata:
      name: iis-pod
      labels:
         app: web
    spec:
      nodeSelector:
        "kubernetes.io/os": windows
      volumes:
      - name: smb
        persistentVolumeClaim:
          claimName: anf-pvc-smb 
      containers:
      - name: web
        image: mcr.microsoft.com/windows/servercore/iis:windowsservercore 
        resources:
          limits:
            cpu: 1
            memory: 800M
        ports:
          - containerPort: 80
        volumeMounts:
        - name: smb
          mountPath: "/inetpub/wwwroot"
          readOnly: false
    
  2. 使用 kubectl apply 命令建立 Pod:

    kubectl apply -f iis-smb.yaml
    
  3. 使用 kubectl describe 命令,確認 Pod 為執行中且已掛接來自 SMB 的 /inetpub/wwwroot

    kubectl describe pod iis-pod
    

    此命令的輸出與下列範例類似:

    Name:         iis-pod
    Namespace:    default
    Priority:     0
    Node:         akswin000001/10.225.5.246
    Start Time:   Fri, 05 May 2023 09:34:41 -0400
    Labels:       app=web
    Annotations:  <none>
    Status:       Running
    IP:           10.225.5.248
    IPs:
      IP:  10.225.5.248
    Containers:
      web:
        Container ID:   containerd://39a1659b6a2b6db298df630237b2b7d959d1b1722edc81ce9b1bc7f06237850c
        Image:          mcr.microsoft.com/windows/servercore/iis:windowsservercore
        Image ID:       mcr.microsoft.com/windows/servercore/iis@sha256:0f0114d0f6c6ee569e1494953efdecb76465998df5eba951dc760ac5812c7409
        Port:           80/TCP
        Host Port:      0/TCP
        State:          Running
          Started:      Fri, 05 May 2023 09:34:55 -0400
        Ready:          True
        Restart Count:  0
        Limits:
          cpu:     1
          memory:  800M
        Requests:
          cpu:        1
          memory:     800M
        Environment:  <none>
        Mounts:
          /inetpub/wwwroot from smb (rw)
          /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-mbnv8 (ro)
    ...
    
  4. 使用 kubectl exec 命令連線到 Pod 以確認已在 Pod 上掛接磁碟區,然後在正確的目錄中使用 dir 命令來檢查磁碟區是否已掛接,且大小符合您所佈建的磁碟區大小。

    kubectl exec -it iis-pod –- cmd.exe
    

    此命令的輸出與下列範例類似:

    Microsoft Windows [Version 10.0.20348.1668]
    (c) Microsoft Corporation. All rights reserved.
    
    C:\>cd /inetpub/wwwroot
    
    C:\inetpub\wwwroot>dir
     Volume in drive C has no label.
     Volume Serial Number is 86BB-AA55
    
     Directory of C:\inetpub\wwwroot
    
    05/04/2023  08:15 PM    <DIR>          .
    05/04/2023  08:15 PM    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)  107,373,838,336 bytes free
    

動態設定使用 SMB 磁碟區的應用程式

本節說明如何使用 Astra Trident 在 Azure NetApp Files 上動態建立 SMB 磁碟區,並自動掛接至容器化 Windows 應用程式。

安裝 Astra Trident

若要動態佈建 SMB 磁碟區,您必須安裝 Astra Trident 22.10 版或更新版本。 動態佈建 SMB 磁碟區需要 Windows 背景工作角色節點。

Astra Trident 是 NetApp 的動態儲存體佈建工具,專為 Kubernetes 所建置。 使用 Astra Trident 的業界標準容器儲存體介面 (CSI) 驅動程式,簡化 Kubernetes 應用程式的儲存體使用量。 Astra Trident 會在 Kubernetes 叢集上部署為 Pod,並為 Kubernetes 工作負載提供動態儲存體協調流程服務。

您可以使用 Trident 運算子 (手動或使用 Helm) 或 tridentctl 來安裝 Trident。 若要深入瞭解這些安裝方法及其運作方式,請參閱安裝指南

使用 Helm 安裝 Astra Trident

Helm 必須安裝在工作站上,才能使用此方法安裝 Astra Trident。 如需安裝 Astra Trident 的其他方法,請參閱 Astra Trident 安裝指南。 如果您的叢集中有 Windows 背景工作角色節點,請務必使用任何安裝方法來啟用 Windows。

  1. 若要在有 Windows 背景工作角色節點的叢集中使用 Helm 安裝 Astra Trident,請執行下列命令:

    helm repo add netapp-trident https://netapp.github.io/trident-helm-chart
    
    helm install trident netapp-trident/trident-operator --version 23.04.0  --create-namespace --namespace trident –-set windows=true
    

    此命令的輸出與下列範例類似:

    NAME: trident
    LAST DEPLOYED: Fri May  5 14:23:05 2023
    NAMESPACE: trident
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    NOTES:
    Thank you for installing trident-operator, which will deploy and manage NetApp's Trident CSI
    storage provisioner for Kubernetes.
    
    Your release is named 'trident' and is installed into the 'trident' namespace.
    Please note that there must be only one instance of Trident (and trident-operator) in a Kubernetes cluster.
    
    To configure Trident to manage storage resources, you will need a copy of tridentctl, which is available in pre-packaged Trident releases.  You may find all Trident releases and source code online at https://github.com/NetApp/trident.
    
    To learn more about the release, try:
    
      $ helm status trident
      $ helm get all trident
    
  2. 若要確認 Astra Trident 已安裝成功,請執行下列 kubectl describe 命令:

    kubectl describe torc trident
    

    此命令的輸出與下列範例類似:

    Name:         trident
    Namespace:    
    Labels:       app.kubernetes.io/managed-by=Helm
    Annotations:  meta.helm.sh/release-name: trident
                  meta.helm.sh/release-namespace: trident
    API Version:  trident.netapp.io/v1
    Kind:         TridentOrchestrator
    Metadata:
        ...
    Spec:
      IPv6:                  false
      Autosupport Image:     docker.io/netapp/trident-autosupport:23.04
      Autosupport Proxy:     <nil>
      Disable Audit Log:     true
      Enable Force Detach:   false
      Http Request Timeout:  90s
      Image Pull Policy:     IfNotPresent
      k8sTimeout:            0
      Kubelet Dir:           <nil>
      Log Format:            text
      Log Layers:            <nil>
      Log Workflows:         <nil>
      Namespace:             trident
      Probe Port:            17546
      Silence Autosupport:   false
      Trident Image:         docker.io/netapp/trident:23.04.0
      Windows:               true
    Status:
      Current Installation Params:
        IPv6:                       false
        Autosupport Hostname:       
        Autosupport Image:          docker.io/netapp/trident-autosupport:23.04
        Autosupport Proxy:          
        Autosupport Serial Number:  
        Debug:                      false
        Disable Audit Log:          true
        Enable Force Detach:        false
        Http Request Timeout:       90s
        Image Pull Policy:          IfNotPresent
        Image Pull Secrets:
        Image Registry:       
        k8sTimeout:           30
        Kubelet Dir:          /var/lib/kubelet
        Log Format:           text
        Log Layers:           
        Log Level:            info
        Log Workflows:        
        Probe Port:           17546
        Silence Autosupport:  false
        Trident Image:        docker.io/netapp/trident:23.04.0
      Message:                Trident installed
      Namespace:              trident
      Status:                 Installed
      Version:                v23.04.0
    Events:
      Type    Reason      Age   From                        Message
      ----    ------      ----  ----                        -------
      Normal  Installing  74s   trident-operator.netapp.io  Installing Trident
      Normal  Installed   46s   trident-operator.netapp.io  Trident installed
    

建立後端

必須先建立後端,才能指示 Astra Trident 關於 Azure NetApp Files 訂閱以及需要建立磁碟區的位置。 如需後端的詳細資訊,請參閱 Azure NetApp Files 後端設定選項和範例

  1. 建立名為 backend-secret-smb.yaml 的檔案,然後將下列 YAML 複製進來。 將 Client IDclientSecret 變更為環境適用的正確值。

    apiVersion: v1
    kind: Secret
    metadata:
      name: backend-tbc-anf-secret
    type: Opaque
    stringData:
      clientID: abcde356-bf8e-fake-c111-abcde35613aa
      clientSecret: rR0rUmWXfNioN1KhtHisiSAnoTherboGuskey6pU
    
  2. 建立名為 backend-anf-smb.yaml 的檔案,然後將下列 YAML 複製進來。 將 ClientIDclientSecretsubscriptionIDtenantIDlocationserviceLevel 變更為環境適用的正確值。 如果您具有 Azure NetApp Files 服務的足夠權限,就可以在 Microsoft Entra ID 的應用程式註冊中找到 tenantIDclientIDclientSecret。 應用程式註冊包含 Azure 預先定義的擁有者或參與者角色。 Azure 位置必須含有至少一個委派的子網路。 serviceLevel 必須符合設定適用於 AKS 工作負載的 Azure NetApp Files 中容量集區所設定的 serviceLevel

    apiVersion: trident.netapp.io/v1
    kind: TridentBackendConfig
    metadata:
      name: backend-tbc-anf-smb
    spec:
      version: 1
      storageDriverName: azure-netapp-files
      subscriptionID: 12abc678-4774-fake-a1b2-a7abcde39312
      tenantID: a7abcde3-edc1-fake-b111-a7abcde356cf
      location: eastus
      serviceLevel: Premium
      credentials:
        name: backend-tbc-anf-secret
      nasType: smb
    
  3. 使用 kubectl apply 命令建立祕密和後端。

    建立 祕密:

    kubectl apply -f backend-secret.yaml -n trident
    

    此命令的輸出與下列範例類似:

    secret/backend-tbc-anf-secret created
    

    建立後端:

    kubectl apply -f backend-anf.yaml -n trident
    

    此命令的輸出與下列範例類似:

    tridentbackendconfig.trident.netapp.io/backend-tbc-anf created
    
  4. 執行下列命令,確認後端已建立:

    kubectl get tridentbackends -n trident
    

    此命令的輸出與下列範例類似:

    NAME        BACKEND               BACKEND UUID
    tbe-9shfq   backend-tbc-anf-smb   09cc2d43-8197-475f-8356-da7707bae203
    

使用適用於 SMB 的網域認證建立祕密

  1. 使用 kubectl create secret 命令,在 AKS 叢集上建立存取 AD 伺服器的祕密。 Kubernetes 永續性磁碟區會使用此資訊來存取 Azure NetApp Files SMB 磁碟區。 使用下列命令,將 DOMAIN_NAME\USERNAME 取代為您的網域名稱和使用者名稱,並將 PASSWORD 取代為您的密碼。

    kubectl create secret generic smbcreds --from-literal=username=DOMAIN_NAME\USERNAME –from-literal=password="PASSWORD" 
    
  2. 確認祕密是否已建立。

    kubectl get secret
    

    輸出類似下列範例:

    NAME       TYPE     DATA   AGE
    smbcreds   Opaque   2      2h
    

建立儲存體類別

儲存體類別可用來定義如何搭配永續性磁碟區動態建立儲存體單位。 若要取用 Azure NetApp Files 磁碟區,必須建立儲存體類別。

  1. 建立名為 anf-storageclass-smb.yaml 的檔案,然後將下列 YAML 複製進來。

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: anf-sc-smb
    provisioner: csi.trident.netapp.io
    allowVolumeExpansion: true
    parameters:
      backendType: "azure-netapp-files"
      trident.netapp.io/nasType: "smb"
      csi.storage.k8s.io/node-stage-secret-name: "smbcreds"
      csi.storage.k8s.io/node-stage-secret-namespace: "default"
    
  2. 使用 kubectl apply 命令建立儲存類別:

    kubectl apply -f anf-storageclass-smb.yaml
    

    此命令的輸出與下列範例類似:

    storageclass/anf-sc-smb created
    
  3. 執行 kubectl get 命令以檢視儲存類別的狀態:

    kubectl get sc anf-sc-smb
    NAME         PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    anf-sc-smb   csi.trident.netapp.io   Delete          Immediate           true                   13s
    

建立 PVC

「永續性磁碟區宣告」(PVC) 是使用者提出的儲存體要求。 建立永續性磁碟區宣告時,Astra Trident 會自動建立 Azure NetApp Files SMB 共用,且可供 Kubernetes 工作負載取用。

  1. 建立名為 anf-pvc-smb.yaml 的檔案,並複製下列 YAML。 在此範例中,會建立具有 ReadWriteMany 存取權的 100-GiB 磁碟區,並使用在建立儲存類別中建立的儲存類別。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: anf-pvc-smb
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 100Gi
      storageClassName: anf-sc-smb
    
  2. 使用 kubectl apply 命令建立永續性磁碟區宣告:

    kubectl apply -f anf-pvc-smb.yaml
    

    此命令的輸出與下列範例類似:

    persistentvolumeclaim/anf-pvc-smb created
    
  3. 若要檢視永續性磁碟區宣告的相關資訊,請執行 kubectl get 命令:

    kubectl get pvc
    

    此命令的輸出與下列範例類似:

    NAME          STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    anf-pvc-smb   Bound    pvc-209268f5-c175-4a23-b61b-e34faf5b6239   100Gi      RWX            anf-sc-smb     5m38s
    
  4. 若要檢視 Astra Trident 所建立的永續性磁碟區,請執行下列 kubectl get 命令:

    kubectl get pv
    NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                 STORAGECLASS   REASON   AGE
    pvc-209268f5-c175-4a23-b61b-e34faf5b6239   100Gi      RWX            Delete           Bound    default/anf-pvc-smb   anf-sc-smb              5m52s
    

使用永續性磁碟區

建立 PVC 之後,Pod 可以啟動以存取 Azure NetApp Files 磁碟區。 您可以使用下列資訊清單來定義 Internet Information Services (IIS) Pod,以掛接在上一個步驟中建立的 Azure NetApp Files SMB 共用。 在此範例中,磁碟區會裝載在 /inetpub/wwwroot

  1. 建立名為 anf-iis-pod.yaml 的檔案,然後將下列 YAML 複製進來:

    apiVersion: v1
    kind: Pod 
    metadata:
      name: iis-pod
      labels:
         app: web
    spec:
      nodeSelector:
        "kubernetes.io/os": windows
      volumes:
      - name: smb
        persistentVolumeClaim:
          claimName: anf-pvc-smb 
      containers:
      - name: web
        image: mcr.microsoft.com/windows/servercore/iis:windowsservercore 
        resources:
          limits:
            cpu: 1
            memory: 800M
        ports:
          - containerPort: 80
        volumeMounts:
        - name: smb
          mountPath: "/inetpub/wwwroot"
          readOnly: false
    
  2. 使用 kubectl apply 命令建立部署:

    kubectl apply -f anf-iis-deploy-pod.yaml
    

    此命令的輸出與下列範例類似:

    pod/iis-pod created
    

    使用 kubectl describe 命令,確認 Pod 正在執行中並透過 SMB 掛接至 /inetpub/wwwroot

    kubectl describe pod iis-pod
    

    此命令的輸出與下列範例類似:

    Name:         iis-pod
    Namespace:    default
    Priority:     0
    Node:         akswin000001/10.225.5.246
    Start Time:   Fri, 05 May 2023 15:16:36 -0400
    Labels:       app=web
    Annotations:  <none>
    Status:       Running
    IP:           10.225.5.252
    IPs:
      IP:  10.225.5.252
    Containers:
      web:
        Container ID:   containerd://1e4959f2b49e7ad842b0ec774488a6142ac9152ca380c7ba4d814ae739d5ed3e
        Image:          mcr.microsoft.com/windows/servercore/iis:windowsservercore
        Image ID:       mcr.microsoft.com/windows/servercore/iis@sha256:0f0114d0f6c6ee569e1494953efdecb76465998df5eba951dc760ac5812c7409
        Port:           80/TCP
        Host Port:      0/TCP
        State:          Running
          Started:      Fri, 05 May 2023 15:16:44 -0400
        Ready:          True
        Restart Count:  0
        Limits:
          cpu:     1
          memory:  800M
        Requests:
          cpu:        1
          memory:     800M
        Environment:  <none>
        Mounts:
          /inetpub/wwwroot from smb (rw)
          /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-zznzs (ro)
    
  3. 使用 kubectl exec 連線到 Pod,以確認已在 Pod 中掛接您的磁碟區。 然後在正確的目錄中使用 dir 命令來檢查磁碟區是否已掛接,且大小符合您所佈建的磁碟區大小。

    kubectl exec -it iis-pod –- cmd.exe
    

    此命令的輸出與下列範例類似:

    Microsoft Windows [Version 10.0.20348.1668]
    (c) Microsoft Corporation. All rights reserved.
    
    C:\>cd /inetpub/wwwroot
    
    C:\inetpub\wwwroot>dir
     Volume in drive C has no label.
     Volume Serial Number is 86BB-AA55
    
     Directory of C:\inetpub\wwwroot
    
    05/05/2023  01:38 AM    <DIR>          .
    05/05/2023  01:38 AM    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)  107,373,862,912 bytes free
    
    C:\inetpub\wwwroot>exit
    

下一步

Astra Trident 可透過 Azure NetApp Files 支援許多功能。 如需詳細資訊,請參閱