【问题标题】:Can I use Cloud Shell with more than the 5 GB persistent storage?我可以将 Cloud Shell 与超过 5 GB 的持久存储一起使用吗?
【发布时间】:2020-02-04 04:00:01
【问题描述】:

根据docs:

Cloud Shell 提供 5 GB 的免费永久磁盘存储,挂载为虚拟机实例上的 $HOME 目录。

我需要更多(付费)存储空间,尽管我可以从 Cloud Shell 环境进行访问,并且在我的会话中保持不变。它主要用于存储 git 存储库和图像的本地克隆。我将是唯一可以访问这些文件的人。

似乎 5 GB 存储空间是一个硬限制,因此它不会动态扩展,并会向我收取超出部分的费用。可以使用增强模式,但这不会影响存储大小。而且我也无法使用custom Cloud Shell environment 提供更多存储空间。我不知道是否可以将另一个 GCE 永久磁盘安装到我的 $HOME。我正在考虑 gcs-fuse 建议 in this answer 但我不确定它是否适合 git repos。

有没有办法在 Cloud Shell 中提供更多可用存储空间?

【问题讨论】:

  • 一个想法...如何使用 Google Filestore ...cloud.google.com/filestore ... 在 GCP 中提供 NFS 可挂载存储。您能否设置一个 Filestore 环境,然后 NFS 将存储挂载到您的 Cloud Shell 环境中?
  • 与 [Fuse}(cloud.google.com/storage/docs/gcs-fuse) 的解决方法相同,您可以将存储桶挂载为文件系统存储。
  • 请参阅下面我的回答以使用存储桶执行此操作。

标签: google-cloud-platform google-cloud-shell gcsfuse


【解决方案1】:

Google Cloud Shell 是在由 Google 管理的隐藏计算引擎实例上运行的容器。您可以下载、修改此容器并将其重新部署到 Cloud Shell 或您自己在云端或桌面上运行的容器。

容器的基本映像可在gcr.io/cloudshell-images/cloudshell:latest 上获得,每个this page。

对于您的用例,我会使用 Compute Engine 和 Container OS,并在 COS 中运行 Cloud Shell 容器。您可以扩展 CPU、内存和存储以满足您的要求。

您还可以设置 Compute Engine 实例,安装 CLI、SDK 和工具,并拥有更强大的系统。

基于第一个答案的未来读者注意事项:

  1. Filestore 是一个很棒的产品,但要注意成本。最低部署为 1 TB,每月 200 美元以上。每次 Cloud Shell 重新启动时,您都需要挂载 NFS 共享 - 这可以放入登录脚本中。注意:我不确定您是否真的可以从 Cloud Shell 中的 Filestore 挂载 NFS 共享。我从未测试过这个。
  2. 在使用 FUSE 时,您会遇到同样的重新挂载问题,而且访问 Cloud Storage 时会产生带宽成本。
  3. Cloud Shell 是一个很好的产品,实施得很好,但是当您需要超越它的能力时,最好部署一个中小型 GCE 实例。这将启用持久性、快照等。

【讨论】:

  • 感谢您指出 Filestore 的最小部署。这也是我一开始没有考虑的原因。我忘了提到我不仅使用命令行,还使用编辑器(都在 Chromebook 上),我正在寻找替换我的本地 IDE。虽然体验尚不完美,但足以满足我的需求。我不知道我是否可以在 GCE 实例中复制相同的内容,但我会启动一台机器看看。
  • @Ani 使用上面提到的容器镜像将为您提供与云外壳上可用的完全相同的工具(当然,您需要处理您在容器 - 例如,您需要在该容器之外持久存储)。
  • 另一个关于 Cloud Shell 的说明。 SSH 访问是为端口 6000 而不是 22 设置的。您可能希望将内部 SSH 服务器更改为使用标准端口 22,或者可能不是出于安全考虑。
【解决方案2】:

无法向 Cloud Shell 添加更多存储空间。您可以创建 VM 和 install the Cloud SDK 并拥有任意数量的存储空间,但目前无法向 Cloud Shell 添加存储空间。

根据您计划如何使用已保存的存储库,Cloud Storage 可能是理想的,因为它有一个存储类别,可以完美归档。

Filestore 将是您的最佳选择,因为它非常适合文件系统并且具有可扩展性。正如您所描述的,它符合您的需求。

您可以使用Cloud Storage with FUSE。请记住,这种方法虽然很棒,但取决于它将如何用作costs are based on storage category。

您可以看到云平台必须提供的存储解决方案的简要比较here。

【讨论】:

  • 谢谢。我对 Filestore 的定价(最少 1 TB)感到担忧,所以我没有考虑它(或其他 SMB/NFS 服务器)。我将尝试使用 FUSE 的云存储,看看我的用例是否会考虑完整性或带宽。或者,我将使用 Cloud Shell 映像启动一台机器,正如 John Hanley 在回答中所建议的那样,但我怀疑我是否能在浏览器中获得相同的开箱即用体验。
  • 您可以像使用 FUSE 安装驱动器一样使用 Filestore 吗?它更快吗? GCS 存储桶似乎更适合存档/备份等。
【解决方案3】:

我正在使用 gcsfuse 并且工作正常。如果您将 mount 命令放在 .customize_environment 中(在启动时运行),则不必每次都重新安装。

#!/bin/sh
#.customize_environmnet run in background as root, wait for your user to initialize
sleep 20
sudo -u [USER] gcsfuse -o nonempty -file-mode=777 -dir-mode=777 --uid=1000 --debug_gcs [BUCKET_NAME] /home/[USER]/[FOLDER_NAME]

您可以在Unlimited persistent disk in google cloud shell阅读更多内容

【讨论】:

  • 感谢您的新答案和文章链接。
  • 当我尝试执行git checkout 之类的操作或复制目录时,我尝试了此操作并得到了各种错误,例如too many file handles open。和它的verrrryyy slowwww 基本的东西。结合cloud shell每5分钟超时的习惯,我觉得这不是一个可行的选择
【解决方案4】:

还有另一种方法可以在云 shell 中拥有更多磁盘空间。就是创建一个云存储桶,并将云存储桶映射为一个文件夹。这样您就可以将较大的文件存储在云存储桶中,并且不需要任何计算实例。

  1. 转到云存储并创建一个新的存储桶

  2. 复制存储桶的名称,例如。我的存储桶

  3. 转到 cloud shell 并在您的主文件夹中创建一个文件夹

    mkdir ~/my_bucket_folder

  4. 将存储桶挂载到这个文件夹

    gcsfuse my_storage_bucket ~/my_bucket_folder

  5. 将目录更改为您的 my_bucket_folder

    cd ~/my_bucket_folder

  6. 瞧!你有无限的空间!

  7. 要卸载,请运行以下命令

    fusermount -u ~/my_bucket_folder

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 2023-03-13
    • 2018-07-09
    相关资源
    最近更新 更多