【Seafile】Seafile容器版文件删除后存储空间不释放问题解决

        Seafile是一款非常优秀的网盘系统,我们可以根据官方文档,在本地虚拟机研究Seafile免费版的安装和使用,安装建议采用使用docker容器的方式。

不过在使用过程中,刚接触的小伙伴可能会遇到这样的问题:

删除网盘里面的文件,发现虚拟机里面的存储空间并未主动释放……

下面我就为大家演示如何去解决这个问题。

首先,我们在网盘里面上传两个大的软件,如下图所示:

然后,我们可以虚拟机的存储目录的空间占用和数据分片信息,如下所示:

# du -sh *
4.0K    current_version
0       httptemp
0       library-template
214M    storage
0       tmpfiles
# pwd
/data/seafile/data/seafile/seafile-data
# cd storage/
# ls
blocks  commits  fs
# cd blocks/
# du -sh *
24K     3c37d12a-0f22-4e40-8b91-fc8212be6186
4.0K    58911f86-a218-4705-a7f9-affe50d26e61
214M    621bedb8-cf9d-42c5-87df-622f5d2447a0
# cd 621bedb8-cf9d-42c5-87df-622f5d2447a0
# du -sh *
8.0M    00
8.0M    09
8.0M    0f
8.0M    1b
8.0M    2d
8.0M    37
16M     55
8.0M    60
8.0M    63
8.0M    64
16M     67
8.0M    68
8.0M    71
8.0M    86
8.0M    98
1.6M    9f
8.0M    a6
8.0M    ac
8.0M    b8
8.0M    d2
4.2M    d8
8.0M    dc
8.0M    e2
8.0M    f1
8.0M    f8
8.0M    fc

现在,我们来删除网盘中的两个软件,然后再来看存储空间的使用情况。

然后点击页面的回收站图标,进入回收站,并清空回收站中的垃圾,选择【全部】,然后【提交】即可。

存储空间并未减小

# du -sh *
4.0K    current_version
0       httptemp
0       library-template
214M    storage
0       tmpfiles
# pwd
/data/seafile/data/seafile/seafile-data

【解决】

第一步,连接到seafile的容器实例。

# docker-compose -f ./myseafile-20240529.yml ps
NAME                    IMAGE                                     COMMAND                   SERVICE         CREATED             STATUS             PORTS
seafile                 seafileltd/seafile-mc:11.0.8              "/sbin/my_init -- /s…"   seafile         About an hour ago   Up About an hour   0.0.0.0:80->80/tcp, :::80->80/tcp# docker exec -ti seafile /bin/bash
root@704cb904937d:/opt/seafile# ls
ccnet  conf  logs  pids  pro-data  seafile-data  seafile-server-11.0.8  seafile-server-latest  seahub-data

第二步,执行seahub.sh和seafile.sh的关闭、seaf-gc.sh、启动seahub.sh和seafile.sh,最后exit退出容器。

