最近,我的任务是改进传统服务器的备份策略,通过基于终端的界面支持150名用户。当前的问题是,服务器在凌晨2点进行了单个备份,并且由于应用程序套件的性质和所涉及的语言(每个数据文件都是离散的,数据文件之间没有强制引用完整性,但记录可以跨多个数据文件传播-每个数据文件在应用程序套件中按顺序写入,因此有可能更新一个文件,而另一个文件不更新,从而创建不一致的记录),因此服务器需要在这段时间内使用。
因此,如果服务器在工作日结束时(但在清晨备份之前)以某种方式出现故障,我们将丢失大量的工作。
在服务器运行AIX5.x时,我决定在需要备份的文件系统上实现JFS2快照,这意味着我可以将清晨备份中的“超时系统”减少到实际进行hte备份所需的时间。这将是我们的“保证备份”。
然而,我也希望通过在白天进行两次“无保证备份”来减少一整天数据丢失的风险,而不将用户从系统中删除。
这里的理由是,如果我们在服务器上遇到完全停电的情况,很大一部分数据文件将被损坏--这发生在一个月前( UPS破坏了受保护的电路,摧毁了服务器--这是不应该发生的事情之一)。但是,获取快照的行为不会导致快照中的数据文件损坏,只会导致当前正在处理的损坏记录的可能性。或者,换句话说,可以控制的,可管理的腐败水平,可以检查,如果每个人都知道它存在的第一。
所以,我要问的问题是:
JFS2快照如何处理完全停电的情况?在我们上个月发生的事件中,我们损失了大约60%的数据,但是这个分区的快照怎么会公平呢?它也会遭受腐败,还是会没事?
例如,我有/mydata/并在下午6点将其快照到/mysnapshot晚上7点,我们遇到了“最坏的情况”,/mydata被严重破坏了。快照也会损坏吗?AIX和JFS2如何在后台处理这个问题?快照是否可用?
我想补充的是,在凌晨2点窗口中也有磁带和远程文件副本备份,所以我们不依赖快照作为实际的备份,而只是为了结束对备份的改进。白天的额外快照是一定的精确性,而不是我们所依赖的任何东西。
发布于 2009-07-03 06:31:10
理论上,只要快照被提交到磁盘(也假设FS或LVM中管理快照的部分通常不被写入),您就应该没事。
但是,听起来您的应用程序使用fsync效果很差,如果明智地使用适当的posix文件系统,它可以得到改进(尽管会稍微慢一些)。
参见斯图尔特·史密斯在linux.conf.au 2007:http://www.linux.org.au/conf/2007/talk/278.html上的“吃我的数据”演讲
https://serverfault.com/questions/34388
复制相似问题