

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Amazon S3 文件网关的工作原理
S3 文件网关的工作原理

要使用 S3 文件网关，请首先下载网关的 VM 映像。然后，您可以通过 Amazon Web Services 管理控制台 或通过 Storage Gateway API 激活网关。您也可以使用 Amazon EC2 映像创建 S3 文件网关。

在 S3 文件网关激活后，您可创建和配置文件共享并将该共享与您的 Amazon Simple Storage Service（Amazon S3）存储桶关联。执行此操作将使客户端可以使用网络文件系统（NFS）或服务器信息块（SMB）协议访问该共享。写入到文件共享的文件将成为 Amazon S3 中的对象，使用路径作为密钥。文件和对象之间存在 one-to-one映射，当您更改文件时，网关会异步更新 Amazon S3 中的对象。Amazon S3 存储桶中的现有对象显示为文件系统中的文件，而密钥成为路径。使用 Amazon S3 服务器端加密密钥（SSE-S3）对对象进行加密。所有数据传输都是通过 HTTPS 完成的。

向 Amazon S3 发送 HTTPS 数据上传请求时，文件网关会使用正在上传的数据的 MD5 校验和填充内容MD5 标头。如果 Amazon S3 计算的 MD5 校验和与从文件网关收到的值不匹配，则使用此标头会导致 Amazon S3 返回失败。如果返回此类故障，文件网关将重新发送请求。

该服务优化了网关之间的数据传输，并 Amazon 使用多部分并行上传或字节范围下载，以更好地利用可用带宽。维护本地缓存是为了提供对最近访问的数据的低延迟访问并减少数据出站费用。 CloudWatch 指标可以深入了解虚拟机上的资源使用情况以及数据传入和传出情况 Amazon。 CloudTrail 跟踪所有 API 调用。

利用 S3 文件网关存储，您可以执行多个任务，例如将云工作负载注入 Amazon S3、执行备份和存档以及将存储数据迁移到 Amazon 云。下图概述了 Storage Gateway 的文件存储部署。

![\[Storage Gateway 将应用程序服务器连接到 Amazon S3 云存储。\]](http://docs.amazonaws.cn/filegateway/latest/files3/images/file-gateway-concepts-diagram.png)


将文件上传到 Amazon S3 时，S3 文件网关会将文件转换为 S3 对象。文件操作在 S3 文件网关上的文件共享与 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）将增加使用的存储空间。