Azure Files で mountOptions 設定を使用する

まとめ

この記事では、Azure Files ストレージ クラスに推奨される mountOptions 設定について説明します。 これらの設定を使用して、パフォーマンスと信頼性を向上させる Kubernetes ストレージをプロビジョニングします。

サーバー メッセージ ブロック (SMB) 共有とネットワーク ファイル システム (NFS) 共有には、次の mountOptions 設定を使用します。

  • SMB シェア

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: azurefile-csi
    provisioner: file.csi.azure.com
    allowVolumeExpansion: true
    parameters:
      skuName: Premium_LRS  # available values: Premium_LRS, Premium_ZRS, Standard_LRS, Standard_GRS, Standard_ZRS, Standard_RAGRS, Standard_RAGZRS
    reclaimPolicy: Delete
    volumeBindingMode: Immediate
    mountOptions:
      - dir_mode=0777  # modify this permission if you want to enhance the security
      - file_mode=0777 # modify this permission if you want to enhance the security
      - mfsymlinks    # support symbolic links
      - cache=strict  # https://linux.die.net/man/8/mount.cifs
      - nosharesock  # reduces probability of reconnect race
      - actimeo=30  # reduces latency for metadata-heavy workload
      - nobrl  # disable sending byte range lock requests to the server and for applications which have challenges with posix locks
    

これらのアクセス許可は、アプリケーションが必要とするよりも広範なアクセス許可を付与できます。 次の例のように、最初に最小特権のアプローチを使用することを検討してください。

  • dir_mode=0755file_mode=0755uid=1000gid=1000

  • dir_mode=0777file_mode=0777uid=0gid=0 は、アプリケーションでルートまたはより広範なアクセスが必要な場合に適している可能性があります。

  • NFS シェア

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: azurefile-csi-nfs
    provisioner: file.csi.azure.com
    parameters:
      protocol: nfs
      skuName: Premium_LRS     # available values: Premium_LRS, Premium_ZRS
    reclaimPolicy: Delete
    volumeBindingMode: Immediate
    allowVolumeExpansion: true
    mountOptions:
      - nconnect=4  # improves performance by enabling multiple connections to share
      - noresvport  # improves availability
      - actimeo=30  # reduces latency for metadata-heavy workloads
    

NFS の rsize オプションと wsize オプションの詳細については、「 読み取りおよび書き込みサイズの最適化オプション」を参照してください。

actimeonconnectのオプションは、次のMicrosoftドキュメントで詳細に分析されています。

マウント オプション (mountOptions) を構成する場所は、動的永続ボリュームと静的永続ボリュームのどちらをプロビジョニングするかによって異なります。 ストレージ クラスを使用して ボリュームを動的にプロビジョニング する場合は、ストレージ クラス オブジェクト (kind: StorageClass) にマウント オプションを指定します。 ボリュームを 静的にプロビジョニングする場合は、 PersistentVolume オブジェクト (kind: PersistentVolume) にマウント オプションを指定します。 ファイル共有をインライン ボリュームとしてマウントする場合は、Pod オブジェクト (kind: Pod) にマウント オプションを指定します。

References

Azure Files のベスト プラクティスについては、 Azure Files ストレージのプロビジョニングに関するページを参照してください。