root@704cb904937d:/opt/seafile/seafile-server-11.0.8# ./seahub.sh stopStopping seahub ...
Failed to stop seahub.
root@704cb904937d:/opt/seafile/seafile-server-11.0.8# ./seafile.sh stopStopping seafile server ...
Done.
root@704cb904937d:/opt/seafile/seafile-server-11.0.8# ./seaf-gc.shStarting seafserv-gc, please wait ...
2024-05-30 16:48:36 gc-core.c(590): GC version 1 repo My Library Template(f1a3739b-e3e6-461c-b253-698705112697)
2024-05-30 16:48:36 gc-core.c(395): No blocks. Skip GC.2024-05-30 16:48:36 gc-core.c(590): GC version 1 repo 软件资源(621bedb8-cf9d-42c5-87df-622f5d2447a0)
2024-05-30 16:48:36 gc-core.c(417): GC started. Total block number is 28.
2024-05-30 16:48:36 gc-core.c(41): GC index size is 1024 Byte.
2024-05-30 16:48:36 gc-core.c(442): Populating index.
2024-05-30 16:48:36 gc-core.c(187): Populating index for repo 621bedb8.
2024-05-30 16:48:36 gc-core.c(271): Traversed 2 commits, 18 blocks.
2024-05-30 16:48:36 gc-core.c(460): Scanning and deleting unused blocks.
2024-05-30 16:48:36 gc-core.c(500): GC finished. 28 blocks total, about 18 reachable blocks, 10 blocks are removed.2024-05-30 16:48:36 gc-core.c(590): GC version 1 repo 我的文档(58911f86-a218-4705-a7f9-affe50d26e61)
2024-05-30 16:48:36 gc-core.c(417): GC started. Total block number is 1.
2024-05-30 16:48:36 gc-core.c(41): GC index size is 1024 Byte.
2024-05-30 16:48:36 gc-core.c(442): Populating index.
2024-05-30 16:48:36 gc-core.c(187): Populating index for repo 58911f86.
2024-05-30 16:48:36 gc-core.c(271): Traversed 2 commits, 1 blocks.
2024-05-30 16:48:36 gc-core.c(460): Scanning and deleting unused blocks.
2024-05-30 16:48:36 gc-core.c(500): GC finished. 1 blocks total, about 1 reachable blocks, 0 blocks are removed.2024-05-30 16:48:36 gc-core.c(534): === Repos deleted by users ===
2024-05-30 16:48:36 gc-core.c(606): === GC is finished ===
seafserv-gc run doneDone.
root@704cb904937d:/opt/seafile/seafile-server-11.0.8# ./seafile.sh startStarting seafile server, please wait ...
Seafile server startedDone.
root@704cb904937d:/opt/seafile/seafile-server-11.0.8# ./seahub.sh startStarting seahub at port 8000 ...Seahub is startedDone.root@704cb904937d:/opt/seafile/seafile-server-11.0.8# exit

这样执行后,发现storage还是142M,说明上面的方法没有回收空间。

# du -sh *
4.0K    current_version
0       httptemp
0       library-template
142M    storage
0       tmpfiles

然后,我们再次上传一个文件到软件资源目录下,然后再执行删除,再清空回收站,然后再次执行上面的服务停止脚本和GC脚本

root@704cb904937d:/opt/seafile/seafile-server-11.0.8# ./seahub.sh stopStopping seahub ...
Done.root@704cb904937d:/opt/seafile/seafile-server-11.0.8# ./seafile.sh stopStopping seafile server ...
Done.
root@704cb904937d:/opt/seafile/seafile-server-11.0.8# ./seaf-gc.sh Starting seafserv-gc, please wait ...
2024-05-30 16:54:40 gc-core.c(590): GC version 1 repo My Library Template(f1a3739b-e3e6-461c-b253-698705112697)
2024-05-30 16:54:40 gc-core.c(395): No blocks. Skip GC.2024-05-30 16:54:40 gc-core.c(590): GC version 1 repo 软件资源(621bedb8-cf9d-42c5-87df-622f5d2447a0)
2024-05-30 16:54:40 gc-core.c(417): GC started. Total block number is 19.
2024-05-30 16:54:40 gc-core.c(41): GC index size is 1024 Byte.
2024-05-30 16:54:40 gc-core.c(442): Populating index.
2024-05-30 16:54:40 gc-core.c(187): Populating index for repo 621bedb8.
2024-05-30 16:54:40 gc-core.c(271): Traversed 2 commits, 1 blocks.
2024-05-30 16:54:40 gc-core.c(460): Scanning and deleting unused blocks.
2024-05-30 16:54:40 gc-core.c(500): GC finished. 19 blocks total, about 1 reachable blocks, 18 blocks are removed.2024-05-30 16:54:40 gc-core.c(590): GC version 1 repo 我的文档(58911f86-a218-4705-a7f9-affe50d26e61)
2024-05-30 16:54:40 gc-core.c(417): GC started. Total block number is 1.
2024-05-30 16:54:40 gc-core.c(41): GC index size is 1024 Byte.
2024-05-30 16:54:40 gc-core.c(442): Populating index.
2024-05-30 16:54:40 gc-core.c(187): Populating index for repo 58911f86.
2024-05-30 16:54:40 gc-core.c(271): Traversed 2 commits, 1 blocks.
2024-05-30 16:54:40 gc-core.c(460): Scanning and deleting unused blocks.
2024-05-30 16:54:40 gc-core.c(500): GC finished. 1 blocks total, about 1 reachable blocks, 0 blocks are removed.2024-05-30 16:54:40 gc-core.c(534): === Repos deleted by users ===
2024-05-30 16:54:40 gc-core.c(606): === GC is finished ===
seafserv-gc run doneDone.
root@704cb904937d:/opt/seafile/seafile-server-11.0.8# ./seafile.sh startStarting seafile server, please wait ...
Seafile server startedDone.
root@704cb904937d:/opt/seafile/seafile-server-11.0.8# ./seahub.sh startStarting seahub at port 8000 ...Seahub is startedDone.root@704cb904937d:/opt/seafile/seafile-server-11.0.8# exit
exit

