万字长文:基于混合云存储架构的文件网关实践

译者序

充分利用混用云存储,可以实现灵活的存储分层,获得云存储灵活和几乎无限的存储空间,优化成本。但是混合云存储文件网关的搭建有许多技巧,也有不同场景的实践,本文介绍了混合云存储文件网关的概念和实践,对于用户有很好的指导作用。

1. 摘要

组织正在寻找减少物理数据中心占用的方法,特别是对于用作辅助文件备份或按需工作负载的存储阵列。然而,提供连接私有数据中心和云的数据服务带来了一系列独特的挑战。传统的数据中心存储服务依赖于低延迟网络附加存储(NAS)和存储区域网络(SAN)协议来访问本地存储。云原生应用程序针对API访问可伸缩且持久的云对象存储(如AmazonSimple storage Service, Amazon S3)中的数据进行了优化。本文概述了在文件网关配置中使用AWS存储网关构建混合云存储环境的基本体系架构和最佳实践,以处理关键用例,如云分层、混合云备份、分发和对本地应用程序生成的数据的云处理。

2. 简介

组织正在寻找减少其物理数据中心基础设施的方法。一个很好的方法是将次要或第三级工作负载(比如长期文件保存和备份及恢复操作)转移到云上。此外,组织希望利用云架构和特性的灵活性,以传统数据中心基础设施无法支持的新方式访问和使用它们的数据。

AWS存储网关有多种网关类型,包括一个文件网关,它提供对Amazon 简单存储服务(Amazon S3)对象的低延迟网络文件系统(NFS)和服务器消息块(SMB)访问。同时,客户可以从任何支持Amazon S3 api的应用程序访问这些数据。将AWS存储网关配置为文件网关,可以在用例中使用混合云存储体系结构,例如归档、按需爆发工作负载和备份到AWS云。

单个文件使用文件网关写入Amazon S3存储为独立的对象。这提供了高耐用性、低成本、灵活的存储和几乎无限的容量。文件在Amazon S3中以原始格式存储为对象,没有任何专有的修改。这意味着数据分析和机器学习应用程序以及与Amazon S3 bucket(如Amazon EMR、Amazon Athena或Amazon Transcribe)集成的服务可以很容易地获得数据。它还允许通过原生Amazon S3特性进行存储管理,比如生命周期策略、分析和跨区域复制(CRR)。

文件网关能在私有数据中心和AWS之间有效地通信。传统的NAS协议(SMB和NFS)被转换为对象存储API调用。这使得文件网关成为寻求分层存储文件或备份数据的组织的理想组件,这些数据具有低延迟的本地访问和云中的持久存储。

3. 文件网关架构

文件网关提供了一个简单的解决方案,可以将一个或多个AmazonS3 bucket及其对象作为可挂载NFS或SMB文件共享提供给一个或多个客户端。

文件网关作为虚拟机部署在VMware ESXi或Microsoft Hyper-V环境中,或者部署在AWS中的Amazon Elastic Compute Cloud (Amazon EC2)实例中。文件网关还可以部署在数据中心和存储网关硬件设备(Storage Gateway hardwareappliance)上的远程办公位置。部署时,文件网关提供了NFS (v3.0或v4.1)或SMB (v1或v2)客户机(通常是应用程序)与驻留在给定AWS区域中的Amazon S3 bucket之间的无缝连接。文件网关使用本地读/写缓存来为在与文件网关相同的局域网(LAN)中的客户机之间的共享文件数据的低延迟访问。

bucket共享由一个跨Amazon S3 bucket的文件网关承载的文件共享组成。文件网关虚拟机设备目前最多支持10个bucket共享。

万字长文:基于混合云存储架构的文件网关实践|附PDF下载

图 1: 文件网关基本架构

下面是文件网关体系架构的组件,如图1所示:

  1. 在文件网关配置中,使用通过AWS存储网关导出的NFS或SMB文件共享以文件的形式访问对象。
  2. 文件网关的可扩展读/写缓存。
  3. 文件网关虚拟设备。
  4. Amazon S3,为使用文件网关写入的所有文件提供持久性对象存储。

