云存储池的注意事项
如果您计划使用云存储池将对象移出StorageGRID系统,则必须查看配置和使用云存储池的注意事项。
一般注意事项
-
一般来说,云存档存储(例如 Amazon S3 Glacier 或 Azure Blob 存储)是存储对象数据的廉价场所。然而,从云档案存储中检索数据的成本相对较高。为了实现最低的总体成本,您必须考虑何时以及多久访问一次云存储池中的对象。仅对于您不经常访问的内容,建议使用云存储池。
-
不支持将云存储池与FabricPool一起使用,因为从云存储池目标检索对象会增加延迟。
-
启用了 S3 对象锁的对象不能放置在云存储池中。
-
如果云存储池的目标 S3 存储桶启用了 S3 对象锁,则配置存储桶复制(PutBucketReplication)的尝试将失败,并出现 AccessDenied 错误。
-
云存储池不支持以下平台、身份验证和协议与 S3 对象锁定的组合:
-
平台:Google Cloud Platform 和 Azure
-
身份验证类型:IAM Roles Anywhere 和匿名访问
-
协议:HTTP
-
云存储池所用端口的注意事项
为了确保 ILM 规则可以将对象移入和移出指定的云存储池,您必须配置包含系统存储节点的网络。必须确保以下端口可以与云存储池通信。
默认情况下,云存储池使用以下端口:
-
80:用于以 http 开头的端点 URI
-
443:对于以 https 开头的端点 URI
您可以在创建或编辑云存储池时指定不同的端口。
如果您使用非透明代理服务器,您还必须"配置存储代理"允许将消息发送到外部端点,例如互联网上的端点。
成本考虑
使用云存储池访问云中的存储需要与云建立网络连接。您必须根据预计使用云存储池在StorageGRID和云之间移动的数据量,考虑用于访问云的网络基础设施的成本并对其进行适当的配置。
当StorageGRID连接到外部云存储池端点时,它会发出各种请求来监控连接并确保它可以执行所需的操作。虽然这些请求会产生一些额外的成本,但监控云存储池的成本应该只占在 S3 或 Azure 中存储对象的总成本的一小部分。
如果您需要将对象从外部云存储池端点移回StorageGRID,则可能会产生更大的成本。在以下任一情况下,对象可能会移回StorageGRID :
-
该对象的唯一副本位于云存储池中,而您决定将该对象存储在StorageGRID中。在这种情况下,您可以重新配置 ILM 规则和策略。当发生 ILM 评估时, StorageGRID会发出多个请求来从云存储池中检索对象。然后, StorageGRID在本地创建指定数量的复制或擦除编码副本。将对象移回StorageGRID后,云存储池中的副本将被删除。
-
由于存储节点故障,对象丢失。如果对象的唯一剩余副本位于云存储池中, StorageGRID会临时恢复该对象并在恢复的存储节点上创建新副本。
|
当对象从云存储池移回StorageGRID时, StorageGRID会针对每个对象向云存储池端点发出多个请求。在移动大量物体之前,请联系技术支持以获取有关估算时间范围和相关成本的帮助。 |
S3:云存储池存储桶所需的权限
用于云存储池的外部 S3 存储桶的策略必须授予StorageGRID权限,以将对象移动到存储桶、获取对象的状态、在需要时从 Glacier 存储中恢复对象等等。理想情况下, StorageGRID应该对存储桶具有完全控制访问权限(s3:*
);但是,如果这不可能,则存储桶策略必须向StorageGRID授予以下 S3 权限:
-
s3:AbortMultipartUpload
-
s3:DeleteObject
-
s3:GetObject
-
s3:ListBucket
-
s3:ListBucketMultipartUploads
-
s3:ListMultipartUploadParts
-
s3:PutObject
-
s3:RestoreObject
S3:外部存储桶生命周期的注意事项
StorageGRID和云存储池中指定的外部 S3 存储桶之间的对象移动由StorageGRID中的 ILM 规则和活动 ILM 策略控制。相比之下,对象从云存储池中指定的外部 S3 存储桶到 Amazon S3 Glacier 或 S3 Glacier Deep Archive(或实现 Glacier 存储类的存储解决方案)的转换由该存储桶的生命周期配置控制。
如果要从云存储池转换对象,则必须在外部 S3 存储桶上创建适当的生命周期配置,并且必须使用实现 Glacier 存储类并支持 S3 RestoreObject API 的存储解决方案。
例如,假设您希望将所有从StorageGRID移动到云存储池的对象立即转换到 Amazon S3 Glacier 存储。您将在外部 S3 存储桶上创建一个生命周期配置,指定单个操作(Transition),如下所示:
<LifecycleConfiguration> <Rule> <ID>Transition Rule</ID> <Filter> <Prefix></Prefix> </Filter> <Status>Enabled</Status> <Transition> <Days>0</Days> <StorageClass>GLACIER</StorageClass> </Transition> </Rule> </LifecycleConfiguration>
此规则将在创建所有存储桶对象当天(即从StorageGRID移动到云存储池当天)将其转换到 Amazon S3 Glacier。
|
配置外部存储桶的生命周期时,切勿使用*Expiration*操作来定义对象何时过期。过期操作会导致外部存储系统删除过期的对象。如果您稍后尝试从StorageGRID访问已过期的对象,则将找不到已删除的对象。 |
如果要将云存储池中的对象转换到 S3 Glacier Deep Archive(而不是 Amazon S3 Glacier),请指定 `<StorageClass>DEEP_ARCHIVE</StorageClass>`在存储桶生命周期中。但请注意,您不能使用 `Expedited`层从 S3 Glacier Deep Archive 恢复对象。
Azure:访问层的注意事项
配置 Azure 存储帐户时,可以将默认访问层设置为“热”或“冷”。创建用于云存储池的存储帐户时,应使用热层作为默认层。尽管StorageGRID在将对象移动到云存储池时立即将层设置为存档,但使用默认设置“热”可确保您不会因在 30 天最低期限之前从冷层中删除的对象而被收取提前删除费用。
Azure:不支持生命周期管理
不要对与云存储池一起使用的容器使用 Azure Blob 存储生命周期管理。生命周期操作可能会干扰云存储池操作。