如何创建 SMB Azure 文件共享

在创建 Azure 文件共享之前,你需要回答有关你将如何使用它的两个问题:

  • Azure 文件共享的性能要求是什么?
    Azure 文件存储提供两种不同的存储介质层级,即 SSD(高级)和 HDD(标准),可让你根据方案的性能和价格要求定制文件共享。 SSD 文件共享提供稳定的高性能和低延迟,大多数 IO 操作可在几毫秒内完成。 HDD 文件共享为常规用途提供经济高效的存储。

  • Azure 文件共享在冗余方面的要求是什么?
    Azure 文件存储为文件共享提供本地 (LRS)、区域 (ZRS)、异地 (GRS) 和异地区域 (GZRS) 冗余选项。 SSD 文件共享仅适用于本地和区域冗余类型。 请参阅 Azure 文件存储冗余,了解详细信息。

有关这些选项的详细信息,请参阅规划 Azure 文件存储部署

适用于

管理模型 计费模式 媒体层 冗余 SMB NFS
Microsoft.Storage 预配 v1 SSD(高级) 本地 (LRS) 是 是
Microsoft.Storage 预配 v1 SSD(高级) 区域 (ZRS) 是 是
Microsoft.Storage 即用即付 HDD(标准) 本地 (LRS) 是 否
Microsoft.Storage 即用即付 HDD(标准) 区域 (ZRS) 是 否
Microsoft.Storage 即用即付 HDD(标准) 异地 (GRS) 是 否
Microsoft.Storage 即用即付 HDD(标准) 异地区域 (GZRS) 是 否

先决条件

创建存储帐户

Azure 文件共享将部署到存储帐户。存储帐户是代表存储共享池的顶级对象。 此存储池可用于部署多个文件共享。

存储帐户具有两个属性:种类和 SKU,它们决定了存储帐户中部署的文件共享的计费模式、媒体层和冗余。 对于 Azure 文件存储,有两种主要的类型和 SKU 组合需要考虑:

媒体层 计费模式 存储帐户类型 存储帐户
HDD 即用即付 StorageV2
  • Standard_LRS
  • Standard_ZRS
  • Standard_GRS
  • Standard_GZRS
SSD 预配 v1 FileStorage
  • Premium_LRS
  • Premium_ZRS

创建预配的 v1 或即用即付存储帐户 (Azure CLI)

若要使用 Azure CLI 创建预配 v1 或即用即付存储帐户,请使用 az storage account create 命令。 此命令有许多选项;此处只显示了必需的选项。 若要详细了解高级选项,请参阅 az storage account create 命令文档

若要为预配 v1 或即用即付文件共享创建存储帐户,请使用以下命令。 请记得将变量 resourceGroupNamestorageAccountNameregionstorageAccountKindstorageAccountSku 的值替换为存储帐户部署所需的值。

resourceGroupName="<my-resource-group>"
storageAccountName="<my-storage-account-name>"
region="<my-region>"

# Valid storage account kinds are FileStorage (SSD provisioned v1) and StorageV2 
# (HDD pay-as-you-go). Create HDD provisioned v2 storage accounts with 
# az resource create.
storageAccountKind="FileStorage"

# Valid SKUs for FileStorage are Premium_LRS (SSD Local provisioned v1) and 
# Premium_ZRS (SSD Zone provisioned v1).
# 
# Valid SKUs for StorageV2 are Standard_LRS (HDD Local pay-as-you-go), 
# Standard_ZRS (HDD Zone pay-as-you-go), Standard_GRS (HDD Geo pay-as-you-go),
# and Standard_GZRS (HDD GeoZone pay-as-you-go).
storageAccountSku="Premium_LRS"

az storage account create \
    --resource-group $resourceGroupName \
    --name $storageAccountName \
    --location $region \
    --kind $storageAccountKind \
    --sku $storageAccountSku \
    --output none

创建文件共享

创建存储帐户后,便可以创建文件共享。 根据你创建的是预配的 v1 还是即用即付存储帐户,此过程会有所不同。

备注

文件共享名称必须是所有小写字母、数字和单个连字符,并且必须以小写字母或数字开头和结尾。 名称不能包含两个连续的连字符。 若要详细了解如何为文件共享和文件命名,请参阅命名和引用共享、目录、文件和元数据

创建 SSD 预配的 v1 文件共享

使用预配 v1 计费模型创建文件共享时,可以根据预配的存储量指定共享所需的存储量,以及 IOPS 和吞吐量容量。 根据单个文件共享要求,你可能会发现需要的 IOPS 或吞吐量超过了我们的建议。 在这种情况下,需要预配更多存储才能获取所需的 IOPS 或吞吐量。 若要详细了解预配 v1 模型,请参阅了解预配 v1 计费模型

可以使用 az storage share-rm create 命令创建 Azure 文件共享。 以下 PowerShell 命令假定你按照使用 Azure CLI 创建存储帐户部分中的定义设置变量 resourceGroupNamestorageAccountName

若要创建预配 v1 文件共享,请使用以下命令。 请记得将变量 shareNameprovisionedStorageGibprotocol的值替换为文件共享部署所需的选择。

