+1
以下来自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 通常结合ignition
和ostree
使用,清理时需确保不影响自动更新机制。
如果你有具体的清理目标(例如释放特定数量的磁盘空间)或遇到错误,请提供更多细节,我可以进一步定制解决方案!
deepin v25大概率是通过把ostree封装了一下,形成了deepin-immutable-ctl、deepin-immutable-mount-root、deepin-immutable-grub-generate deepin-immutable-writable 四个不可变系统的管理或配置接口,包括系统还自带的gui的备份、还原工具,官网如果能提供详细的说明文档就好了,起码让我们知道到底用那个,会不会冲突,能更加好的备份/快照、回滚。
幸好我没有
在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 进行了一些修改。
deepin v25大概率是通过把ostree封装了一下,形成了deepin-immutable-ctl、deepin-immutable-mount-root、deepin-immutable-grub-generate deepin-immutable-writable 四个不可变系统的管理或配置接口,包括系统还自带的gui的备份、还原工具,官网如果能提供详细的说明文档就好了,起码让我们知道到底用那个,会不会冲突,能更加好的备份/快照、回滚。
最好是可以直接一键清除旧版本,毕竟有像我一样资源不足且不需使用回滚的人😭 ,等真碰到了那种极端情况我想我肯定是直接重装的😭
幸好我没有
为什么你只有一个系统分区,你的数据分区呢😢
在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我会更喜欢他的🤤
这是个事。应有删的方法为好!
能看看
du -h -d 2 /persistent/
df -h
deepin-immutable-ctl snapshot list -v
这些命令的结果吗?
能看看
du -h -d 2 /persistent/
df -h
deepin-immutable-ctl snapshot list -v
这些命令的结果吗?

Popular Events
More
之前安装了V25的系统,那个时候感觉没啥问题,后来不是很经常打开他,日常用Windows,今天兴致来了打开看看有没有什么更新的功能,比如DDM啥的,看着更新中确实有个1.8G的更新,我去更新了,到这一直没问题,直到,我打开应用商店准备安装的VS CODE,直接提示空间不足,我想来想去,觉得不对劲,数据盘的空间应该还有很多才对,然后我一看persistent,直接占用91%,后来经过一番查找,发现ostree目录占用特别大,就好奇找了找资料想清理一下,但是我看到了很多回答,包括但不限于: 这个系统类似git,现在使用的系统也是以ostree中的系统为基础构建,删除里面的文件就会导致现在的系统进不去等等。
我是准小白,以小白的角度来说,在资源不是那么富裕的情况下每一丝空间都是非常宝贵的,但是ostree文件夹中的各种文件并不知道能不能清理,就算能清理也不知道如何清理,比如只读啥的,希望官方能够出一个能够解决这个清理问题的软件或者安全清理ostree的方法!