默认安装下,这些内部对象,会被直接存储在服务器的文件系统中(例如 Ext4,NTFS)。由于大多数文件系统,不能在服务器非正常关闭或系统崩溃后,保证文件内容的完整性。所以,如果当系统崩溃时,正在有新的内部对象被写入,那么当系统重启时,这些文件就会被损坏,相应的资料库也无法使用。 +
注意: 如果你把seafile-data 目录存储在有后备电源的 NAS(例如 EMC 或NetApp)系统中,或者使用 S3 作为专业版的服务器,内部对象不会被损坏。 +
Seafile服务器包含了seafile-fsck工具来帮助你恢复这些毁坏的对象(类似于git-fsck工具)。这个工具将会进行如下两项工作: +
1. 检查Seafile内部对象的完整性,并且删除毁坏的对象。 2. 恢复所有受影响的资料库到最近一致,可用的状态。 执行流程如下所示:
+
cdseafile-server-latest
./seaf-fsck.sh [--repair|-r] [--enable-sync|-e] [repo_id_1 [repo_id_2 ...]] seaf-fsck有检查资料库完整性和修复损坏资料库两种运行模式。 +
检查资料库完整性
执行 seaf-fsck.sh 不加任何参数将以只读方式检查所有资料库的完整性。 +
cdseafile-server-latest ./seaf-fsck.sh
如果你想检查指定资料库的完整性,只需将要检查的资料库 ID 作为参数即可: +
cdseafile-server-latest
./seaf-fsck.sh [library-id1] [library-id2] ... 运行输出如下:
+
[02/13/15 16:21:07] fsck.c(470): Running fsck for repo ca1a860d-e1c1-4a52-8123-0bf9def8697f.
[02/13/15 16:21:07] fsck.c(413): Checking file system integrity of repo fsck(ca1a860d)... [02/13/15 16:21:07] fsck.c(35): Dir 9c09d937397b51e1283d68ee7590cd9ce01fe4c9 is missing.
[02/13/15 16:21:07] fsck.c(200): Dir /bf/pk/(9c09d937) is curropted. [02/13/15 16:21:07] fsck.c(105): Block 36e3dd8757edeb97758b3b4d8530a4a8a045d3cb is corrupted.
[02/13/15 16:21:07] fsck.c(178): File /bf/02.1.md(ef37e350) is curropted.
[02/13/15 16:21:07] fsck.c(85): Block 650fb22495b0b199cff0f1e1ebf036e548fcb95a is missing.
[02/13/15 16:21:07] fsck.c(178): File /01.2.md(4a73621f) is curropted. [02/13/15 16:21:07] fsck.c(514): Fsck finished for repo ca1a860d. 被损坏的文件和目录将显示在输出的结果中。 +
有时,你会看到如下的输出结果:
+
[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.
这意味着记录在数据库中的 \(当前资料库状态的标识)与数据目录中的记录不一致。这种情况下,fsck会试着找出最近可用的一致状态,并检查其完整性。 +
建议: 如果你有很多资料库要检查,保存fsck的输出到日志文件中将有助于后面的进一步分析。 +
修复损坏的资料库
fsck修复损坏的资料库有如下两步流程: +
1. 如果记录在数据库中的资料库当前状态无法在数据目录中找出,fsck将会在数据目录中找到最近可
用状态。
2. 检查第一步中可用状态的完整性。如果文件或目录损坏,fsck将会将其置空并报告损坏的路径,用
户便可根据损坏的路径来进行恢复操作。 执行如下命令来修复所有资料库:
+
cdseafile-server-latest ./seaf-fsck.sh --repair
大多数情况下我们建议你首先以只读方式检查资料库的完整性,找出损坏的资料库后,执行如下命令来修复指定的资料库:
+
cdseafile-server-latest
./seaf-fsck.sh --repair [library-id1] [library-id2] ...
由于被损坏的文件或目录在修复过后会被置空,在客户端同步被修复的损坏资料库将会导致数据丢失,即客户端先前好的完整的文件或目录拷贝将被空文件或空目录替代。为了避免这种情况发生,服务器将会阻止客户端同步被修复的损坏资料库。系统管理员应该通知用户来恢复损坏的文件或目录,然后执行如下命令让此资料库可以再次同步:
+
cdseafile-server-latest
./seaf-fsck.sh --enable-sync [library-id1] [library-id2] ...
开源版5.0.3和企业版5.0.2中的改动
从开源版5.0.3和企业版5.0.2开始,我们对seaf-fsck命令作了两项改进: +
管理员执行 --repair 之后,不需要再执行 --enable-sync 命令。seaf-fsck会自动将改资料库的所有同步客户端解除同步。用户需要重新同步该资料库。
? seaf-fsck会在资料库的历史中添加一个损坏文件和目录的列表,便于用户找到损坏的路径
?
存储容量与文件上传/下载大小限制
Note: Seafile服务器 5.0.0 之后,所有配置文件都移动到了统一的conf目录下。了解详情. +
存储容量
可以通过在seafile.conf文件中增加以下语句,来为所有用户设置默认存储容量(比如,2GB)。 +
[quota]
# 用户存储容量,单位默认为 GB,要求为整数。 default = 2
在社区版5.0.5以后,你可以以 KB, MB, GB, TB 为单位来设置默认容量。比如 +
[quota]
default = 200MB
注意这里 1TB = 1000GB = 1000*1000MB 以此类推。 +
此设置对所有用户有效,如果想为某一用户单独设置,请在管理员界面更改。 +
文件修改历史保存期限 (seafile.conf)
如果你不想保存所有的文件修改历史,可以在seafile.conf中设置: +
[history]
# 文件修改历史保存期限(单位为“天”) keep_days = 10
文件上传/下载大小限制
在seafile.conf中: +
[fileserver]
# 设置最大上传文件为 200M. max_upload_size=200
# 设置最大下载文件/目录为 200M. max_download_dir_size=200
Seahub配置
Note: Seafile服务器 5.0.0 之后,所有配置文件都移动到了统一的conf目录下。了解详情. +
Seahub下发送邮件提醒
请参看发送邮件提醒 +
缓存
Seahub在默认文件系统(/tmp/seahub_cache/)中缓存文件(avatars, profiles, etc) . 你可以通过Memcached进行缓存操作 (前提是你已经安装了python-memcache模块).
+
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', } }
用户管理选项
The following options affect user registration, password and session. +
# 是非开启用户注册功能. 默认为 `False`. ENABLE_SIGNUP = False
# 用户注册后是否立刻激活,默认为 `True`. # 如设置为 `False`, 需管理员手动激活. ACTIVATE_AFTER_REGISTRATION = False
# 管理员新增用户后是否给用户发送邮件. 默认为 `True`. SEND_EMAIL_ON_ADDING_SYSTEM_MEMBER = True
# 管理员重置用户密码后是否给用户发送邮件. 默认为 `True`. SEND_EMAIL_ON_RESETTING_USER_PASSWD = True