shareName="<file-share>"

# The provisioned storage size of the share in GiB. Valid range is 100 to 
# 102,400.
provisionedStorageGib=1024

# The protocol chosen for the file share. Valid set contains "SMB" and "NFS".
protocol="SMB"

az storage share-rm create \
    --resource-group $resourceGroupName \
    --storage-account $storageAccountName \
    --name $shareName \
    --quota $provisionedStorageGib \
    --enabled-protocols $protocol \
    --output none

创建 HDD 即用即付文件共享

HDD 即用即付文件共享具有一个名为访问层的属性。 所有三个访问层都存储在完全相同的存储硬件上。 这三个访问层的主要区别是静态数据存储价格(层级越冷,价格越低)和事务价格(层级越冷,价格越高)。 若要详细了解各层之间的差异,请参阅访问层的差异

可以使用 az storage share-rm create 命令创建 Azure 文件共享。 以下 Azure CLI 命令假设你已根据“使用 Azure CLI 创建存储帐户”部分中的定义,设置了变量 $resourceGroupName$storageAccountName

若要创建即用即付文件共享,请使用以下命令。 请记得将变量 shareNameaccessTier 的值替换为文件共享部署所需的选择。

shareName="<file-share>"

# The access tier of the file share. Valid set contains "TransactionOptimized",
# "Hot", and "Cool".
accessTier="Hot"

az storage share-rm create \
    --resource-group $resourceGroupName \
    --storage-account $storageAccountName \
    --name $shareName \
    --access-tier $accessTier \
    --output none

更改文件共享的成本和性能特征

创建文件共享后,可能需要调整共享的预配(预配模型)或访问层(即用即付模型)。 以下部分将向你展示如何调整共享的相关属性。

更改预配的 v1 文件共享的成本和性能特征

创建预配 v1 文件共享后,可以更改文件共享的预配存储大小。 更改共享的预配存储也会更改预配 IOPS 和预配吞吐量。 有关详细信息,请参阅预配 v1 预配详细信息

可以使用 az storage share-rm update 命令修改预配 v1 文件共享。 请记得将变量 resourceGroupNamestorageAccountNamefileShareNameprovisionedStorageGib 的值替换为文件共享所需的值。

# The path to the file share resource to be modified.
resourceGroupName="<resource-group>"
storageAccountName="<storage-account>"
fileShareName="<file-share>"

# The provisioning desired on the file share.
provisionedStorageGib=10240

# Update the file share provisioning.
az storage share-rm update \
        --resource-group $resourceGroupName \
        --storage-account $storageAccountName \
        --name $fileShareName \
        --quota $provisionedStorageGib

更改即用即付文件共享的成本和性能特征

创建即用即付文件共享后,可能需要更改两个属性:

  • 访问层:文件共享的访问层决定了存储与 IOPS/吞吐量成本(以交易的形式)的比率。 有三个访问层:事务优化层、热层和冷层。 更改 Azure 文件共享的层需要将其迁移到新访问层,这会产生交易成本。 有关详细信息,请参阅在访问层之间切换

  • 配额:配额是对文件共享大小的限制。 配额属性在预配的 v1 模式中用于表示“预配的存储容量”,但是在即用即付模式中,配额对计费没有直接影响。 你可能需要修改这一点的两个主要原因是,如果使用配额来限制文件共享的增长,以控制即用即付模式中使用的存储/交易成本,或者如果在引入大型文件共享功能之前就有一个存储帐户,这使文件共享能够增长到超过5 TiB。 即用即付文件共享的最大文件共享大小为 100 TiB。

可以使用 az storage share-rm update 命令修改即用即付文件共享的访问层和配额设置。 请记得将变量 resourceGroupNamestorageAccountNamefileShareNameaccessTierquotaGib 的值替换为文件共享所需的值。

# The path to the file share resource to be modified.
resourceGroupName="<resource-group>"
storageAccountName="<storage-account>"
fileShareName="<file-share>"

# The settings to be changed on the file share. Set to the empty string to skip 
# setting.
accessTier="Cool"
quotaGib=""

command="az storage share-rm update --resource-group $resourceGroupName"
command="$command --storage-account $storageAccountName --name $fileShareName"

if [ ! -z "${accessTier}" ]; then
    command="$command --access-tier $accessTier"
fi

if [ ! -z "${quotaGib}" ]; then
    command="$command --quota $quotaGib"
fi

# Update file share (command is in variable)
$command

删除文件共享

建议删除未使用的或过时的文件共享,具体视工作流而定。 可以使用以下说明来删除文件共享。 可以在保留期内恢复启用软删除的存储帐户中的文件共享。

可以使用 az storage share-rm delete 命令删除文件共享。 请记得将变量 resourceGroupNamestorageAccountNamefileShareName 的值替换为文件共享所需的值。

resourceGroupName="<resource-group>"
storageAccountName="<storage-account>"
fileShareName="<file-share>"

az storage share-rm delete \
    --resource-group $resourceGroupName \
    --storage-account $storageAccountName \
    --name $fileShareName

后续步骤