我只是需要在更新失败后恢复虚拟服务器。由于受影响文件的范围尚不清楚,因此我完全恢复了大多数目录,但 /home 除外,因为它没有受到影响。
恢复期间,服务器处于特殊恢复模式,所有服务均关闭。
恢复后,最初一切看起来都很好。然而,令我惊讶的是,一个 svn 存储库和一个 git 存储库被损坏了。我们每天通常有 1-2 次提交,因此在备份时恰好发生 2 次提交的可能性很小。在这种情况下,重建存储库并不是什么大问题,但怎么会发生这种情况?是因为缓存数据未写入磁盘还是类似原因?
快照备份是否可以消除这种风险?
答案1
我随口这么想:文件系统可能存在问题,因此导致损坏。
或者,正如您所怀疑的那样,系统内存中有文件,但尚未写入磁盘。然后,当系统宕机时,文件处于不一致的状态。
如果不知道文件系统的损坏程度,就很难判断。
至于快照,如果您指的是托管服务上的虚拟专用服务器的快照,则不一定。文件系统的快照不会帮助您处理“正在传输”的文件;即在内存中被操作的文件。如果您要对运行数据库的 EC2 实例进行快照,快照将获取文件系统的状态,但不会获取数据库在内存中保存的缓存数据,因此恢复可能会导致机器不一致。这就是为什么亚马逊建议在拍摄快照之前关闭正在运行的实例或卸载 EBS 卷,尽管可以进行实时快照。