

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

# 什么是 Amazon S3 文件网关
<a name="what-is-file-s3"></a>

**Amazon S3 文件网关** – Amazon S3 文件网关支持连接到 [Amazon Simple Storage Service（Amazon S3）](https://docs.aws.amazon.com//AmazonS3/latest/userguide/Welcome.html)的文件接口，并将服务和虚拟软件设备组合在一起。通过使用此组合，可以使用行业标准文件协议 [如网络文件系统（NFS）和服务器消息块（SMB）] 在 Amazon S3 中存储和检索对象。您可以将网关作为运行在 Microsoft Hyper-V 或基于 Linux 内核的虚拟机 (KVM) 上 VMware ESXi运行的虚拟机 (VM)，或者作为从首选经销商处订购的硬件设备部署到本地环境中。你也可以在 VMware云端部署 Storage Gateway 虚拟机 AWS，或者在亚马逊中作为 AMI 部署 EC2。利用网关，可以将 S3 中的对象作为文件或文件共享挂载点进行访问。利用 S3 文件网关，您可以：
+ 您可以直接使用 NFS 版本 3 或 4.1 协议存储和检索文件。
+ 您可以直接使用 SMB 文件系统版本 2 和 3 协议存储和检索文件。
+ 您可以直接在 Amazon S3 中通过任何 AWS 云应用程序或服务访问您的数据。
+ 您可以使用生命周期策略、跨区域复制和版本控制管理 S3 数据。您可以将 S3 文件网关视为 Amazon S3 上挂载的文件系统。

S3 文件网关简化了 Amazon S3 中的文件存储，通过行业标准文件系统协议集成到现有应用程序中，并提供了对本地存储的经济高效的替代方法。它还通过透明本地缓存提供对数据的低延迟访问。S3 文件网关管理数据传入和传出 AWS，缓冲应用程序免受网络拥塞的影响，并行优化和流式传输数据，并管理带宽消耗。

S3 文件网关与其他 AWS 服务集成，例如：
+ 使用 AWS Identity and Access Management (IAM) 进行常见访问管理
+ 使用 AWS Key Management Service (AWS KMS) 进行加密
+ 使用 Amazon 进行监控 CloudWatch (CloudWatch)
+ 使用 AWS CloudTrail (CloudTrail) 进行审计
+ 使用 AWS 管理控制台 和 AWS Command Line Interface (AWS CLI) 的操作
+ 账单和成本管理

在以下文档中，您可以找到包含对所有网关通用的设置信息的“入门”部分，还可以找到一些特定于网关的设置部分。“入门”部分介绍了如何为网关部署、激活和配置存储。“管理”部分介绍了您可以如何管理网关和资源：
+  提供有关如何创建和使用 S3 文件网关的说明。其中演示了如何创建文件共享、将驱动器映射到 Amazon S3 存储桶以及将文件和文件夹上传到 Amazon S3。
+  介绍如何为所有网关类型和资源执行管理任务。

在本指南中，您主要可以找到如何使用 AWS 管理控制台执行网关操作。如果要以编程方式执行这些操作，请参阅《[AWS Storage Gateway API 参考](https://docs.aws.amazon.com/storagegateway/latest/APIReference/)》。**

# Amazon S3 文件网关的工作原理
<a name="file-gateway-concepts"></a>

要使用 S3 文件网关，请首先下载网关的 VM 映像。然后，您可以通过 AWS 管理控制台 或通过 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 返回失败。如果返回此类故障，文件网关将重新发送请求。

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

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

![\[Storage Gateway 将应用程序服务器连接到 Amazon S3 云存储。\]](http://docs.aws.amazon.com/zh_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）将增加使用的存储空间。