我正在尝试为我的GCP实例计划快照,我只是想知道快照数据或实际磁盘数据是否有可能损坏/或将受到任何影响。我的意思是假设我正在创建快照,同时正在进行一些写操作,如何确保这不会对我的实际磁盘或快照造成任何错误?
答案 0 :(得分:2)
答案取决于您的操作系统。
Microsoft Windows Server支持快照。 Windows将停止文件系统活动并准备快照。在操作系统运行时,这是一种安全的操作。
在拍摄快照时(不添加第三方软件),Linux不会做任何特殊的事情。这意味着在操作系统运行时,Linux上的快照并不安全。关闭操作系统,然后对磁盘进行快照或映像并重新启动实例。
除非操作系统为快照,打开的文件,缓存,数据库句柄等在内存中做特殊的事情。此数据不是快照的一部分。因此,在某些情况下,这将导致快照不一致。这意味着数据损坏。
Google不建议对实时系统进行快照。 AWS或Azure都不是。
答案 1 :(得分:1)
由于持久性磁盘的快照不是瞬时的,因此并行写入可能会破坏操作。
通常按照以下步骤进行安全的快照过程:
这些最佳做法由Google Cloud直接推荐,并描述如下:https://cloud.google.com/compute/docs/disks/snapshot-best-practices
答案 2 :(得分:1)
是的,建议您在创建快照之前先停止实例,但是根据我的经验,如果实例仍在运行;它的I / O似乎没有受到影响。但是快照中的实际信息可能已损坏。
请记住要按计划快照查看项目的配额,而成本将与网络流量有关。
我为您提供了有关时间表快照的更多信息的链接: https://cloud.google.com/compute/docs/disks/scheduled-snapshots
答案 3 :(得分:0)
否。
拍摄快照时对永久磁盘性能没有影响。
快照将持续完成所有已完成的IO操作,直到拍摄快照为止。但是,根据您使用的应用程序,它可能处于不一致状态。例如。如果您使用innodb_flush_log_at_trx_commit = 2
运行MySQL,则可能会丢失一些数据,因为某些事务在被确认为应用程序之前可能不会刷新到PD。
如果您使用innodb_flush_log_at_trx_commit = 0
(默认)运行MySQL,则理论上它应该能够进行崩溃恢复并还原所有提交的转换。实际上,应用程序和文件系统中可能存在错误,因此建议您定期测试您的恢复过程。