Google Compute Engine:磁盘快照和磁盘映像有啥区别?

Posted

技术标签:

【中文标题】Google Compute Engine:磁盘快照和磁盘映像有啥区别?【英文标题】:Google Compute Engine: what is the difference between disk snapshot and disk image?Google Compute Engine:磁盘快照和磁盘映像有什么区别? 【发布时间】:2015-02-02 03:18:56 【问题描述】:

我的创业公司和我都在使用它,功能是相同的。到目前为止,我创建的实例仅用于计算。我想知道 GCE 磁盘映像和快照在技术方面有何不同,在哪种情况下使用其中一种更好。

【问题讨论】:

【参考方案1】:

快照反映了永久磁盘在具体瞬间的内容。映像是相同的东西,但包含操作系统和引导加载程序,可用于引导实例。

图像和快照可以是公开的或私有的。在图像的情况下,公共可以指由 Google 提供或不提供的官方公共图像。

快照存储为差异(快照存储相对于前一个快照,尽管这对您来说是透明的),而图像则不是。它们也更便宜(每 GB 每月 0.03 美元,图片 0.085 美元)。

如今,这两个概念非常相似。现在可以使用快照而不是映像来启动实例,这是调整引导分区大小的一种简单方法。在大多数情况下,使用快照可能会更简单。

【讨论】:

请注意:我不会说快照和图像可以公开。您如何共享它们是有限制的。见这里:cloud.google.com/compute/docs/images/…。具体来说,“不可能向 allAuthenticatedUsers 或 allUsers 授予允许访问图像或快照的角色。”【参考方案2】:

快照:

适合备份和灾难恢复 比图片成本低 尺寸比图片小,因为它不包含操作系统等。 差异备份 - 仅自上次快照以来更改的数据 被重新创建 创建速度比图像快 快照仅在它们所在的项目中可用 已创建(现在可以在项目之间共享) 可以为运行中的磁盘创建,即使它们已连接 运行实例

图片:

适合在新实例中重用计算引擎实例状态 适用于不同的项目 无法为正在运行的实例创建(除非您使用 --force 标志)

【讨论】:

注意:图像可以使用 force 命令为正在运行的实例创建。 我认为您现在可以在不同项目之间共享快照 @Pievis 感谢您指出这一点,我写的内容在撰写本文时是正确的,但已经过时了;我更新了我的答案 您可以通过 GUI 使用一个复选框从正在运行的实例创建图像,这可能只是在做 --force 的事情。【参考方案3】:

快照主要针对备份和灾难恢复方案,它们更便宜、更容易创建(通常可以在不停止 VM 的情况下上传)。它们适用于频繁的定期上传和罕见的下载。

映像主要用于创建启动磁盘。他们一遍又一遍地优化相同数据的多次下载。如果同一张图片下载了很多次,在第一次下载之后,接下来的下载速度会非常快(即使是大图片)。

映像不必专门用于启动磁盘,它们还可以用于需要快速提供给大量 VM 的数据(在共享只读磁盘不满足要求的情况下)无论出于何种原因的要求)

【讨论】:

【参考方案4】:

Snapshot 是您的磁盘副本,可用于创建任何类型(标准 PD 或 SSD PD)的新持久性磁盘 (PD)。您可以使用快照创建更大的磁盘大小,还可以在您可能需要的任何区域上创建新磁盘。 Pricing 对于用于快照的预置空间要便宜一些。用作备份时,您可以创建差异快照。

当您使用现有磁盘创建实例时,您必须在磁盘所在的同一区域中创建实例,并且它将具有磁盘的大小。

当提到 images resources 时,是您正在运行的预配置 GCE 操作系统(Centos、Debian 等),您可以使用公共映像,可用于所有项目或特定项目的私有映像或创建您自己的自定义图像。

【讨论】:

我可以使用快照缩小磁盘大小吗?如果是,怎么做? 快照不是磁盘的副本,而是该磁盘上所有数据的副本。所以它将是数据大小而不是磁盘大小。【参考方案5】:

快照在项目中被锁定,但自定义图像可以 项目之间共享。

【讨论】:

【参考方案6】:

我想在上面的答案中补充一点,快照也可以在项目之间共享,它就像图像一样是一种全局资源。快照与图像的区别仅在于实例和模板实例的可启动性。

参考:https://cloud.google.com/compute/docs/disks/create-snapshots 部分:“此任务所需的权限”

【讨论】:

以上是关于Google Compute Engine:磁盘快照和磁盘映像有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

Google Compute Engine 上的 FreeBSD

Google Compute Engine VM 上的暂存盘可见性

非抢占式 Google Compute Engine VM 上的 ngrok

连接 Google App Engine 和 Google Compute Engine

Google Cloud 中的 Google Compute Engine、App Engine 和 Container Engine 有啥区别?

ImportError:没有名为 google_compute_engine 的模块