本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon S3 文件网关的工作原理
要使用 S3 文件网关,首先要下载网关的虚拟机映像。然后,您可以通过 AWS Management Console 或通过 Storage Gateway API 激活网关。您也可以使用 Amazon EC2 映像创建 S3 文件网关。
激活 S3 文件网关后,您可以创建和配置文件共享,并将该共享与您的亚马逊简单存储服务 (Amazon S3) Service 存储桶关联。这样做可以让使用网络文件系统 (NFS) 或服务器消息块 (SMB) 协议的客户端访问共享。写入文件共享的文件将变成 Amazon S3 中的对象,路径作为密钥。文件和对象之间存在 one-to-one映射,当您更改文件时,网关会异步更新 Amazon S3 中的对象。Amazon S3 存储桶中的现有对象在文件系统中显示为文件,密钥变为路径。对象使用亚马逊 S3 服务器端加密密钥 (SSE-S3) 进行加密。所有数据传输都是通过 HTTPS 完成的。
向 Amazon S3 发送 HTTPS 数据上传请求时,文件网关会使用正在上传的数据的 MD5 校验和填充内容MD5 标头。如果 Amazon S3 计算的 MD5 校验和与从文件网关收到的值不匹配,则使用此标头会导致 Amazon S3 返回失败。如果返回此类故障,文件网关将重新发送请求。
该服务优化了网关之间的数据传输,并 AWS 使用多部分并行上传或字节范围下载,以更好地利用可用带宽。维护本地缓存是为了提供对最近访问的数据的低延迟访问并减少数据出站费用。 CloudWatch 指标可以深入了解虚拟机上的资源使用情况以及数据传入和传出情况 AWS。 CloudTrail 跟踪所有 API 调用。
借助 S3 文件网关存储,您可以执行诸如将云工作负载提取到 Amazon S3、执行备份和存档、分层以及将存储数据迁移到云端等任务。 AWS 下图概述了 Storage Gateway 的文件存储部署。

将文件上传到 Amazon S3 时,S3 文件网关会将文件转换为 S3 对象。在 S3 File Gateway 和 S3 对象上对文件共享执行的文件操作之间的交互要求在文件和对象之间进行转换时仔细考虑某些操作。
常见文件操作会更改文件元数据,这会导致删除当前 S3 对象并创建新的 S3 对象。下表显示了示例文件操作及其对 S3 对象的影响。
文件操作 | S3 对象的影响 | 存储类含义 |
---|---|---|
重命名文件 |
替换现有的 S3 对象并为每个文件创建一个新的 S3 对象 |
可能会收取提前删除费和取回费 |
重命名文件夹 |
替换所有现有 S3 对象并为文件夹结构中的每个文件夹和文件创建新的 S3 对象 |
可能会收取提前删除费和取回费 |
更改 file/folder 权限 |
替换现有的 S3 对象并为每个文件或文件夹创建一个新的 S3 对象 |
可能会收取提前删除费和取回费 |
更改 file/folder 所有权 |
替换现有的 S3 对象并为每个文件或文件夹创建一个新的 S3 对象 |
可能会收取提前删除费和取回费 |
追加到文件中 |
替换现有的 S3 对象并为每个文件创建一个新的 S3 对象 |
可能会收取提前删除费和取回费 |
当 NFS 或 SMB 客户端将文件写入 S3 文件网关时,文件网关会将文件的数据上传到 Amazon S3,然后上传其元数据(所有权、时间戳等)。上传文件数据会创建 S3 对象,上传该文件的元数据会更新 S3 对象的元数据。此过程会创建对象的另一个版本,从而生成一个对象的两个版本。如果 S3 版本控制已开启,则两个版本都将被存储。
将文件上传到 Amazon S3 后,当 NFS 或 SMB 客户端在 S3 文件网关中对其进行修改时,S3 文件网关会上传新的或修改过的数据,而不是上传整个文件。文件修改会导致创建 S3 对象的新版本。
当 S3 文件网关上传较大的文件时,它可能需要在客户端完成对 S3 文件网关的写入之前上传较小的文件块。造成这种情况的一些原因包括释放缓存空间或对文件共享的高写入速率。这可能会导致 S3 存储桶中存在一个对象的多个版本。
在设置生命周期策略以将对象移动到不同的存储类别之前,您应该监控您的 S3 存储桶以确定对象存在多少个版本。您应该为以前的版本配置生命周期过期时间,以最大限度地减少 S3 存储桶中对象的版本数。在 S3 存储桶之间使用同区域复制 (SRR) 或跨区域复制 (CRR) 将增加使用的存储空间。