在我担任 KVM 管理员的早期,当我必须备份 VM 映像时,我遵循以下步骤:
- 暂停虚拟机
- 快照 LVM 卷
- 恢复虚拟机
- 复制图片
- 删除 LVM 快照
现在我在EC2中有一些机器,但我面临一个疑问:
亚马逊官方文件称
“您应该在拍摄快照之前停止该实例”
但有时你无法停止生产实例。我一直在不停止实例的情况下拍摄快照,并且已经恢复了它(一切都很顺利),但这个疑问不时困扰着我。
所以我的问题是,我可以暂停(停止不是选项)EC2 实例以便我可以对其进行一致的快照吗?
答案1
无法暂停。停止实例将确保您的文件系统一致。使用fsfreeze
是确保您已使文件系统静止的另一种方法。
剧本ec2 一致快照目前是 Linux 实例上执行此操作的事实标准开源解决方案。您还可以处理 MySQL 文件系统备份。运行它需要 AWS API 权限,并且必须在相关实例上运行以确保文件系统一致。我已经成功使用了一段时间。
答案2
不可以,不能暂停。
我也在实时服务器上制作了快照,但尚未遇到问题,并且我同意如果能够在那段时间内暂停写入就好了。
另一个选项是使用“从此实例创建 AMI”,它似乎执行的操作类似于暂停,因为它会暂时停止实例,但不会释放 IP 或丢失实例存储。但它与创建快照并不完全相同,因此可能不适用于日常备份。
答案3
不,您不能暂停 EC2 实例,只能停止。
暂停虚拟机并不能保证快照的一致性。事实上,暂停虚拟机以拍摄底层快照比从正在运行的系统拍摄本地 LVM 快照更糟糕。运行 LVM 快照至少会刷新其写入缓冲区并等待正在运行的写入完成后再创建检查点(例如fsfreeze
由 Diego F. Durán 建议)。
快照的主要问题是写入存储的应用程序当时正在运行。它们处于什么状态?要确保快照,您需要能够在拍摄快照之前使写入应用程序静止。尽管 Linux 通过 LVM 或 fsfreeze 可以管理操作系统,但您无法保证您暂停的写入操作不是将在您的备份中写入一半的较大写入批次的一部分。
如果日志和数据都在同一个快照中,某些数据库可能能够通过重放事务日志来恢复,但大多数其他应用程序却没有这种能力。
答案4
只需使用以下命令冻结卷中包含的文件系统冻结在拍摄快照之前,并在完成后解冻它。