其中一个AWS卷的快照已损坏。 我们使用这些快照作为备份,过去他们是一个很好的帮助。 (注意:这不是我们唯一的备份方法!)然而,损坏的快照是无用的。
我想知道如何处理这个,如何检测这个事先等等。
情况
我们有一个AWS Web服务器与一个大的ext3卷(数据)与许多图像在一个文件夹。 我们每日制作所有卷的快照,并且在保存四周的时候,这个卷的成本太高。 我只需要紧急情况下的图像快照,而我想要正常数量的剩余部分。 这是我想要做的:
第3步没有工作。 我得到了以下错误:
sudo mount / dev / xvdf / images
mount / mount / dev / xvdf / images失败:结构需要清理
谷歌search这个错误,我发现build议做一个xfs_check,但文件系统是ext3,所以我试过e2fsck。 这导致了无尽的错误和修复,似乎没有工作。
sudo xfs_check /dev/xvdf sudo e2fsck -f /dev/xvdf
我创build了一个新的卷IMAGES,并使用rsync来复制所有内容,因为cp导致崩溃。 我立即创build了一个新卷的快照,并恢复了它,看看它是否行得通。
然后,我开始分割音量,并用两个新音量replace旧音量。 这一切正常,问题解决了。
亚马逊支持
不过,我想知道这里发生了什么,以及如何防止这种情况,所以我联系了亚马逊支持。 他们告诉我快照是坏的,可能是因为快照是在卷被使用时拍摄的。 我们一直这样做,用这些快照做了许多恢复(但不是这个卷),从来没有问题。 该卷已附加,但在快照时未写入。
我决定采取build议,分离音量,做一个快照,看看发生了什么事。 分离后,原始数据卷不能再被附加。 由于我已经replace了这个卷,所以它没有任何影响,所以这不是一个大问题,但显然这不是像adv(ert)ised一样工作。
快照可以附加和挂载,我可以打开打开的文件夹等。当我执行一个e2fsck,我再次得到错误。 回想起来,我忘了在原始数据卷上做这个e2fsck,这太可惜了。 我想这也会报告错误。
亚马逊支持这次低于平均水平,这是一个遗憾。
问题
badblocks命令(结构需要清理)。 在将快照还原到新的(虚拟)卷时,检查该卷似乎是无用的,因为它位于不同的物理位置。 在这种情况下badblocks有用吗? 快照未损坏。 包含快照的文件系统已损坏。 有一个区别。
如果在文件系统处于数据写入过程中拍摄快照,则快照中的文件系统可能会损坏。 当启动快照时,只有一些全部或者全部没有的块被写入时才会发生这种情况。
以前,如果您的旧快照是在卷被使用时进行的,而且恢复正常,那简直就是运气不佳:在启动快照时文件系统没有被写入。 你的好运气已经耗尽,你已经遇到了这种情况的可能影响。
处理这个问题最简单的方法就是简单地防止它首先发生。 为了避免这些问题,AWSbuild议:
fsfreeze ), umount ),或者 aws ec2 stop-instances )。 请参阅: http : //docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-creating-snapshot.html
由于您发现自己的文件系统已损坏,因此最好采取的行动之一就是在做任何事情之前修复文件系统。
xfs_check或e2fsck来修复文件系统上的任何损坏的块。 一旦你的文件系统被修复,然后采取措施来防止这个问题(见第1节)。