在我作为KVMpipe理员的早期,当我不得不做一个虚拟机映像的备份时,我遵循了下面的步骤:
现在我已经在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冻结包含在卷中的文件系统,并在完成后将其解冻。