云存储产品,作为数据的集中地,设计能考虑好完备的数据容灾方案,才是一个成熟的产品。Seafile在数据容灾方面有以下几点考虑:
Seafile可以切换到数据的任意版本,免于数据操作失误或者勒索软件篡改导致的损失。Seafile会保存所有数据的历史记录,并且具备镜像功能。如果一个文件或库改变,Seafile会将这些改变作为一个新版本来保存,而用户可以方便地回到任何一个版本。
数据备份是容灾方案中的重点,Seafile能方便地对数据进行备份。在服务器端,Seafile是通过一种内部格式将文件存储在资料库中,并对于文件和目录有其独有的保存方式(类似于Git)。默认安装下,这些内部对象,会被直接存储在服务器的文件系统中(例如 Ext4,NTFS)。文件在服务器上通过分块存储,以支持大文件的断点续传和增量同步。管理员可以用官方工具Seafile fuse扩展把所有的文件挂载到一个目录下,以普通目录树的形式访问和备份。
Seafile 有实时同步功能,可以实时地对数据进行异地备份。实时备份时,备份服务使用类似于Seafile桌面客户端的同步算法,从主服务器里检索数据。当有数据更新,主服务器会通知备份服务去检索改变的数据,备份服务会使用同步增量算法近实时地去更新。备份服务也会定时主动去检查主服务器是否有需要更新的数据,以防止主服务器通知遗漏的故障发生。
最后考虑极端异常的情况,比如操作不得当,Seafile服务宕机,seafile-fsck 可以完整导出服务器上的所有数据。大多数文件系统,不能在服务器非正常关闭或系统崩溃后,保证文件内容的完整性。当系统崩溃时,正在有新的内部对象被写入,那么当系统重启时,这些文件就会被损坏,相应的资料库也无法使用。基于此的考虑,这个工具也具有检查Seafile内部对象完整性并删除毁坏对象,和恢复资料库的功能。