你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure 文件可伸缩性和性能目标
Azure 文件在云中提供可通过 SMB 和 NFS 文件系统协议访问的完全托管的文件共享。 本文讨论了 Azure 文件和 Azure 文件同步的可伸缩性和性能目标。
此处列出的目标可能受部署中的其他变量的影响。 例如,文件的 I/O 性能可能受 SMB 客户端的行为和可用网络带宽的影响。 你应该对使用模式进行测试,以确定 Azure 文件存储的可伸缩性和性能是否满足你的要求。 还应预料到这些限制会随着时间的推移而增加。
适用于
文件共享类型 | SMB | NFS |
---|---|---|
标准文件共享 (GPv2)、LRS/ZRS | ![]() |
![]() |
标准文件共享 (GPv2)、GRS/GZRS | ![]() |
![]() |
高级文件共享 (FileStorage)、LRS/ZRS | ![]() |
![]() |
Azure 文件规模目标
Azure 文件共享将部署到存储帐户。存储帐户是代表存储共享池的顶级对象。 此存储池可用于部署多个文件共享。 因此需要考虑三个类别:存储帐户、Azure 文件共享和单个文件。
存储帐户缩放目标
存储存储帐户规模目标应用于存储帐户级别。 有两种适用于 Azure 文件存储的主要类型的存储帐户:
常规用途版本 2 (GPv2) 存储帐户:使用 GPv2 存储帐户可以在标准的/基于硬盘(基于 HDD)的硬件上部署 Azure 文件共享。 除了存储 Azure 文件共享以外,GPv2 存储帐户还可以存储其他存储资源,例如 Blob 容器、队列或表。 文件共享可部署到事务优化层(默认)、热层或冷层中。
FileStorage 存储帐户:使用 FileStorage 存储帐户可以在高级/基于固态磁盘(基于 SSD)的硬件上部署 Azure 文件共享。 FileStorage 帐户只能用于存储 Azure 文件共享;其他存储资源(Blob 容器、队列、表等)都不能部署在 FileStorage 帐户中。
属性 | GPv2 存储帐户(标准) | FileStorage 存储帐户(高级) |
---|---|---|
每个订阅每个区域的存储帐户数 | 250 | 250 |
最大存储帐户容量 | 5 PiB1 | 100 TiB(预配值) |
最大文件共享数 | 无限制 | 无限制,所有共享的总预配大小必须小于最大存储帐户容量 |
最大并发请求速率 | 20,000 IOPS1 | 100,000 IOPS |
LRS/GRS 的吞吐量(流入量 + 流出量)
|
|
10,340 MiB/秒 |
ZRS 的吞吐量(流入量 + 流出量)
|
|
10,340 MiB/秒 |
上一行中未列出的冗余/区域组合的吞吐量(流入量 + 流出量) |
|
10,340 MiB/秒 |
虚拟网络规则的数目上限 | 200 | 200 |
IP 地址规则的数目上限 | 200 | 200 |
管理读取操作数目 | 每 5 分钟 800 次 | 每 5 分钟 800 次 |
管理写入操作数目 | 每秒 10 次/每小时 1200 次 | 每秒 10 次/每小时 1200 次 |
管理列出操作数目 | 每 5 分钟 100 次 | 每 5 分钟 100 次 |
1 常规用途版本 2 存储帐户根据请求支持更高的容量上限和更高的流入量上限。 若要请求增加帐户限制,请与 Azure 支持联系。
Azure 文件共享缩放目标
Azure 文件共享缩放目标应用于文件共享级别。
属性 | 标准文件共享1 | 高级文件共享 |
---|---|---|
文件共享的最小大小 | 无最小值 | 100 GiB(预配值) |
预配大小增加/减少单位 | 空值 | 1 GiB |
文件共享的最大大小 |
|
100 TiB |
文件共享中的文件数上限 | 无限制 | 无限制 |
最大请求速率(最大 IOPS) |
|
|
单个文件共享的吞吐量(流入量 + 流出量)(MiB/秒) |
|
100 + CEILING(0.04 * ProvisionedStorageGiB) + CEILING(0.06 * ProvisionedStorageGiB) |
共享快照的最大数目 | 200 个快照 | 200 个快照 |
最大对象名称长度3(完整路径名,包括所有目录、文件名和反斜杠字符) | 2,048 个字符 | 2,048 个字符 |
单个路径名组件的最大长度3(在路径 \A\B\C\D 中,每个字母代表一个目录或文件,该目录或文件是一个单独组件) | 255 个字符 | 255 个字符 |
硬链接限制(仅限 NFS) | 不可用 | 178 |
SMB 多路通道的最大数量 | 不适用 | 4 |
每个文件共享的存储的访问策略的最大数目 | 5 | 5 |
1 标准文件共享的限制适用于标准文件共享可用的所有三个层:事务优化层、热层和冷层。
2 标准文件共享的默认大小为 5 TiB,请参阅创建 Azure 文件共享以了解如何创建大小为 100 TiB 的文件共享以及如何将现有的标准文件共享增加至 100 TiB。 要利用更大的缩放目标,必须更改配额,使其大于 5 TiB。
3 Azure 文件存储对目录和文件名强制实施某些命名规则。
文件缩放目标
文件缩放目标适用于存储在 Azure 文件共享中的单个文件。
属性 | 标准文件共享中的文件 | 高级文件共享中的文件 |
---|---|---|
文件大小上限 | 4 TiB | 4 TiB |
最大并发请求速率 | 1,000 IOPS | 最高 8,0001 |
文件的最大流入量 | 60 MiB/秒 | 200 MiB/秒(使用 SMB 多通道最多 1 GiB/秒)2 |
文件的最大流出量 | 60 MiB/秒 | 300 MiB/秒(使用 SMB 多通道最多 1 GiB/秒)2 |
每个文件、目录和共享根的最大并发句柄数3 | 2,000 个句柄 | 2,000 个句柄 |
1 适用于读取和写入 I/O(通常较小的 I/O 大小小于或等于 64 KiB)。 读取和写入操作之外的元数据操作数目可能更低。
2 受计算机网络限制、可用带宽、I/O 大小、队列深度等因素的影响。 有关详细信息,请参阅 SMB 多通道性能。
3 Azure 文件存储支持每个共享使用 2,000 个打开的句柄,在实践中此数目可以更高。 但是,如果应用程序在共享的根目录上保留一个打开的句柄,则会在达到单文件或单目录限制之前达到共享根限制。
Azure 文件同步规模目标
下表指示哪个目标是软目标,表示 Microsoft 测试的边界;哪个目标是硬目标,表示强制实施的最大值:
资源 | 目标 | 硬限制 |
---|---|---|
每个区域的存储同步服务数 | 100 个存储同步服务 | 是 |
每个存储同步服务的同步组数 | 200 个同步组 | 是 |
每个存储同步服务的已注册服务器 | 99 台服务器 | 是 |
每个同步组的云终结点数 | 1 个云终结点 | 是 |
每个同步组的服务器终结点数 | 100 个服务器终结点 | 是 |
每个服务器的服务器终结点数 | 30 个服务器终结点 | 是 |
每个同步组的文件系统对象数(目录和文件) | 1 亿个对象 | 否 |
一个目录中的最大文件系统对象(目录和文件)数(非递归) | 500 万个对象 | 是 |
最大对象(目录和文件)安全描述符大小 | 64 KiB | 是 |
文件大小 | 100 GiB | 否 |
要进行分层的文件的最小文件大小 | 基于文件系统群集大小(双文件系统群集大小)。 例如,如果文件系统群集大小为 4 KiB,则最小文件大小为 8 KiB。 | 是 |
注意
Azure 文件同步终结点可以纵向扩展到 Azure 文件共享的大小。 如果达到 Azure 文件共享大小限制,同步将无法运行。
Azure 文件同步性能指标
因为 Azure 文件同步代理在连接到 Azure 文件共享的 Windows Server 计算机上运行,所以实际的同步性能取决于基础结构中的许多元素:Windows Server 和基础磁盘配置、服务器与 Azure 存储之间的网络带宽、文件大小、总数据集大小以及数据集上的活动。 由于 Azure 文件同步在文件级别工作,因此应该通过每秒处理的对象数(文件和目录)这一指标来度量基于 Azure 文件同步的解决方案的性能特征。
对于 Azure 文件同步,性能在两个阶段至关重要:
- 初始一次性预配:若要优化初始预配的性能,请参阅使用 Azure 文件同步进行载入来了解最佳部署详细信息。
- 持续同步:在 Azure 文件同步中初次植入数据后,Azure 文件同步会使多个终结点保持同步。
注意
当同一同步组中的许多服务器终结点同时同步时,它们会争用云服务资源。 因此,上传性能会受影响。 在极端情况下,某些同步会话将无法访问资源,因此会失败。 但是,在拥塞缓解后,这些同步会话将很快恢复,最终会成功。
为帮助你计划每个阶段的部署,下面提供了在采用某个配置的系统上进行内部测试期间观察到的结果
系统配置 | 详细信息 |
---|---|
CPU | 64 个带 64 MiB L3 高速缓存的虚拟内核 |
内存 | 128 GiB |
磁盘 | 采用 RAID 10 且带有以电池供电的高速缓存的 SAS 磁盘 |
网络 | 1 Gbps 网络 |
工作负荷 | 常规用途文件服务器 |
初始的一次性预配 | 详细信息 |
---|---|
对象数 | 2500 万个对象 |
数据集大小 | ~4.7 TiB |
平均文件大小 | ~200 KiB(最大的文件:100 GiB) |
初始云更改枚举 | 每秒 80 个对象 |
上传吞吐量 | 每个同步组每秒 20 个对象 |
命名空间下载吞吐量 | 每秒 400 个对象 |
初始的一次性预配
初始云更改枚举:创建新的同步组后,初始云更改枚举是将执行的第一个步骤。 在此过程中,系统将枚举 Azure 文件共享中的所有项。 在此过程中,将不会有任何同步活动,即不会将任何项从云终结点下载到服务器终结点,并且不会将任何项从服务器终结点上传到云终结点。 初始云更改枚举完成后,同步活动才会继续。 性能速率为每秒 80 个对象。 客户可通过确定云共享中的项目数并使用以下公式获取时间(以天为单位)来估算完成初始云更改枚举所需的时间。
初始云枚举的时间(以天为单位)=(云终结点中的对象数)/(80 * 60 * 60 * 24)
将数据从 Windows Server 初始同步到 Azure 文件共享:许多 Azure 文件同步部署从一个空的 Azure 文件共享开始,因为所有数据都在 Windows Server 上。 在这些情况下,初始云更改枚举速度很快,并且时间主要花费在将 Windows Server 中的更改同步到 Azure 文件共享中。
同步将数据上传到 Azure 文件共享时,本地文件服务器不会停机,管理员可设置网络限制来限制用于后台数据上传的带宽量。
初始同步通常受每个同步组每秒 20 个文件的初始上传速率限制。 客户可使用以下公式来估算将其所有数据上传到 Azure 所需的时间(以天为单位):
同步组上传文件所需的时间(以天为单位)=(服务器终结点中的对象数)/(20 * 60 * 60 * 24)
将数据拆分到多个服务器终结点和同步组可加快此初始数据上传速度,因为多个同步组可以以每秒 20 项的速率并行上传。 因此,两个同步组将以每秒 40 项的组合速率运行。 完成的总时间将会是需要同步最多文件的同步组的预估时间。
命名空间下载吞吐量 将新服务器终结点添加到现有同步组时,Azure 文件同步代理不会从云终结点下载任何文件内容。 它将首先同步整个命名空间,然后触发后台调用来将文件整体下载,或者根据服务器终结点上设置的云分层策略进行下载(如果启用了云分层)。
持续同步 | 详细信息 |
---|---|
同步的对象数 | 125,000 个对象(~1% 的改动) |
数据集大小 | 50 GiB |
平均文件大小 | ~500 KiB |
上传吞吐量 | 每个同步组每秒 20 个对象 |
完整下载吞吐量* | 每秒 60 个对象 |
*如果启用了云分层,则性能可能更好,因为只会下载一部分文件数据。 只有当已缓存文件的数据在任何终结点上发生更改时,Azure 文件同步才会下载这些数据。 对于任何已分层的或新创建的文件,代理不会下载文件数据,而仅会将命名空间同步到所有服务器终结点。 代理还支持在用户访问已分层文件时下载这些文件的一部分。
注意
上述数字不代表你会实现的性能。 实际性能将取决于本部分开头列出的多个因素。
作为常规部署指南,应当牢记以下几件事情:
- 对象吞吐量大约按服务器上的同步组数量成比例缩放。 在服务器上将数据拆分到多个同步组会实现更好的吞吐量,吞吐量还受限于服务器和网络。
- 对象吞吐量与每秒 MiB 数这一吞吐量成反比。 对于较小的文件,每秒处理的对象数这一吞吐量较高,但每秒 MiB 数这一吞吐量较低。 相反,对于较大的文件,每秒处理的对象数较少,但每秒 MiB 数这一吞吐量较高。 每秒 MiB 数这一吞吐量受限于 Azure 文件规模目标。