????????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才能成功回收空間。
疑問:如果有多個目錄執行了刪除和清空操作,不知道是不是每個存儲目錄都要這樣執行,如果是,那肯定是令人崩潰的。這個我就不做測試了……