Azure 存储简介
Azure 存储平台是 Microsoft 提供的适用于现代数据存储方案的云存储解决方案。 Azure 存储为云中的各种数据对象提供具有高可用性、可大规模缩放、持久且安全的存储。 借助 REST API,可以通过 HTTP 或 HTTPS 从世界上的任何位置访问 Azure 存储数据对象。 Azure 存储还为使用 .NET、Java、Python、JavaScript、C++ 和 Go 生成应用程序或服务的开发人员提供了客户端库。 开发人员和 IT 专业人员可以使用 Azure PowerShell 和 Azure CLI 针对数据管理或配置任务编写脚本。 Azure 门户和 Azure 存储资源管理器提供了用于与 Azure 存储进行交互的用户界面工具。
Azure 存储的优点
Azure 存储服务为应用程序开发人员和 IT 专业人员提供了以下好处:
- 持久且具有高可用性。 冗余可确保数据在发生短暂的硬件故障时是安全的。 还可以选择在各个数据中心或地理区域之间复制数据,从而在发生本地灾难或自然灾害时提供额外的保护。 以此方式复制的数据在发生意外中断时将保持高可用性。
- 安全。 该服务会对写入到 Azure 存储帐户的所有数据进行加密。 Azure 存储可以精细地控制谁可以访问你的数据。
- 可缩放。 Azure 存储设计为可大规模缩放以满足当今的应用程序在数据存储和性能方面的需求。
- 托管的。 Azure 为你处理硬件维护、更新和关键问题。
- 可访问。 可以通过 HTTP 或 HTTPS 从世界上的任何位置访问 Azure 存储中的数据。 Microsoft 以各种语言(包括 NET、Java、Node.js、Python、Go 和其他语言)提供了适用于 Azure 存储的客户端库以及成熟的 REST API。 Azure 存储支持通过 Azure PowerShell 或 Azure CLI 运行脚本。 而且,Azure 门户和 Azure 存储资源管理器提供了用于处理数据的简单可视化解决方案。
Azure 存储数据服务
Azure 存储平台包括以下数据服务:
- Azure Blob:适用于文本和二进制数据的可大规模缩放的对象存储。 还包括通过 Data Lake Storage 支持大数据分析。
- Azure 文件:适用于云或本地部署的托管文件共享。
- Azure 队列:用于在应用程序组件之间进行可靠的消息传送的消息存储。
- Azure 表:一种 NoSQL 存储,适合用作结构化数据的无架构存储。
- Azure 托管磁盘:Azure VM 的块级存储卷。
每个服务都通过具有唯一地址的存储帐户进行访问。 若要开始使用,请参阅创建存储帐户。
Azure 存储服务的示例方案
下表比较了 Azure 存储服务,并显示了每个服务的示例方案。
功能 | 说明 | 使用时机 |
---|---|---|
Azure 文件 | 提供完全托管的云文件共享,这些共享可通过行业标准的服务器消息块 (SMB) 协议、网络文件系统 (NFS) 协议和 Azure 文件存储 REST API 从任何位置进行访问。 你可以在云或 Windows、Linux 和 macOS 的本地部署装载 Azure 文件共享。 |
希望将已使用本机文件系统 API 的应用程序直接迁移到云中,以在该应用程序与 Azure 中运行的其他应用程序之间共享数据。 希望替换或补充本地文件服务器或 NAS 设备。 希望存储需要从多个虚拟机访问的开发和调试工具时。 |
Azure Blobs | 允许在块 blob 中大规模存储和访问非结构化数据。 还支持 Azure Data Lake Storage,用于企业大数据分析解决方案。 |
希望应用程序支持流式处理和随机访问方案时。 希望可以从任何位置访问应用程序数据时。 想要在 Azure 上生成企业数据湖并执行大数据分析。 |
Azure 磁盘 | 允许数据永久存储在附加虚拟硬盘中并从中进行访问。 | 希望直接迁移使用本机文件系统 API 将数据读写到永久磁盘中的应用程序。 需要存储不需要从磁盘附加到的虚拟机外部访问的数据。 |
Azure 队列 | 允许应用程序组件之间存在异步消息队列。 | 希望分离应用程序组件,并传递异步消息以实现这些组件间的通信。 要查看关于何时使用队列存储和服务总线队列的指南,请参阅存储队列和服务总线队列 - 比较与对照。 |
Azure 表 | 允许在云中存储结构化 NoSQL 数据,通过无架构设计提供键/属性存储。 | 希望存储灵活的数据集,例如 Web 应用程序的用户数据、通讯簿、设备信息,或者服务需要的其他类型的元数据。 若要查看关于何时使用表存储与 Azure Cosmos DB for Table 的指南,请参阅使用 Azure Cosmos DB for Table 和 Azure 表存储进行开发。 |
Blob 存储
Azure Blob 存储是 Microsoft 提供的适用于云的对象存储解决方案。 Blob 存储最适合存储巨量的非结构化数据,例如文本或二进制数据。
Blob 存储最适合用于:
- 直接向浏览器提供图像或文档。
- 存储文件以供分布式访问。
- 对视频和音频进行流式处理。
- 存储用于备份和还原、灾难恢复及存档的数据。
- 存储数据以供本地或 Azure 托管服务执行分析。
可以通过 HTTP 或 HTTPS 从世界上的任何地方访问 Blob 存储中的对象。 用户或客户端应用程序可以通过 URL、Azure 存储 REST API、Azure PowerShell、Azure CLI 或 Azure 存储客户端库访问 Blob。 存储客户端库以多种语言提供,包括 .NET、Java、Node.js 和 Python。
客户端还可以使用 SSH 文件传输协议 (SFTP) 安全地连接到 Blob 存储,并使用网络文件系统 (NFS) 3.0 协议装载 Blob 存储容器。
有关 Blob 存储的详细信息,请参阅 Blob 存储简介。
Azure 文件
使用 Azure 文件存储,你可以设置高度可用的网络文件共享,这些共享可以使用行业标准的服务器消息块 (SMB) 协议、网络文件系统 (NFS) 协议和 Azure 文件存储 REST API 进行访问。 这意味着,多个 VM 可以共享启用了读取和写入访问权限的相同文件。 也可使用 REST 接口或存储客户端库来读取文件。
Azure 文件不同于公司文件共享的一点是,可以在全球任何地方使用 URL 来访问文件,只要该 URL 指向文件且包含共享访问签名 (SAS) 令牌即可。 可以生成 SAS 令牌,用于在指定时间内对私有资产进行特定访问。
文件共享适用于许多常用方案:
许多本地应用程序使用文件共享。 此功能可以更方便地迁移那些将数据共享到 Azure 的应用程序。 如果将文件共享装载到本地应用程序所使用的驱动器号,则应用程序中访问文件共享的那部分应尽量少做更改(如果必须进行更改的话)。
配置文件可以在一个文件共享上存储,从多个 VM 进行访问。 可以将一个组中多个开发人员使用的工具和实用程序存储到文件共享中,确保每个人都能找到它们并使用同一版本。
例如,资源日志、指标和故障转储是三种可以写入到文件共享供以后处理或分析的数据。
有关 Azure 文件的详细信息,请参阅 Azure 文件简介。
某些 SMB 功能不适用于云。 有关详细信息,请参阅 Azure 文件服务不支持的功能。
队列存储
Azure 队列服务用于存储和检索消息。 队列消息最大可以为 64 KB,一个队列可以包含数百万条消息。 队列通常用于存储需要异步处理的消息的列表。
例如,假设你需要客户能够上传图片,并且你需要创建每个图片的缩略图。 可以让客户在上传图片时等待你创建缩略图, 也可以使用队列。 当客户完成上传操作后,向队列写入一条消息。 然后通过 Azure Function 从队列检索该消息并创建缩略图。 此处理过程的每一部分都可以单独进行缩放,让你可以根据使用情况进行调整,加强控制。
有关 Azure 队列的详细信息,请参阅队列简介。
表存储
Azure 表存储现在是 Azure Cosmos DB 的一部分。 若要查看 Azure 表存储文档,请参阅 Azure 表存储概述。 除了现有的 Azure 表存储服务,还有新的 Azure Cosmos DB for Table 产品/服务,后者提供吞吐量优化表、全局分发和自动辅助索引。 若要详细了解并尝试新的高级体验,请查看 Azure Cosmos DB for Table。
有关表存储的详细信息,请参阅 Azure 表存储概述。
磁盘存储
Azure 托管磁盘是虚拟硬盘 (VHD)。 可以将其视为本地服务器中的物理磁盘,但它是虚拟化的。 Azure 托管磁盘作为页 blob 存储,后者是 Azure 中的随机 IO 存储对象。 我们之所以将托管磁盘称为“托管”,是因为它是对页 blob、blob 容器和 Azure 存储帐户的抽象。 对于托管磁盘,你所要做的就是预配磁盘,而 Azure 负责其余的工作。
有关托管磁盘的详细信息,请参阅 Azure 托管磁盘简介。
存储帐户的类型
Azure 存储提供多种类型的存储帐户。 每种类型支持不同的功能,并且具有自己的定价模型。 有关存储帐户类型的详细信息,请参阅 Azure 存储帐户概述。
保护对存储帐户的访问
对 Azure 存储的每个请求必须获得授权。 Azure 存储支持以下授权方法:
- Blob、文件、队列和表数据的 Microsoft Entra 集成。 Azure 存储支持通过 Azure 基于角色的访问控制 (Azure RBAC) 使用 Microsoft Entra ID 对 Blob、文件、表和队列服务进行身份验证和授权。 建议使用 Microsoft Entra ID 对请求进行授权,以确保实现最高的安全性和易用性。 有关详细信息,请参阅授权访问 Azure 存储中的数据。 请参阅授权访问 Azure 门户中的文件数据,以使用 Microsoft Entra 帐户授权访问文件数据。
- 通过 SMB 对 Azure 文件存储进行基于标识的身份验证。 Azure 文件存储支持使用本地 Active Directory 域服务 (AD DS)、Microsoft Entra 域服务或 Microsoft Entra Kerberos(仅限混合用户帐户)通过 SMB(服务器消息块)进行基于标识的授权。 有关详细信息,请参阅支持 SMB 访问的 Azure 文件存储基于标识的身份验证概述和规划 Azure 文件存储部署。
- 通过共享密钥进行授权。 Azure 存储 Blob、文件、队列和表服务支持通过共享密钥授权。 使用共享密钥授权的客户端会随使用存储帐户访问密钥签名的每个请求传递一个标头。 有关详细信息,请参阅通过共享密钥进行授权。
- 使用共享访问签名 (SAS) 进行授权。 共享访问签名 (SAS) 是一个字符串,其中包含的安全令牌可以追加到存储资源的 URI。 安全令牌封装了各种约束,例如权限、访问时间间隔。 有关详细信息,请参阅使用共享访问签名 (SAS)。
加密
有两种适用于 Azure 存储的基本加密类型。 若要详细了解安全性和加密,请参阅 Azure 存储安全指南。
静态加密
Azure 存储加密可保护数据,使组织能够信守在安全性与合规性方面作出的承诺。 Azure 存储先自动加密所有数据,再将数据保存到存储帐户,然后在检索之前解密数据。 加密、解密和密钥管理过程对用户透明。 客户也可选择使用 Azure Key Vault 管理自己的密钥。 有关详细信息,请参阅静态数据的 Azure 存储加密。
客户端加密
Azure 存储客户端库提供的方法用于加密客户端库的数据,然后通过网络发送数据并解密响应。 通过客户端加密加密的数据也通过 Azure 存储进行静态加密。 有关客户端加密的详细信息,请参阅 Azure 存储的使用 .NET 的客户端加密。
冗余
为了确保数据的持久性,Azure 存储会存储多个数据副本。 设置存储帐户时,可选择冗余选项。 有关详细信息,请参阅 Azure 存储冗余。
将数据传入和传出 Azure 存储
有多个选项用于将数据移入或移出 Azure 存储。 选择哪个选项取决于数据集的大小和网络带宽。 有关详细信息,请参阅选择 Azure 数据传输解决方案。
定价
决定如何存储和访问数据时,还应考虑涉及的成本。 有关详细信息,请参阅 Azure 存储定价。
存储 API、库和工具
可以通过发出 HTTP/HTTPS 请求时采用的任何语言来访问存储帐户中的资源。 另外,Azure 存储还为几种主流语言提供了编程库。 这些库通过对细节进行处理简化了使用 Azure 存储的许多方面,这些细节包括同步和异步调用、操作的批处理、异常管理、自动重试、操作行为,等等。 这些库当前可供下列语言和平台以及正在筹备的其他语言和平台使用:
Azure 存储数据 API 和库参考
- Azure 存储 REST API
- 适用于 .NET 的 Azure 存储客户端库
- 适用于 Java 的 Azure 存储客户端库
- 适用于 JavaScript 的 Azure 存储客户端库
- 适用于 Python 的 Azure 存储客户端库
- 适用于 Go 的 Azure 存储客户端库
- 适用于 C++ 的 Azure 存储客户端库
Azure 存储管理 API 和库参考
Azure 存储数据移动 API
工具和实用程序
- 适用于存储的 Azure PowerShell Cmdlet
- 适用于存储的 Azure CLI Cmdlet
- AzCopy 命令行实用程序
- Azure 存储资源管理器是 Microsoft 免费提供的独立应用,适用于在 Windows、macOS 和 Linux 上以可视方式处理 Azure 存储数据。
- 用于 Azure 存储的 Azure 资源管理器模板
后续步骤
若要启动并运行 Azure 存储,请参阅创建存储帐户。