再次查看存储目录,发现空间回收成功了。

# du -sh *
4.0K    current_version
0       httptemp
0       library-template
1.4M    storage
0       tmpfiles

不清楚为什么官方会这么设计,貌似同一个目录需要执行两次删除和清空文件,清空回收站文件后,在容器实例里面执行停止和GC脚本,第二次执行GC才能成功回收空间。

疑问:如果有多个目录执行了删除和清空操作,不知道是不是每个存储目录都要这样执行,如果是,那肯定是令人崩溃的。这个我就不做测试了……

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/20745.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++设计模式-状态模式

文章目录 28. 状态模式 运行在VS2022,x86,Debug下。 28. 状态模式 状态模式让一个对象的行为随着内部状态的改变而改变,而该对象也像换了类一样。应用:如在游戏开发中,游戏有不同场景,如主菜单、开始、战斗…

Houdini的PythonScript基本使用

前言 Houdini内置了Python脚本和相应的编辑器, 很多时候想灵活的制作各种Houdini工具, 基本是必须用到 Python。Houdini官方的python提供了非常完善的接口, 比如可以创建各种节点,连接各种节点,遍历节点各种数据,遍历节点参数等等。 Houdin…

word避免画质画质模糊方法

问题描述:   近期写文档时会高频率贴图,粘图过程中发现Word会自动压缩图片画质,而且压缩得很严重,下面是一幅图被压缩前后的画质对比 (图片压缩前) (图片压缩后) 解决方案&#x…

基于JSP的九宫格日志网站

你好呀,我是学长猫哥!如果有需求可以文末加我。 开发语言:Java 数据库:MySQL 技术:JSP技术 工具:浏览器/服务器(B/S)结构 系统展示 首页 管理员功能模块 用户功能模块 摘要 本…

GPT-4o VS GPT-3.5 完胜

前言: 最近,GPT-4o已经限时免费开放了,试了一下,然后,说我的时间到了,然后,有给我转到3.5,正好遇到一个问题做一下对吧,感觉4O完胜啊。3.5还是很好胡诌,也就…

[Algorithm][动态规划][子序列问题][最长定差子序列][最长的斐波那契子序列的长度]详细讲解

目录 1.最长定差子序列1.题目链接2.算法原理详解3.代码实现 2.最长的斐波那契子序列的长度1.题目链接2.算法原理详解3.代码实现 1.最长定差子序列 1.题目链接 最长定差子序列 2.算法原理详解 思路: 确定状态表示 -> dp[i]的含义 以i位置元素为结尾的所有子序列…

11.2 选择排序

目录 11.2 选择排序 11.2.1 算法特性 11.2 选择排序 选择排序(selection sort)的工作原理非常简单:开启一个循环,每轮从未排序区间选择最小的元素,将其放到已排序区间的末尾。 设数组的长度为 𝑛…

华东师范大学研究团队《Ecology Letters 》揭示植物如何改变其物候以响应全球变化

