EC2实例快照

在我作为KVMpipe理员的早期,当我不得不做一个虚拟机映像的备份时,我遵循了下面的步骤:

  1. 暂停VM
  2. 快照LVM卷
  3. 恢复VM
  4. 复制图片
  5. 删除LVM快照

现在我已经在EC2上有了一些机器,但是我有一个疑问:

亚马逊官方文档说

“在拍摄快照之前应该停止实例”

但有时你不能停止生产实例。 我一直在拍摄快照而没有停止实例,我已经恢复了(一切都很顺利),但怀疑是敲我的脑袋。

所以我的问题是,我可以暂停(停止不是和选项)一个EC2实例,以便我可以采取一致的快照吗?

暂停是不可能的。 停止实例将确保您的文件系统是一致的。 使用fsfreeze是另一种确保你停止文件系统的方法。

脚本ec2-consistent-snapshot目前是基于Linux的实例的事实标准的开源解决scheme。 您还可以处理MySQL文件系统备份。 运行它需要AWS API权限,并且必须在有问题的实例上运行,以确保文件系统一致。 我用了一段时间的成功。

不,它不能暂停。

我也在现场服务器上制作快照,但还没有遇到问题,我同意在这段时间能够暂停写入是很好的。

另一个select是使用'从这个实例创buildAMI',这似乎做了一些类似于暂停,因为它暂时停止实例,但不释放IP或丢失实例存储。 这与创build快照并不完全相同,因此对于每日备份可能没有用处。

不,你不能暂停一个EC2实例,只能停止。

暂停虚拟机并不能保证一致的快照。 实际上,暂停虚拟机采取底层快照比从正在运行的系统获取本地LVM快照要糟糕。 运行一个LVM快照将至less刷新它的写入缓冲区,并在创build检查点之前等待正在运行的写入完成(如Diego fsfreezebuild议的fsfreeze )。

快照的主要问题是写入正在运行的存储的应用程序。 他们在什么状态? 为了确保快照,您需要能够在拍摄快照之前暂停写入应用程序。 尽pipe通过LVM或fsfreeze的Linux可以pipe理操作系统,但您无法保证暂停的写入操作不是大量写入操作的一部分,而这些写入操作只会写入您的备份中。

如果日志和数据都在同一快照中,则某些数据库可以通过重播事务日志来恢复,但是大多数其他应用程序不具备这种能力。

在拍摄快照之前,只需使用fsfreeze冻结包含在卷中的文件系统,并在完成后将其解冻。