3.1文件到对象映射

在部署、激活和配置文件网关之后,可以向支持NFS v3或v4.1协议的客户端提供一个或多个bucket共享,或者通过本地LAN上的SMB v1或v2协议映射到一个共享。网关上的每个共享(或挂载点)都与一个bucket配对,bucket的内容可以作为共享中的文件和文件夹使用。

将单个文件写入文件网关上的共享会在关联的bucket中创建同名对象。

所有新创建的对象都被写入Amazon S3 Standard,Amazon S3 Standard —不频繁访问(S3 Standard – IA)或Amazon S3 One Zone —不频繁访问(S3 One Zone – IA)存储类,这取决于共享的配置。

新创建对象的Amazon S3键名与写入AWS存储网关中的挂载点的文件的完整路径相同

万字长文:基于混合云存储架构的文件网关实践|附PDF下载

图 2:通过NFS存储到Amazon S3对象的文件网关映射上的文件

在Amazon S3中存储数据与传统文件系统的一个区别是权限粒度的实现和元数据的存储方式。存储在Amazon S3和AWS标识和访问管理(IAM)中的策略来保护对直接存储在Amazon S3中的文件的访问。所有其他属性,如存储类和创建日期,都被存储在给定对象的元数据中。

为了可靠地保存文件权限和属性,文件网关将这些信息存储为AmazonS3对象元数据的一部分。如果通过NFS或SMB更改文件的权限,网关将修改存储在Amazon S3中的关联对象的元数据来反映更改。当从AWS管理控制台或使用文件网关API创建共享时,将为bucket中所有现有的S3对象定义自定义缺省UNIX权限。该特性允许从具有现有内容的bucket中创建NFS或SMB启用的共享,而不必在创建共享之后手动分配权限。

下面是一个文件示例,该文件存储在共享bucket中,并从基于linux的客户端列出,该客户端通过NFS挂载共享bucket。这个示例中的文件“file1.txt”具有修改日期和标准UNIX文件权限。

[e2-user@host]$ls -l /media/filegateway1/ total 1

-rw-rw-r–1 ec2-user ec2-user 36 Mar 15 22:49 file1.tx

t[e2-user@host]$

下面的示例显示了Amazon S3上head-object的输出。它从存储在Amazon S3中的对象的角度显示了相同的文件。注意,前面示例中的权限和时间戳作为对象的元数据持久存储。

[e2-user@host]$aws s3api head-object –bucket filegateway1 –key file1.txt

{

“AcceptRanges”:”bytes”,

“ContentType”:”application/octet-stream”,

“LastModified”:”Wed, 15 Mar 2017 22:49:02 GMT”,

“ContentLength”:36,

“VersionId”:”93XCzHcBUHBSg2yP.8yKMHzxUumhovEC”,

“ETag”:””0a7fb5dbb1ae1f6a13c6b4e4dcf54977-1″”,

“ServerSideEncryption”:”AES256″,

“Metadata”:{

“file-group”:”500″,

“user-agent-id”:”sgw-7619FB1F”,

“file-owner”:”500″,

“aws-sgw”:”57c3c3e92a7781f868cb10020b33aa6b2859d58c868190661bcceae87f7b96f1″,

“file-mtime”:”1489618141421″,

“file-ctime”:”1489618141421″,

“user-agent”:”aws-storage-gateway”,

“file-permissions”:”0664″

}

}

[e2-user@host]$

3.2 读/写操作和本地缓存

作为文件网关部署的一部分,分配了专用的本地存储,为所有托管的共享bucket提供读/写缓存。读/写缓存大大提高了本地文件(NFS/SMB)操作的响应时间。本地缓存同时保存最近写的和最近读的内容,并且在缓存磁盘有空闲空间时不会主动删除数据。然而,当缓存已满时,AWS存储网关将基于最近最少使用的算法(LRU)释放数据。最近访问的数据可用于读取,且写入操作不受阻碍。

3.2.1 读操作(Read-Through缓存)

