谷歌计算引擎:磁盘快照和磁盘镜像有什么区别?

65

我一直在我的创业公司中使用两者,对我来说,它们的功能是相同的。直到现在,我创建的实例只用于计算。我想知道GCE磁盘映像和快照在技术上有什么不同,并在哪种情况下最好使用其中之一。

6个回答

62

快照(Snapshot)是指在某个具体时间点上反映持久磁盘内容的一种状态。镜像(Image)也是同样的东西,但包含操作系统和引导加载程序,并可用于启动实例。

镜像和快照可以是公共的或私有的。对于镜像而言,公共可以指Google提供的官方公共镜像或其他镜像。

快照存储为差异(即相对于上一个快照存储,尽管这对您来说是透明的),而镜像则不是。它们也更便宜(每GB/月$0.026 vs 镜像的$0.050)(快照将从2022年10月1日起增加到$0.050/GB/月)。

现在这两个概念非常相似。现在可以使用快照启动实例,而不是镜像,这是调整启动分区大小的简单方法。对于大多数情况,使用快照可能更简单。


1
一个注意事项:我不会说快照和镜像可以公开。在分享它们的方式上有限制。请参见此处:https://cloud.google.com/compute/docs/images/sharing-images-across-projects。具体来说,“不可能授予所有经过身份验证的用户或所有用户的角色,以允许访问图像或快照。” - Breck
1
现在似乎不再是这样了:“可以使用快照而不是镜像启动实例,这是调整引导分区大小的简便方法”,因为当我尝试这样做时,会出现错误:“磁盘大小不能小于所选磁盘映像的大小”。 - fantabolous

27

快照:

  • 备份和灾难恢复的好选择。
  • 成本比镜像低。
  • 由于不包含操作系统等,因此大小比镜像小。
  • 差异备份 - 重新创建自上次快照以来更改的数据。
  • 创建速度比镜像快。
  • 快照仅在创建它们的项目中可用(现在可以在多个项目之间共享)。
  • 即使将磁盘连接到运行实例上,也可以为其创建快照。

镜像:

  • 可用于将计算引擎实例状态与新实例重用。
  • 可在不同的项目中使用。
  • 无法为正在运行的实例创建镜像(除非使用 --force 标志)。

1
注意:可以使用force命令为运行实例创建镜像。 - Varun Chandak
1
我认为现在你可以在不同的项目之间共享快照了。 - Pievis
1
@Pievis 感谢您指出这一点,我写的内容在当时是正确的,但已经过时了;我更新了我的答案。 - Caner
您可以通过GUI从运行实例创建镜像,其中有一个复选框,可能只是执行了--force操作。 - fred

12

快照主要用于备份和灾难恢复场景,成本更低,更易创建(通常可以在不停止虚拟机的情况下上传)。它们适用于频繁的定期上传和较少的下载。

镜像主要用于启动磁盘的创建。它们优化了同一数据的多次重复下载。如果同一镜像被多次下载,在第一次下载后,后续的下载将非常快(即使是大型镜像)。

镜像不必专门用于启动磁盘,它们还可以用于需要快速向大量虚拟机提供可用数据的场景(在共享只读磁盘无法满足要求的情况下)。


9
快照是您的磁盘的副本,可以用来创建任何类型(标准PD或SSD PD)的新持久性磁盘(PD)。您可以使用快照创建更大的磁盘大小,并且可以在需要的任何区域创建新磁盘。 定价对于用于快照的预配空间要便宜一些。当用作备份时,您可以创建差分快照。
当您使用现有磁盘创建实例时,必须在磁盘所在的同一区域创建实例,并且它将具有与磁盘相同的大小。
提到镜像资源时,是指预配置的GCE操作系统(Centos、Debian等),您可以使用公共镜像(适用于所有项目)或特定项目的私有镜像或创建自己的自定义镜像。

我能缩小带有快照的磁盘大小吗?如果可以,怎么做? - user1700890
1
快照不是磁盘的副本,而是该磁盘上所有数据的副本。因此,它将是数据大小而不是磁盘大小。 - klsx

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

这是非常重要的一点。 - Satish

0

简单来说,快照基本上是磁盘数据的备份,而且重要的一点是它们是差异备份(大小较小)。主要用于备份和灾难恢复。

镜像也是备份操作系统的方式,定制镜像可以确保一些组织策略。

在云计算方面,镜像用于启动具有相同配置的多个实例,而快照则主要用于备份。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接