使用gcsfuse挂载时,无法将很大的文件从Google存储桶中解压缩到Google存储桶中

时间:2019-04-15 13:51:03

标签: google-cloud-platform google-cloud-storage 7zip gcsfuse

在Google Cloud上,我有一个Linux Compute Engine和一个存储桶。我已使用gcsfuse(根据Google的建议)将存储桶作为驱动器安装到CE上(如Google所建议的那样),我时不时将一个很大的7zip存档(数十GB)上传到存储桶中。 当我登录到CE的终端时,转到已安装的存储桶文件夹,并尝试使用以下命令将文件解压缩(在同一位置): new ol.style.Circle({ radius: 10, stroke: new ol.style.Stroke({ color: "red", width: 2 }), fill: new ol.style.Fill({ color: "blue" }) }) 会将文件最多解压缩100%(这需要几分钟),最后它将失败,并显示以下信息:

7z x myarchive.7z

此后,如果我查看存储分区的内容,则会显示解压缩的文件名,但是文件名为0 KB。

我了解到ERROR: E_FAIL Archives with Errors: 1 通常与空间不足有关,但是Google存储桶应该具有无限的空间(对单个文件大小有限制)。例如,命令E_FAIL表示已安装的存储桶应具有1 PB的可用存储空间。

有人在那里有类似的设置/问题吗?

1 个答案:

答案 0 :(得分:2)

如注释中所建议,即使您从已挂载的目录发出命令,解压缩过程也可能需要对本地文件系统执行某些特定操作。

实际上,由于GCS装入的文件系统不是传统的FS,因此某些操作可能需要传输到本地磁盘(例如,see the docs的随机写入就是这种情况):

  

随机写入是通过读取整个Blob,在本地进行编辑并将整个修改后的Blob写回到Cloud Storage来完成的。对大文件的小写操作可以按预期工作,但速度慢且昂贵。

为确保解压缩过程具有足够的可用大小,并确保在此过程中可能创建了临时文件,应增加本地磁盘的容量。