[Feature Requests & Feedback] persistent分区清理,ostree清理
Tofloor
poster avatar
哈哈
deepin
2025-09-28 23:42
Author

之前安装了V25的系统,那个时候感觉没啥问题,后来不是很经常打开他,日常用Windows,今天兴致来了打开看看有没有什么更新的功能,比如DDM啥的,看着更新中确实有个1.8G的更新,我去更新了,到这一直没问题,直到,我打开应用商店准备安装的VS CODE,直接提示空间不足,我想来想去,觉得不对劲,数据盘的空间应该还有很多才对,然后我一看persistent,直接占用91%,后来经过一番查找,发现ostree目录占用特别大,就好奇找了找资料想清理一下,但是我看到了很多回答,包括但不限于: 这个系统类似git,现在使用的系统也是以ostree中的系统为基础构建,删除里面的文件就会导致现在的系统进不去等等。

我是准小白,以小白的角度来说,在资源不是那么富裕的情况下每一丝空间都是非常宝贵的,但是ostree文件夹中的各种文件并不知道能不能清理,就算能清理也不知道如何清理,比如只读啥的,希望官方能够出一个能够解决这个清理问题的软件或者安全清理ostree的方法!

Reply Favorite View the author
All Replies
把一切操作变成GUI
deepin
Backbone of ecological co-construction group
2025-09-29 01:07
#1

+1

Reply View the author
sshnuke
deepin
2025-09-29 05:43
#2

以下来自grok

清理 ostree(一种用于管理操作系统版本和更新的文件系统树工具)需要谨慎操作,以确保不会破坏系统或删除关键数据。以下是清理 ostree 的常见步骤和注意事项,适用于使用 ostree 的系统(如 Fedora Silverblue、CoreOS 或其他基于 OSTree 的发行版):

1. 了解 ostree 的结构

ostree 是一个基于 Git 的文件系统,用于管理不可变操作系统的版本。它存储在 /ostree 目录中,包含:

  • Commits:系统快照(版本)。
  • Deployments:已部署的系统版本。
  • Repo/ostree/repo 存储所有提交和对象。

清理的目标通常是删除旧的提交、部署或未使用的对象,以释放空间。


2. 检查当前部署

运行以下命令查看当前系统使用的部署:

ostree admin status

输出会列出所有部署,包括当前正在运行的版本和备用版本。记下你想保留的部署。


3. 清理未使用的部署

如果有多个旧的部署,可以删除不再需要的部署:

ostree admin undeploy 
  • ostree admin status 输出中列出的部署编号(通常从 0 开始)。

  • 至少保留一个部署(当前运行的系统)。

  • 示例:

    ostree admin undeploy 1
    

    这会删除索引为 1 的部署。

注意:在删除前确认你不需要这些部署,因为它们可能包含特定版本或配置。


4. 清理未引用的对象

ostree 存储库可能包含未被任何部署引用的对象(例如,旧提交或未使用的文件)。运行以下命令清理这些对象:

ostree prune --refs-only --depth=-1
  • --refs-only:仅保留被引用的对象。
  • --depth=-1:检查所有历史提交。
  • 如果想查看将要删除的内容,可以先运行:
    ostree prune --refs-only --depth=-1 --dry-run
    

警告:谨慎使用 prune,因为它会永久删除未引用的对象。


5. 压缩存储库

随着时间推移,ostree 存储库可能会变得碎片化。运行以下命令压缩存储库以优化空间:

ostree fsck
ostree repo --pack
  • ostree fsck:检查存储库完整性。
  • --pack:重新打包存储库以提高效率。

6. 清理缓存

ostree 可能会缓存一些临时数据,特别是在 /ostree/repo/tmp 中。手动检查并删除不需要的临时文件:

