亚马逊AWS官方博客

AWS文件存储网关初体验

1.    背景介绍

AWS Storage Gateway 是一项可以帮助用户实现在混合架构环境中将本地数据中心内设施与AWS云端存储进行无缝集成的服务。通过Storage Gateway可以简化本地IT环境与云端存储间移动数据,将数据存储到AWS云,并且实现备份,存档以及灾难恢复等主要功能。

Storage Gateway家族之前已经包含有基于卷接口以及磁带接口类型的网关设备,帮助用户可以在适当的场景下选择合适的方式去将本地的数据迁移到云端,在去年Las Vegas 举办的re:Invent大会上,AWS更进一步又推出基于文件接口(支持NFS3和NFS4.1)类型的存储网关,给用户提供了更多的选择,方便用户可以通过标准的文件协议将文件作为对象直接存储在Amazon S3上,这样不但可以借助于S3超高的持久性优势对文件进行持久化保存,还可以将S3对象的版本控制,生命周期管理以及跨区域复制等存储策略直接应用到存储对象中。

要使用文件存储网关服务,必须为存储网关下载虚拟机镜像,并从 AWS 管理控制台或存储网关 API 激活它。写入到 NFS 的文件成为 Amazon S3 中的对象, 文件与对象之间存在一对一的映射,对象使用 Amazon S3 托管的加密密钥 (SSE-S3) 在服务器端加密,所有数据传输通过 HTTPS 执行。

文件存储网关服务使用分段并行上传等技术,优化了网关与 AWS 之间的数据传输,以更好利用可用带宽。与缓存卷类似,系统维护本地缓存以提供对最近访问数据的低延迟访问,并减少数据传出成本。

新年伊始,让我们撸起袖子,一起来体验一下新型的存储网关带来的超能力,尝试如果使用文件存储网关这项新的功能来实现对本地文件的云端迁移。

2.    部署与配置存储网关

文件存储网关适用于将数据传入到 S3 以供应用日常使用、备份和存档到 AWS 云上不同类型的存储服务。

图1

在进入具体的安装部署环节之前,我们首先来了解一下使用文件存储网关中涉及到的主要调用流程。用户的应用服务器运行在自有数据中心内,在用户环境中部署文件存储网关(File Gateway),用户或应用服务器通过NFS客户端连接存储网关,利用网关,可以将 S3 中的存储桶作为 NFS 装载点,从而对文件进行写入和访问。

2.1  安装部署文件存储网关

首先登录到AWS Storage Gateway Console

https://console.amazonaws.cn/storagegateway/home?region=cn-north-1

2.1.1 选择网关类型

在导航窗格中,选择 Gateways,然后选择 Create gateway;

在 Select gateway type 页面上,选择 File gateway,然后选择 Next;

图2

2.1.2 选择主机平台

现阶段文件存储网关只支持本地运行在VMware ESXi虚拟化环境中,选择 Download image,下载安装包,解压后得到.ova类型文件;

图3

1)通过VMware vCenter控制台将Storage Gateway虚拟机部署到用户本地的虚拟化环境中。此处省略部署Storage Gateway虚拟机过程,详细步骤请参考:

http://docs.aws.amazon.com/zh_cn/storagegateway/latest/userguide/deploy-gateway-vmware.html

注意: 必须满足最低的主机配置要求;

选择Thick provisioned format磁盘类型;

确保存储网关主机上的时钟与网络时间协议 (NTP) 服务器同步。

2)添加存储网关本地磁盘存储

存储网关至少需要添加一个磁盘以便进行缓存,客户端对文件的访问会首先在缓存中去获取文件信息,这样将大大减少通过网络去S3直接获取文件的延迟,文件存储网关缓存最大值为16TB。

 建议:将用于缓冲区的磁盘专门使用一个数据存储。

2.1.3 连接网关

登录到VMware vCenter管理界面,点击网关虚拟机,在Summary页面中记录下网关IP地址信息

切换到AWS控制台界面,输入文件存储网关IP,选择 Connect to gateway

图4

2.1.4 激活网关

选择存储网关的时区并为网关命名,最后点击 Activate gateway

图5

2.1.5 配置本地磁盘

选择在步骤2.1.2中为文件存储网关配置的新挂载的磁盘作为网关的缓存,确定要用于缓存存储的磁盘。

图6

保存并完成配置任务,观察新创建的存储网关状态是否为Running

图7

2.2  创建文件共享

2.2.1 Amazon S3上创建存储桶,以便作为NFS挂载点保存文件;

2.2.2  创建文件共享

在Storage Gateway服务导航窗格上,选择 File shares,然后选 择 Create file share;

选择之前创建的网关,输入已建立好的S3存储桶名称,并且必须有访问存储桶的权限。我们可以创建新的IAM role或者通过已有的IAM role的方式来使用。

图8

如果使用已有IAM role,则请确保赋予如下的信任关系及访问权限

1)信任策略允许Storage Gateway

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "storagegateway.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId":"account-id"
        }
      }
    }
  ]
}

