为Docker部署的Seafile清理垃圾回收磁盘空间的操作流程


文档类型: 知识文档
类型版本: 2.0.0
标题: 为Docker部署的Seafile清理垃圾回收磁盘空间的操作流程
创建日期: 2024-11-14
Tags: [软件/云服务器/宝塔面板, 腾讯云, 运维, seafile, 云盘, 磁盘]
专辑: 云路
章节序号: 04
状态: 实践
来源: Seafile GC - seafile-manual-cn

学习总结

由于seafile的数据存储机制,seafile的删除(包括清空回收站)并不会将已经不再使用的数据块进行删除,这会造成占用磁盘空间的持续增加。尽管seafile网站上提供的服务器手册说明了关于删除垃圾数据块回收磁盘空间的操作,但与docker部署的略有不同。这涉及到一些docker管理的知识。在chatgpt的指导下,我结合手册的说明成功实现了垃圾数据块的删除。

为Docker部署的Seafile清理垃圾回收磁盘空间的操作流程

配置背景

基于docker部署的Seafile社区版9.0.10,于腾讯云轻量服务器,基于CentosOS7,使用宝塔面板腾讯云专享版8.0.5进行操作。

1. 进入脚本目录

使用命令
docker exec -it [容器名] /bin/bash
cd [脚本文件所在目录]
例如:
docker exec seafile /bin/bash
cd seafile-server-latest

2.关闭正在运行的进程

使用命令关闭seafile进程
./seafile.sh stop
我在进行下一步清理的时候,提示我seafile的webdav进程在运行,并提示我输入
kill [pid]
关闭进程,但我操作时导致了死机。服务器重启后再次进行,就没有提示该进程占用。

3.清理数据块

使用命令
./seaf-gc.sh [资料库id] [资料库id]
如果指定了资料库id,则仅删除该资料库下的垃圾数据块,如果不指定,则删除所有资料库的垃圾数据块。

本文未解决的问题

  1. 仍未成功删除数据库中的历史记录。似乎是因为脚本seahub.sh中需要运行python而我的服务器并未部署python环境。
  2. 仍未成功删除FS对象,因为我不知道FS对象是啥,反正删完数据块以后磁盘空间就够用了,所以没有测试删除FS对象。
  3. 仍未成功删除指定的资料库数据块,因为我不知道怎么获取资料库ID。

1.清理数据库可以参考:清理数据库 - seafile-manual-cn
垃圾回收参考:Seafile GC - seafile-manual-cn
2. 删除FS对象,可以使用命令 seaf-gc.sh --rm-fs (注意, 专业版 10.0.15 之前,社区版 11.0.7 之前的版本这个命令有 bug,请不要运行这个命令)
3. 可以通过浏览器查看链接,例如 http://xxx/library/15e35ea5-2d4f-4aed-a236-3efc15a1644d/test/ ,‘15e35ea5-2d4f-4aed-a236-3efc15a1644d’即为资料库ID