sudo rm -rf /ostree/repo/tmp/*

注意:确保系统当前没有正在运行的 ostree 操作(如更新或部署),否则可能导致错误。


7. 更新系统并清理旧版本

确保系统是最新的,以避免清理仍在使用的版本:

ostree admin upgrade

更新后,重复步骤 3 和 4 删除旧部署和未引用的对象。


8. 检查磁盘使用情况

在清理前后,可以使用以下命令检查磁盘使用情况,确认清理效果:

du -sh /ostree/repo
df -h /

9. 注意事项

  • 备份:在清理前,建议备份重要数据或创建系统快照(如果系统支持)。
  • 权限:大多数 ostree 命令需要 sudo 或 root 权限。
  • 谨慎操作:误删关键部署或对象可能导致系统不可启动。
  • 容器化系统:如果使用 Fedora Silverblue 或类似系统,清理 ostree 后可能需要重新安装工具箱或容器。

10. 针对特定发行版的说明

  • Fedora Silverblue/Kinoite
    使用 rpm-ostree 命令管理更新和清理,例如:

    rpm-ostree cleanup -p
    

    这会清理挂起的部署和缓存。

  • CoreOS
    CoreOS 通常结合 ignitionostree 使用,清理时需确保不影响自动更新机制。


如果你有具体的清理目标(例如释放特定数量的磁盘空间)或遇到错误,请提供更多细节,我可以进一步定制解决方案!

Reply View the author
森林的天空
deepin
2025-09-29 09:28
#3

deepin v25大概率是通过把ostree封装了一下,形成了deepin-immutable-ctl、deepin-immutable-mount-root、deepin-immutable-grub-generate deepin-immutable-writable 四个不可变系统的管理或配置接口,包括系统还自带的gui的备份、还原工具,官网如果能提供详细的说明文档就好了,起码让我们知道到底用那个,会不会冲突,能更加好的备份/快照、回滚。

Reply View the author
新手小白
deepin
2025-09-29 10:14
#4

幸好我没有
图片.png

Reply View the author
叶落无语
deepin
2025-09-29 10:58
#5

在DeepIn V25 25.0.7下测试了一下:

sudo ostree fsck 可以运行,不过耗时巨久。

sudo ostree prune --refs-only --depth=-1 --dry-run需要修改成 sudo ostree prune --refs-only --depth=-1 --no-prune

ostree repo --pack 无法执行,好像并不支持 repo 参数。

可能 DeepIn 对 ostree 进行了一些修改。

Reply View the author
哈哈
deepin
2025-09-29 17:58
#6
森林的天空

deepin v25大概率是通过把ostree封装了一下,形成了deepin-immutable-ctl、deepin-immutable-mount-root、deepin-immutable-grub-generate deepin-immutable-writable 四个不可变系统的管理或配置接口,包括系统还自带的gui的备份、还原工具,官网如果能提供详细的说明文档就好了,起码让我们知道到底用那个,会不会冲突,能更加好的备份/快照、回滚。

最好是可以直接一键清除旧版本,毕竟有像我一样资源不足且不需使用回滚的人😭 ,等真碰到了那种极端情况我想我肯定是直接重装的😭

Reply View the author
哈哈
deepin
2025-09-29 17:59
#7
新手小白

幸好我没有
图片.png

为什么你只有一个系统分区,你的数据分区呢😢

Reply View the author
哈哈
deepin
2025-09-29 18:01
#8
叶落无语

在DeepIn V25 25.0.7下测试了一下:

sudo ostree fsck 可以运行,不过耗时巨久。

sudo ostree prune --refs-only --depth=-1 --dry-run需要修改成 sudo ostree prune --refs-only --depth=-1 --no-prune

ostree repo --pack 无法执行,好像并不支持 repo 参数。

可能 DeepIn 对 ostree 进行了一些修改。

有GUI我会更喜欢他的🤤

Reply View the author
wcs4221
deepin beta test group
2025-09-30 13:59
#9

这是个事。应有删的方法为好!

Reply View the author
iceyer
deepin
2025-09-30 15:36
#10

能看看

 du -h -d 2 /persistent/

df -h

deepin-immutable-ctl snapshot list -v

这些命令的结果吗?

Reply View the author
哈哈
deepin
6 hours ago
#11
iceyer

能看看

 du -h -d 2 /persistent/

df -h

deepin-immutable-ctl snapshot list -v

这些命令的结果吗?

已经重装了
prox@prox-PC:~$ sudo  du -h -d 2 /persistent/
请输入密码:
验证成功
4.0K    /persistent/root/.ssh
12K     /persistent/root/.local
2.1M    /persistent/root/.cache
8.0K    /persistent/root/.config
2.1M    /persistent/root
16K     /persistent/lost+found
2.8G    /persistent/ostree/data
760K    /persistent/ostree/snapshot
147M    /persistent/ostree/repo
11G     /persistent/ostree/deploy
14G     /persistent/ostree
4.9G    /persistent/overlay/data
4.9G    /persistent/overlay
2.4G    /persistent/home/prox
2.4G    /persistent/home
21G     /persistent/
prox@prox-PC:~$ sudo df -h
文件系统        大小  已用  可用 已用% 挂载点
udev            6.7G     0  6.7G    0% /dev
tmpfs           1.4G  5.4M  1.4G    1% /run
/dev/nvme0n1p7   23G  7.1G   15G   34% /
/dev/nvme0n1p9   35G   21G   12G   65% /persistent
usr-overlay      35G   21G   12G   65% /usr
opt-overlay      35G   21G   12G   65% /opt
etc-overlay      35G   21G   12G   65% /etc
tmpfs           6.8G     0  6.8G    0% /dev/shm
tmpfs           5.0M   12K  5.0M    1% /run/lock
efivarfs        178K   49K  125K   29% /sys/firmware/efi/efivars
tmpfs           6.8G  8.4M  6.8G    1% /tmp
/dev/nvme0n1p6  3.9G  733M  3.0G   20% /boot
/dev/nvme0n1p1  256M   46M  211M   18% /boot/efi
tmpfs           1.4G  2.7M  1.4G    1% /run/user/1000
/dev/nvme0n1p3  145G   93G   53G   64% /media/prox/Windows-SSD
/dev/nvme0n1p4  253G  184G   70G   73% /media/prox/DATA
prox@prox-PC:~$ deepin-immutable-ctl snapshot list -v
 
ID               Name                 Time                 Desc
d9192ca024a6679a First backup         2025-09-29 08:11:51  System initialization backup
prox@prox-PC:~$ 
 
Reply View the author