2)将IAM role赋予如下S3访问及操作权限,请注意中国区arn独特的标示    以及将存储桶名替换为之前需要访问的存储桶名称

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:GetAccelerateConfiguration",
                "s3:GetBucketLocation",
                "s3:GetBucketVersioning",
                "s3:ListBucket",
                "s3:ListBucketVersions",
                "s3:ListBucketMultipartUploads"
            ],
            "Resource": "arn:aws-cn:s3:::filegatewaybucket",
            "Effect": "Allow"
        },
        {
            "Action": [
               "s3:AbortMultipartUpload",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion",
                "s3:GetObject",
                "s3:GetObjectVersion",
                "s3:ListMultipartUploadParts",
                "s3:PutObject"
            ],
            "Resource": "arn:aws-cn:s3:::filegatewaybucket/*",
            "Effect": "Allow"
        }
    ]
}

2.3  如何使用文件存储网关

现在我们已经安装部署了文件存储网关,并且创建了S3存储桶作为文件共享的容器,下面我们就以Microsoft  Windows操作系统为例,来看看如何实际使用文件存储网关。

2.3.1 将文件共享连接到Microsoft Windows 客户端

1)在 Windows 客户端中为 NFS 启用服务;

2)在 Windows 客户端的命令提示符下,键入挂载命令,将S3存储桶作为Windows系统映射的驱动器盘符:

mount –o nolock 网关IP 地址:/S3 存储桶名称 Windows 客户端上的驱动器盘符:

具体执行命令如下所示:

mount –o nolock 10.29.1.2:/filegatewaybucket Z: (注意命令最后的驱动器盘符的:)

2.3.2 测试文件网关

在 Windows 客户端上,导航到文件共享的驱动器盘符(Z:)。驱动器名称前面是您的 S3 存储桶的名称。

将一些文件或文件夹复制到驱动器。

图9

在 S3 管理控制台上,导航到您映射的存储桶。此时应该看到在您指定的S3 存储桶中复制的文件和文件夹。

图10

通过NFS 客户端可以对文件进行写入、读取、删除等操作。

读取操作首先访问本地磁盘中的缓存文件,如果文件不在缓存,则从 S3 中提取并添加到缓存中。写入操作,通过回写式缓存,将文件分段上传写入到 S3。

注意:如果使用Linux操作系统,可通过如下命令进行挂载,使用方法相似:

mount –t nfs –o nolock  网关IP:/S3存储桶名称 [MountPath]

3.    管理与监控存储网关

3.1  管理存储网关

除了使用AWS Storage Gateway管理控制台进行日常的管理和维护工作外,用户还可以通过使用默认用户名 sguser 和密码 sgpassword 来登录存储网关虚拟机的管理配置界面,下图为网关虚拟机本地控制界面。

图11

3.1.1 测试网络连接情况

键入3 测试网络连接情况

图12

键入 6 ,选择测试中国区,测试 Internet 连接。当排查网关的网络问题时,此测试可能会很有用,如果提示[FAILED]信息,请检查网络或防火墙配置是否正确。

图13

3.1.2 可用管理命令

键入 5 以打开 AWS Storage Gateway 控制台,键入 h 以打开 AVAILABLE COMMANDS (可用命令) 窗口。

图14

可以通过控制台命令行来获取网关的IP,修改密码以及申请支持等能力。

3.1.3 网关系统资源检查

键入6 可以查看网关资源配置情况,如果资源配置不满足要求,则会提示资源不足错误,网关将无法正常运行。

图15

3.2  监控存储网关

除了日常的管理工作,用户可以通过使用CloudWatch来监控与存储网关相关的主要参数,其中包括CloudBytesDownloaded,CloudBytesUploaded, CacheUsed, CacheHitPercentage等指标,通过不同指标可以监控Storage Gateway到云端上传及下载的使用量及Cache相关的使用情况,如下图所示。

用户还可以通过CloudTrail捕获Storage Gateway调用API的情况,并将日志文件保存在S3存储桶中 。

图16

4.    小结

文件存储网关服务的推出是对当前基于数据卷和 VTL 存储网关的一个补充,通过对标准的文件系统协议的支持,使得用户可以无需修改现有应用程序便可以将文件存储在云端。大大简化了混合架构模式下用户希望借助Amazon S3 来替代本地存储的过程,以帮助用户实现节约成本和更高持久化的保障。存储网关还通过本地缓存方式提供对数据的低延迟访问,集成 AWS Identity and Access Management (IAM) 进行访问控制,以及使用 AWS 管理控制台和 AWS Command Line Interface (AWS CLI) 进行管理操作。

当然,文件存储网关现阶段只支持VMware ESXi虚拟化环境,对于需要使用其他虚拟化软件的小伙伴还需要再耐心等待一下。另外,网络条件也将会成为影响文件存储网关使用体验的重要因素之一。

作者介绍:

周琦,亚马逊AWS解决方案架构师,拥有10年IT领域工作经验,先后在IBM,VMware等公司担任工程师及架构师等职位,现负责AWS云服务在国内的推广和支持工作,同时致力于企业混合云,DevOps以及微服务等领域的研究。