当NFS客户机执行读取请求时,文件网关首先检查请求数据的本地缓存。如果数据不在缓存中,则网关检索来自Amazon S3的数据并使用Range GET请求来最小化通过Internet传输的数据,同时代表客户机重新填充读缓存。

万字长文:基于混合云存储架构的文件网关实践|附PDF下载

图 3: 文件网关读操作

  1. NFS/SMB客户端对给定文件的一部分执行读请求。
  2. 文件网关首先检查是否在本地缓存了被请求的的字节。
  3. 如果字节不在本地缓存中,文件网关将在关联的S3对象上执行一个字节范围GET。

3.2.2 写操作 (Write-Back缓存)

当通过NFS/SMB将文件写入文件网关时,网关首先将写入提交到本地缓存。此时,本地NFS/SMB客户端已经确认写入成功,充分利用了局域网的低延迟。填充写缓存之后,文件将异步地传输到关联的Amazon S3 bucket,以提高Internet传输的本地性能。

当修改现有文件时,文件网关只将新写的字节传输到关联的AmazonS3 bucket。它使用Amazon S3 API调用,结合新上传的字节,从以前的版本构造一个新对象。这减少了客户端修改文件网关中现有文件时需要传输的数据量。

万字长文:基于混合云存储架构的文件网关实践|附PDF下载

图 4: 文件网关写操作

  1. 文件共享客户端对给定文件执行许多并行写入。
  2. 文件网关设备同步写入,聚合本地写入。
  3. 文件网关设备使用S3的multi-part上传功能向S3发送新的写(字节)。
  4. 在S3中,新对象由新上传的内容和对象的前一个版本的字节范围组合而成。

3.3选择正确的缓存资源

在主机上配置文件网关VM时,可以为本地缓存分配磁盘。选择能够充分保存活动工作集的缓存大小(例如数据库备份文件)可以为文件共享客户机提供最佳性能。此外,将缓存分割到多个磁盘可以通过并行访问存储来最大限度地提高吞吐量,从而提高读写速度。当本地网关可用时,我们还建议使用SSD或临时磁盘,它们可以提供高达500MB/s的写和读(缓存命中)吞吐量。

3.4 局域网中的安全和访问控制

当在已部署网关上创建挂载点(共享)时,选择一个Amazon S3 bucket作为文件和相关元数据的持久对象存储。默认UNIX权限定义为挂载点配置的一部分。这些权限应用于Amazon S3 bucket中的所有现有对象。此过程确保访问挂载点的客户端遵守现有内容的文件和目录级安全性。

此外,通过限制对单个主机或一系列主机的挂载访问,可以在LAN上保护整个挂载点及其关联的Amazon S3内容。

对于NFS文件共享,这个限制是通过使用无类域间路由(CIDR)块或单个IP地址来定义的。对于SMB文件共享,可以使用Active Directory (AD)域或经过身份验证的客户访问来控制访问。可以进一步限制对选定广告用户和组的访问,只允许指定的用户(或指定组中的用户)将文件共享映射为其MicrosoftWindows机器上的驱动器。

3.5监控缓存和流量

随着工作负载或体系结构的发展,与给定文件网关部署相关联的缓存和Internet需求可能会随着时间而变化。为了提供对资源使用的可见性,文件网关以Amazon CloudWatch指标的形式提供统计信息。指标包括缓存消耗、缓存命中/丢失、数据传输和读/写指标。有关更多信息,请参见监视文件共享。

3.6文件网关Bucket库存

为了减少执行列表操作时的延迟和Amazon S3操作的数量,文件网关存储一个本地bucket清单,其中包含最近列出的所有对象的记录。当文件共享客户机第一次列出文件共享的部分时,bucket库存按需填充。只有当网关本身代表客户端修改、删除或创建新对象时,文件网关才更新库存记录。文件网关无法通过与相同Amazon S3 bucket关联的辅助网关或文件网关外部的任何其他Amazon S3API调用检测NFS或SMB文件共享bucket中的对象的更改。

