最大限度地减少将非常大的tar文件上传到Google Cloud Storage的成本

时间:2018-11-15 08:31:45

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

我目前正在尝试上传,然后以最低价格将一个大文件(1.3 TB)解压缩到Google Cloud Storage中。

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

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

1 个答案:

答案 0 :(得分:1)

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

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

  

如今,当您将数据移至Cloud Storage时,无需支付入口流量费用。 gsutil工具和Storage Transfer Service均免费提供。有关最新的定价详细信息,请参见GCP网络定价页面。

"network pricing page"只是说:

  

[流量类型:入口]价格:不收费,除非有诸如负载平衡器之类的资源正在处理入口流量。对请求的响应计为外发并收费。

GCS pricing page上还有其他有关您使用GCE VM写入GCS的想法的信息:

  

在以下情况下,与其他GCP服务一起访问Cloud Storage存储桶中的数据无需支付网络费用:

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

later in that same page中,还有有关请求前定价的信息:

  

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

     

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

A类操作的

The cost是每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 VM都会增加整个复制操作的成本-磁盘成本加上VM本身成本。

如果您想先尝试以较低风险尝试该过程,请创建一个包含几兆字节数据和一些文件的小目录,然后使用gsutil cp复制它,然后检查向您收取的费用为了那个原因。在GCS定价页面上:

  

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

因此,您只需要等待一天,看看您的账单是多少。