【已解决】服务器磁盘空间不足,运行 seaf-gc.sh 清理后,资料库提示错误

今天早上在创建资料库时,提示不能创建,发现磁盘空间不足,运行 seaf-gc.sh 清理之后,可以运行 seafile.sh 和 seahub.sh,但是网页端会显示资料库错误,客户端显示服务器内部错误。

服务器 Seafile 版本 7.1.4
seafile-server-latest 目录所有者 root:root,通过 root 账户启动

以下是 seahub.log 中的内容

2021-12-07 05:32:38,476 [ERROR] seahub.notifications.utils:97 update_notice_detail [Errno 111] Connection refused
2021-12-07 05:32:38,477 [ERROR] seahub.notifications.utils:60 update_notice_detail [Errno 111] Connection refused
2021-12-07 05:32:38,477 [ERROR] seahub.notifications.utils:60 update_notice_detail [Errno 111] Connection refused
2021-12-07 05:32:38,477 [ERROR] seahub.notifications.utils:60 update_notice_detail [Errno 111] Connection refused
2021-12-07 05:32:38,478 [ERROR] seahub.notifications.utils:97 update_notice_detail [Errno 111] Connection refused
2021-12-07 05:32:38,478 [ERROR] seahub.notifications.utils:97 update_notice_detail [Errno 111] Connection refused
2021-12-07 05:32:39,205 [ERROR] django.request:132 handle_uncaught_exception Internal Server Error: /api/v2.1/repos/
Traceback (most recent call last):
File “/home/server/seafile/seafile-server-7.1.4/seafile/lib64/python3.6/site-packages/pysearpc/named_pipe.py”, line 88, in _get_transport
transport = self._pool.get(False)
File “/usr/lib/python3.8/queue.py”, line 167, in get
raise Empty
_queue.Empty

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “/home/server/seafile/seafile-server-7.1.4/seahub/thirdpart/django/core/handlers/exception.py”, line 41, in inner
response = get_response(request)
File “/home/server/seafile/seafile-server-7.1.4/seahub/thirdpart/django/core/handlers/base.py”, line 249, in _legacy_get_response
response = self._get_response(request)
File “/home/server/seafile/seafile-server-7.1.4/seahub/thirdpart/django/core/handlers/base.py”, line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File “/home/server/seafile/seafile-server-7.1.4/seahub/thirdpart/django/core/handlers/base.py”, line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File “/home/server/seafile/seafile-server-7.1.4/seahub/thirdpart/django/views/decorators/csrf.py”, line 58, in wrapped_view
return view_func(*args, **kwargs)
File “/home/server/seafile/seafile-server-7.1.4/seahub/thirdpart/django/views/generic/base.py”, line 68, in view
return self.dispatch(request, *args, **kwargs)
File “/home/server/seafile/seafile-server-7.1.4/seahub/thirdpart/rest_framework/views.py”, line 505, in dispatch
response = self.handle_exception(exc)
File “/home/server/seafile/seafile-server-7.1.4/seahub/thirdpart/rest_framework/views.py”, line 465, in handle_exception
self.raise_uncaught_exception(exc)
File “/home/server/seafile/seafile-server-7.1.4/seahub/thirdpart/rest_framework/views.py”, line 476, in raise_uncaught_exception
raise exc
File “/home/server/seafile/seafile-server-7.1.4/seahub/thirdpart/rest_framework/views.py”, line 502, in dispatch
response = handler(request, *args, **kwargs)
File “/home/server/seafile/seafile-server-7.1.4/seahub/seahub/api2/endpoints/repos.py”, line 89, in get
owned_repos = seafile_api.get_owned_repo_list(email,
File “/home/server/seafile/seafile-server-7.1.4/seafile/lib64/python3.6/site-packages/seaserv/api.py”, line 135, in get_owned_repo_list
return seafserv_threaded_rpc.list_owned_repos(username,
File “/home/server/seafile/seafile-server-7.1.4/seafile/lib64/python3.6/site-packages/pysearpc/client.py”, line 126, in newfunc
ret_str = self.call_remote_func_sync(fcall_str)
File “/home/server/seafile/seafile-server-7.1.4/seafile/lib64/python3.6/site-packages/pysearpc/named_pipe.py”, line 100, in call_remote_func_sync
transport = self._get_transport()
File “/home/server/seafile/seafile-server-7.1.4/seafile/lib64/python3.6/site-packages/pysearpc/named_pipe.py”, line 90, in _get_transport
transport = self._create_transport()
File “/home/server/seafile/seafile-server-7.1.4/seafile/lib64/python3.6/site-packages/pysearpc/named_pipe.py”, line 83, in _create_transport
transport.connect()
File “/home/server/seafile/seafile-server-7.1.4/seafile/lib64/python3.6/site-packages/pysearpc/named_pipe.py”, line 47, in connect
self.pipe.connect(self.socket_path)
ConnectionRefusedError: [Errno 111] Connection refused

以下为 seafile.log 中的内容

[12/07/21 05:46:09] socket file exists, delete it anyway
[12/07/21 05:46:09] http-server.c(176): fileserver: worker_threads = 10
[12/07/21 05:46:09] http-server.c(191): fileserver: fixed_block_size = 20971520
[12/07/21 05:46:09] http-server.c(206): fileserver: web_token_expire_time = 3600
[12/07/21 05:46:09] http-server.c(221): fileserver: max_indexing_threads = 10
[12/07/21 05:46:09] http-server.c(236): fileserver: max_index_processing_threads= 3
[12/07/21 05:46:09] http-server.c(258): fileserver: cluster_shared_temp_file_mode = 600
[12/07/2021 05:46:09 AM] http-server.c(2457): Could not bind socket: Address already in use

问题已解决。

根据 seafile.log 中提到的
[12/07/2021 05:46:09 AM] http-server.c(2457): Could not bind socket: Address already in use

在 ./seafile.sh stop 和 ./seahub.sh stop 之后
使用 netstat -nap | grep LISTEN 监听到 seaf-server 仍活动于8082端口。

猜测可能是磁盘空间占满时,对 seafile 服务的停止没有成功,虽然之后不管是 start stop 还是 restart 运行结果提示是完成 Done 状态,但是日志中都是提示存在被占用。

在这之前也有清空 /tmp/seahub_cache