当Amazon S3对象必须在文件共享之外进行修改并由文件网关识别(例如Amazon EMR或其他AWS服务所做的更改)时,必须使用RefreshCache API调用或RefreshCache AWS命令行接口(CLI)命令刷新bucket inventory。刷新缓存可以手动调用,也可以使用CloudWatch事件自动调用,或者在使用辅助网关将文件写入文件共享之后,通过使用notifywhenupload API调用触发。一旦由辅助网关编写的文件上传到S3,就会触发一个名为Storage Gateway Upload notification的CloudWatch通知事件。此事件的目标可以是一个调用RefreshCache的Lambda函数,该函数将此更改通知主网关。

RefreshCache重新盘点文件网关的bucket inventory中的现有记录。这将已知对象的更改传递给访问给定文件的共享客户端。

万字长文:基于混合云存储架构的文件网关实践|附PDF下载

图 5:调用RefreshCacheAPI重新存储Amazon S3 bucket

  1. 由辅助网关或外部源创建的对象。
  2. 在文件网关设备共享上调用RefreshCache API。
  3. 外部对象反映在文件网关bucket目录中,客户端可以访问它。

3.7Bucket与多个贡献者共享

当部署更复杂的结构,例如当多个文件网关共享与一个AmazonS3 bucket关联,或在一个bucket被一个或多个文件网关与其他Amazon S3启用的程序修改的场景,注意文件网关不支持对象锁定或跨文件网关文件的一致性。

由于文件网关无法检测其他文件网关,所以在设计和部署使用多个文件网关共享同一个Amazon S3 bucket的解决方案时要谨慎。与同一个Amazon S3bucket关联的文件网关仅在以下情况下检测bucket中内容的新更改:

  1. 文件网关识别它对相关Amazon S3 bucket所做的更改,并可以在将文件写入共享之后调用notifywhenuploadAPI通知其他网关和应用程序。
  2. 当受影响的对象位于该特定文件网关未被查询过的文件夹(或前缀)中时,文件网关可以识别其他文件网关对对象所做的更改。
  3. 其他贡献者在与文件网关关联的AmazonS3 bucket (bucket share)中所作的更改,在执行了RefreshCacheAPI之后,文件网关能识别其中的改动。

我们建议在部署使用公共Amazon S3 bucket的多个网关时,在文件网关共享上使用只读挂载选项。一个避免读写冲突的简单方法是只使用一个写入和多读出的设计结构。如果需要多个写入,则访问每个网关的客户端必须是严格控制,以确保它们不会写入相同对象到共享的Amazon S3 bucket中。

当多个文件网关访问同一Amazon S3存储桶中的相同对象时,请确保在必须识别其他文件网关所做更改的文件网关共享上调用RefreshCache API。要进一步优化此操作并减少运行所需的时间,可以在共享中的特定文件夹(递归或非递归)上调用RefreshCache API。

万字长文:基于混合云存储架构的文件网关实践|附PDF下载

图6: RefreshCache API使文件网关#1创建的对象对文件网关#2可见

  1. 客户端创建新文件和文件网关 #1 将对象上传到S3。
  2. 客户在文件网关的文件共享上调用NotifyWhenUploaded API#1。
  3. CloudWatch事件(在步骤1完成时生成)启动RefreshCacheAPI调用以启动文件网关上的重新清点 #2。
  4. File gateway #2 presents newly created objects toclients。

3.8 Amazon S3和文件网关

文件网关使用Amazon S3存储桶为在单个网关上创建的每个安装点(共享)提供存储。使用Amazon S3存储桶时,挂载点提供无限容量,存储对象的持久性为99.999999999%,基于消耗的定价模型。

通过AWS Storage Gateway存储在Amazon S3中的数据的成本取决于网关所在的区域和存储类。给定的挂载点将数据直接写入AmazonS3 Standard,Amazon S3 Standard-IA或Amazon S3 One Zone-IA存储,具体取决于创建挂载点时选择的初始配置。所有这些存储类都提供相同的耐用性。但是,Amazon S3 Standard-IA和Amazon S3 One Zone-IA具有不同的定价模型和较低的可用性(即99.9%与99.99%相比),这使它们成为不常访问的对象的良好解决方案。Amazon S3 Standard-IA和Amazon S3 One Zone-IA的定价适用于存在超过30天且每个对象大于128 KB的对象。