自工业革命以来,人类活动导致多种环境因子同时发生变化,包括气候变暖、降水模式改变、氮沉降增加和大气CO2升高。这些变化预计会影响植物生命周期事件的季节时序—植物物候(Nature Reviews Earth & Environment | 傅伯杰院士团队发文阐述…

[C][栈帧]详细讲解

目录 1.栈帧1.进程地址空间2.栈帧说明 2.认识相关寄存器3.认识相关汇编命令4.过程理解5.栈帧总结6.补充 1.栈帧 1.进程地址空间 .进程地址空间 2.栈帧说明 调用函数,形成栈帧函数返回,释放栈帧局部变量是存放在栈区上的栈区内存的使用习惯是&#xff…

BPTT算法详解:深入探究循环神经网络(RNN)中的梯度计算【原理理解】

引言 在深度学习领域中,我们经常处理的是独立同分布(i.i.d)的数据,比如图像分类、文本生成等任务,其中每个样本之间相互独立。然而,在现实生活中,许多数据具有时序结构,例如语言模型…

什么是PLAB?

接上文PLAB---》 可以看到和TLAB很像,PLAB即 Promotion Local Allocation Buffers。用在年轻代对象晋升到老年代时。 在多线程并行执行YGC时,可能有很多对象需要晋升到老年代,此时老年代的指针就"热"起来了,于是搞了个…

函数的创建和调用

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 提到函数,大家会想到数学函数吧,函数是数学最重要的一个模块,贯穿整个数学学习过程。在Python中,函数…

深入解析 YOLOv8 中的 `conv.py`(代码图文全解析-下)

😎 作者介绍:我是程序员行者孙,一个热爱分享技术的制能工人。计算机本硕,人工制能研究生。公众号:AI Sun,视频号:AI-行者Sun 🎈 本文专栏:本文收录于《yolov8》系列专栏&…

【linux软件基础知识】与调度相关的进程描述符

进程描述符 每个进程描述符都包括几个与调度相关的字段,如下代码所示: //include/asm-arm/thread_info.h /** low level task data that entry.S needs immediate access to.* __switch_to() assumes cpu_context follows immediately after cpu_domain.*/ struct thread_in…

6.1Java方法

1、方法定义: 方法是一种语法结构,它可以把一段代码封装成一个功能,以便重复调用 方法的完整格式: 修饰符 返回类型 方法名(形参列表){ 方法体代码(需要执行的功能代码) return 返回值; } package com.define;public class …

面向对象编程 (OOP):深入理解继承、多态和抽象

1. 简介 面向对象编程 (OOP) 是一种强大的编程范式,它通过将程序组织成对象的集合来简化软件设计和开发。与传统的程序设计方法相比,OOP 提供了一种更自然、更易于理解和维护的方式来构建复杂的软件系统。OOP 的核心概念包括:对象、类、继承、…

Java进阶学习笔记31——日期时间

Date: 代表的是日期和时间。 分配Date对象并初始化它以表示自标准基准时间(称为纪元)以来的指定毫秒数,即1970年1月1日00:00:00。 有参构造器。 package cn.ensource.d3_time;import java.util.Date;public class Test1Date {pu…

Java—异常处理

异常的结构图 异常知识点 异常分类: 按照在程序编译阶段是否被检查,异常分为编译时异常(Checked Exception)和运行时异常(Unchecked Exception)。编译时异常是指必须进行显式处理的异常,例如IOE…

【Linux】写一个日志类

文章目录 1. 源代码2. 函数功能概览3. 代码详细解释3.1 头文件和宏定义3.2 Log类定义3.3 打印日志的方法3.4 操作符重载和析构函数3.5 可变参数函数的原理 4. 测试用例 1. 源代码 下面代码定义了一个 Log 类,用于记录日志信息。这个类支持将日志信息输出到屏幕、单…

Java扩展机制:SPI与Spring.factories详解

一、SPI SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件。 整体机制图如下: Java SPI 实际上是“基于接口的编程+策略模式+配置文件”组合实现的动态加载机制。 系统设计的各个抽象,往往有很多不…