将 ~/.cache 放入 tmpfs 中是个好主意吗?

将 ~/.cache 放入 tmpfs 中是个好主意吗?

我担心该~/.cache目录有两个原因:它会导致我的 SSD 上发生大量不必要的写入,并且它包含有关加密容器和外部驱动器中的文件的信息(如图像缩略图)。

我把它放在 tmpfs 中,并在 中添加一行fstab。它运行没有问题,直到它变满:这会导致某些程序出现错误消息。

我认为 中的文件.cache不应该是持久的(类似于/tmp),这就是我使用 tmpfs 的原因。因此,我编写了一个由 运行的脚本,如果 tmpfs 已满,则每小时cron清理一次。.cache

但这会导致一条错误消息,tracker无法从中找到其数据库。

这让我想知道这个目录真的不应该是持久的。将其放入 a 中是个好主意吗tmpfs

答案1

听起来你确实有问题

是的,所以如果缓存包含跟踪器数据库,当您“清理”它时,您将再次重建它(在费力地扫描所有文件之后)。所以我不认为这是一个伟大的主意。

根本问题是您有(组合)软件写入有限的文件系统,该文件系统不观察可用空间:(。

把想法大声说出来

我相信 Fedora 曾经/tmp使用 tmpreaper 进行管理,它会删除旧文件。理论上,一些应用程序开发人员可能已经预料到了这种模型。在实践中 - 人们只是不会对 ~/.cache 执行此操作,因此您可能会遇到一些未经测试的极端情况会爆炸。例如,我注意到这ls -l --time=atime ~/.cache/tracker显示出相当多的变化,所以我担心这不能保证很好地工作。

许多最重要的软件都会有一些可配置的限制。但这并不是一个很好的解决方案,必须单独配置每个空间,为每个空间分配固定数量的可用空间(或 0)。

我想这对于网页浏览可能很有用,例如允许 100M 来确保您避免重新下载最近的图像和代码。 (实际上我怀疑 Firefox 的默认“自动缓存管理”会避免填充文件系统本身)。

您可以为一些“白名单”软件(使用符号链接重定向它们)拥有一个单独的 tmpfs,您相信这些软件不会填充它/已为其分配固定空间,并让其他软件遇到空间不足错误(以及被现有系统残酷地清理)。

论文

我建议,如果您买不起标准磁盘缓存,那么您确实需要更改为仅支持选定软件的缓存,然后对其他所有软件运行损坏限制。 “如果”是这里的重要词。

(或者:如果您使用的特定软件在编写方面比最常见的软件要好很多,那么也许您是对的,并且您需要包含该特定软件)。

运行数字。您的 SSD 真的处于危险之中吗?

好吧,如果我们谈论的是具有可运行 Windows 的最小 eMMC 的廉价上网本,那么是的,您有点搞砸了。您可能需要监控您的磁盘空间使用,你的软件,限制和禁用你自己。如果您需要使用这种失控(组合?)软件,tmpfs 可能是一个有用的部分,可以包含对磁盘缓存的一些写入。但您需要识别特定的软件。

然而,对于通常以“SSD”(而不是“eMMC”)出售的设备(目前起价为 128-256GiB),最常见的软件根本不会造成任何问题。如果你想要得到数据、测试、可靠来源等支持的一般保证,谷歌是你的朋友——有一大堆有趣的文章。就我个人而言,我希望能够监控使用情况,以了解总体情况。我认为这里有一些有用的工具。

  • 我曾经tune2fs -l /dev/...在给定的 ext4 文件系统上查看“生命周期写入”。不幸的是 btrfs 似乎不支持这一点。
  • 在正在运行的系统上,您可以查看/sys/block/<dev>/stat.第七列表示向设备写入 512 字节的次数。我想您可以定期将其记录在关闭脚本中。
  • sudo atop可以在磁盘模式下显示每个进程的磁盘写入。例如,如果您按“d”,它将显示自启动以来每个进程的累积写入量。几秒钟后,它将更改为显示最后一个间隔。 整我想必有更好的方法,例如继续显示累积数字。

我在 cron 下使用une2fs运行了一个脚本来附加到日志文件中,并观察到每天有 1-4GB 的写入量。这比我真正想看到的要高,但考虑到驱动器的额定寿命写入,对我来说没有问题。它应该可以使用十年以上,到那时它将超出保修期并且无论如何都需要更换。即使您不打算在驱动器超出保修期之前进行更换,额定寿命也必须保守;它不会立即死亡。测试表明,驱动器的使用寿命比其额定值长很多倍。

你确实备份了,对吧?您不必依靠完全没有硬件故障来确保任何关键数据的存活。

相关内容