有关Amazon S3存储类的价格差异的详细信息,请参阅Amazon S3定价页面。

3.9 使用Amazon S3对象生命周期管理进行成本优化

Amazon S3提供了许多存储类。今天,AWS Storage Gateway文件网关本身支持S3 Standard,S3 Standard-不常访问和S3 One Zone-IA。Amazon S3生命周期策略可以跨存储层自动管理数据,也可以根据对象的年限使对象失效。

要在存储类之间转换数据,生命周期策略将应用于整个AmazonS3存储桶,这反映到了存储网关上的单个安装点。生命周期策略还可以应用于反映文件网关上托管安装点内的文件夹的特定前缀。生命周期策略转换条件基于创建日期,或者可选地基于对象标记键值对。有关标记的更多信息,请参阅Amazon S3开发人员指南中的对象标记。

例如,生命周期策略在其最简单的实现中将给定Amazon S3存储桶中的所有对象从Amazon S3 Standard移动到Amazon S3 Standard-IA,最后移动到Amazon S3 Glacier作为数据老化。这意味着由文件网关创建的文件作为对象存储在Amazon S3存储桶中,然后随着内容的老化,可以自动转换为更经济的存储类。

万字长文:基于混合云存储架构的文件网关实践|附PDF下载

图 7:将文件存储为Amazon S3 Standard中的对象并转换为Amazon S3 Standard

IA和AmazonS3 Glacier的文件网关示例

如果使用文件网关在S3 Standard-IA或S3 One Zone-IA中存储数据或从任何不常见的存储类访问数据,请参阅AWSStorage Gateway用户指南中的Using Storage Classes以了解网关如何在NFS /之间进行调解 SMB(基于文件)上载以更新或访问对象。

3.10将对象转换为Amazon S3 Glacier

使用生命周期策略迁移的文件可立即用于NFS文件读/写操作。当NFS文件列在文件网关上时,可以看到转换到Amazon S3 Glacier的对象。但是,除非使用API或Amazon S3控制台还原到S3存储类,否则它们不可读。

如果尝试读取存储为Amazon S3 Glacier中的对象的文件,则会在尝试读取操作的客户端上遇到读取I/O错误。因此,我们建议使用生命周期将文件转换为Amazon S3 Glacier对象,仅用于不需要从AWS Storage Gateway环境中的NFS/SMB客户端立即访问的文件内容。

3.11 跨AWS区域的AmazonS3对象复制

Amazon S3跨区域复制(CRR)可与文件网关体系结构相结合,以跨两个单独的AWS区域将对象存储在两个Amazon S3存储桶中。CRR用于各种用例,例如防止人为错误,防止恶意破坏或最小化远程AWS区域中客户端的延迟。将CRR添加到文件网关体系结构只是本机Amazon S3工具和功能如何与文件网关结合使用的一个例子。

万字长文:基于混合云存储架构的文件网关实践|附PDF下载

图 8: 私有数据中心中的文件网关,使用CRR跨AWS区域复制对象

3.11 使用Amazon S3对象版本控制

可以将文件网关与Amazon S3对象版本控制一起使用,以在修改文件时存储多个版本的文件。如果需要使用网关访问该对象的先前版本,则必须首先将其还原到S3中的先前版本。还必须使用RefreshCache操作为网关通知此还原。请参阅AWS Storage Gateway用户指南中的对象版本控制可能会影响您在文件系统中看到的内容,以了解有关为文件共享使用Amazon S3版本化存储桶的更多信息。

3.12 使用文件网关进行一次写入多次读取(WORM)数据

还可以使用文件网关在具有需要使用WORM存储的法规要求的环境中存储和访问数据。在这种情况下,请选择启用了S3 Object Lock的存储桶作为文件共享的存储。如果通过文件共享客户端进行文件修改或重命名,则文件网关会创建对象的新版本,而不会影响先前版本,因此原始锁定版本保持不变。另请参阅AWS Storage Gateway用户指南中的使用文件网关和AmazonS3对象锁定。

4.0 文件网关用例

