您现在的位置:首页 > >

Seafile深入学*(十七) 之 fsck修复工具

发布时间:

seaf-fsck工具:Seafile用自己的内部对象格式存储数据,所以,如果当文件系统崩溃时,正在有新的内部对象被写入,那么当系统*羰保庑┪募突岜凰鸹担嘤Φ淖柿峡庖参薹ㄊ褂谩eafile提供fsck数据损坏检测和修复工具。




干货:


这里其实有三种损坏的情况。【我感觉理解的太到位了】


第一种,就只是文件或者目录损坏了,我们用fsck的修复模式修复资料库的元数据(也就是文件和目录对象),fsck会把损坏的文件或者目录置空,然后让资料库恢复可以访问的状态。但是你已经把元数据置空了,文件毕竟没了,管理员应该通知用户,要么重新上传,要么从资料库历史里面找到文件然后恢复。


第二种比较特殊,数据库中存储的最新的head commit id,和数据的目录中记录的id不一致。导致整个资料库不可用(那只能往前找能用的历史版本了),这时候fsck会找到资料库最*的一致且可用的状态来恢复。


第三种,mysql数据库完全损坏而且没有备份,head commit id就没有了。但是只要数据目录还在,fsck可以把所有文件整体导出到外部的文件系统中。可以导出某些资料库,也可以导出所有资料库。加密资料库无法导出。


















seaf-fsck 有检查资料库完整性和修复损坏资料库两种运行模式。



执行 seaf-fsck.sh 不加任何参数将以只读方式检查所有资料库的完整性。


cd seafile-server-latest
./seaf-fsck.sh




被损坏的文件和目录将显示在输出的结果中。




+


有时,你会看到如下的输出结果:


[02/13/15 16:36:11] Commit 6259251e2b0dd9a8e99925ae6199cbf4c134ec10 is missing
[02/13/15 16:36:11] fsck.c(476): Repo ca1a860d HEAD commit is corrupted, need to restore to an old version.
[02/13/15 16:36:11] fsck.c(314): Scanning available commits...
[02/13/15 16:36:11] fsck.c(376): Find available commit 1b26b13c(created at 2015-02-13 16:10:21) for repo ca1a860d.

这意味着记录在数据库中的 "head commit" (当前资料库状态的标识)与数据目录中的记录不一致。这种情况下,fsck 会试着找出最*可用的一致状态,并检查其完整性。









热文推荐
猜你喜欢
友情链接: 医学资料大全 农林牧渔 幼儿教育心得 小学教育 中学 高中 职业教育 成人教育 大学资料 求职职场 职场文档 总结汇报