【问题标题】:minimizing the cost of uploading a very large tar file to Google Cloud Storage最大限度地降低将超大 tar 文件上传到 Google Cloud Storage 的成本
【发布时间】:2019-04-18 07:20:20
【问题描述】:

我目前正在尝试以最低的价格将一个非常大的文件 (1.3 tb) 上传并解压到 Google Cloud Storage。

我最初考虑创建一个非常便宜的实例,只是为了下载文件并将其放入存储桶中,然后创建一个具有大量 RAM 的新实例来解压文件,然后将结果放入新存储桶中。 但是,由于存储桶价格取决于请求 I/O 的数量,我不确定它是否是最佳选择,即使就性能而言,它也可能不是最佳选择。

以最便宜的方式解压文件的最佳策略是什么?

【问题讨论】:

    标签: google-cloud-platform google-cloud-storage google-compute-engine bucket


    【解决方案1】:

    首先是一些关于定价的背景信息:

    Google 有 pretty good documentation 关于如何将数据提取到 GCS 中的信息。来自该指南:

    今天,当您将数据移动到 Cloud Storage 时,不会产生入站流量费用。 gsutil 工具和 Storage Transfer Service 均免费提供。有关最新定价详情,请参阅 GCP 网络定价页面。

    "network pricing page" 只是说:

    [流量类型:入口] 价格:不收费,除非有负载均衡器等资源正在处理入口流量。对请求的响应算作出口并收费。

    GCS pricing page 上有关于您使用 GCE 虚拟机写入 GCS 的想法的其他信息:

    如果您在以下情况下使用其他 GCP 服务访问 Cloud Storage 存储分区中的数据,则无需支付网络费用:

    • 您的存储桶和 GCP 服务位于同一个多区域或区域位置。例如,使用 asia-east1 Compute Engine 实例访问 asia-east1 存储桶中的数据。

    来自later in that same page,还有关于预询价的信息:

    A 类操作:storage.*.insert[1]

    [1] 使用 JSON API 进行的简单、分段和可恢复上传均被视为一项 A 类操作。

    The cost 用于 A 类操作是每 10,000 次操作,根据存储类型为 0.05 美元或 0.10 美元。我相信您只会执行 1 次 A 类操作(或最多,您上传的每个文件执行 1 次 A 类操作),所以这可能不会增加总体使用量。


    现在回答您的问题:

    对于您的用例,听起来您希望将 tarball 中的文件作为 GCS 中的单个文件(而不是将一个大 tarball 存储在 GCS 中的一个文件中)。第一步解压到某个地方,第二步使用gsutil cp复制到GCS。

    除非您必须这样做(即现在保存 tarball 的机器上没有足够的空间),否则我不建议在上传到 GCE 之前将 tarball 复制到 GCE 中的中间 VM,原因有两个:

    1. gsutil cp 已经为您处理了一堆烦人的边缘情况:并行上传、在出现网络故障时恢复上传、重试、校验和比较等。
    2. 使用任何 GCE 虚拟机都会增加整个复制操作的成本——磁盘成本加上虚拟机本身的成本。

    如果您想先尝试使用风险较低的程序,请创建一个包含几兆字节数据和一些文件的小目录并使用gsutil cp 复制它,然后检查您为此支付了多少费用.从 GCS 定价页面:

    每天都会产生费用,但 Cloud Storage 仅在结算期结束时才会向您收费。您可以在 Google Cloud Platform Console 的项目计费页面中查看未计费的使用情况。

    因此,您只需等待一天即可查看您的账单金额。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-25
      • 1970-01-01
      • 2020-04-04
      • 2014-09-18
      • 2017-07-09
      • 2017-07-12
      • 2016-02-03
      • 2020-12-04
      相关资源
      最近更新 更多