以下方案演示了如何在云分层和备份体系结构中使用文件网关。

4.1 云分层

在存储资源达到容量上限的本地环境中,将较冷的数据迁移到文件网关可以延长现有内部存储的使用寿命,并减少在额外的存储硬件和数据中心资源上使用资本支出的需求。将文件网关添加到现有存储环境时,本地应用程序可以利用Amazon S3存储持久性,基于消耗的定价和虚拟无限扩展,同时确保通过NFS或SMB对最近访问的数据进行低延迟访问。

可以使用本机主机操作系统工具或与NFS或SMB等标准文件协议集成的第三方工具对数据进行分层。

万字长文:基于混合云存储架构的文件网关实践|附PDF下载

图 9: 私有数据中心中的文件网关,提供AmazonS3 Standard或Amazon S3 Standard

IA,作为现有存储部署的补充

4.2混合云备份

文件网关提供低延迟NFS/SMB接口,可创建最大5 TiB的Amazon S3对象,存储在受支持的AWS区域中。这使其成为可以使用NFS或SMB的备份解决方案的理想混合目标。通过混合使用Amazon S3存储类,数据存储在低成本,高度持久的云存储中,并随着恢复可能性的降低而自动分层到逐步降低成本的存储。图10显示了假定备份必须保留一年的示例体系架构。30天后,恢复的可能性很少,60天后变得极为罕见。

在此解决方案中,使用Amazon S3 Standard作为前30天备份的初始位置。备份软件或脚本将备份写入文件共享,最好是以兆字节或更大文件的形式。较大的文件在端到端解决方案中提供更好的成本优化,包括更低的存储成本和生命周期转换成本,因为需要更少的转换。

再过30天后,备份将转换为Amazon S3 Glacier。在这里,它们一直持续到它们首次创建完整一年后,此时它们将被删除。

万字长文:基于混合云存储架构的文件网关实践|附PDF下载

图 10: 将文件存储为AmazonS3 Standard中的对象并转换为Amazon S3 Standard

IA和Amazon S3 Glacier的文件网关示例

  1. 客户端通过NFS或SMB将备份写入文件网关。
  2. 文件网关缓存,大小超过预期备份。
  3. 初始备份存储在S3 Standard中。
  4. 30天后备份将转换为S3 Standard-IA。
  5. 60天后,备份将转换为S3 Glacier。

在此类解决方案中调整文件网关缓存大小时,请了解备份过程本身。一种方法是将缓存大小调整到足以包含完整的完整备份,这允许从该缓存直接从缓存中恢复-比通过广域网(WAN)链接快得多。

如果备份解决方案使用通过在编写正在进行的备份之前读取现有备份来合并备份文件的软件,则还要将此配置计入缓存大小。这是因为在这些类型的操作期间从本地缓存读取会降低成本并提高正在进行的备份操作的整体性能。

对于上面指定的两种情况,可以使用AWS DataSync将数据从本地数据存储传输到云。从那里,可以使用文件网关保留对数据的访问。

5.0总结

AWS Storage Gateway的文件网关配置提供了一种在私有数据中心和Amazon S3存储之间桥接数据的简单方法。文件网关可以为云迁移,云分层和混合云备份启用混合架构。

文件网关能够在标准文件存储协议和Amazon S3 API之间提供转换层而无需进行模糊处理,因此非常适用于数据必须保持其本机格式且可在本地和AWS云中使用的体系结构。有关AWS Storage Gateway服务的更多信息,请参阅AWS Storage Gateway。

贡献者

以下个人和组织为本文件做出了贡献:

  • PeterLevett,AWS的解决方案架构师
  • DavidGreen,AWS解决方案架构师
  • SmithaSriram,AWS高级产品经理
  • ChrisRogers,AWS业务开发经理

说明:

本白皮书由新钛云服运维工程师唐睿翻译,新钛云服是AWS的APN合作伙伴,拥有九名认证的AWS工程师,在AWS使用和维护方面拥有丰富的经验,已经为多家用户提供AWS上云支持。

本文档PDF下载方法

关注新钛云服订阅号

在后台回复关键词STORAGRE