交换性如何影响嵌入式计算机中 SDHC 存储卡的使用寿命?

交换性如何影响嵌入式计算机中 SDHC 存储卡的使用寿命?

这个问题在超级用户处结束几个答案报告 SDHC 卡故障树莓派单板计算机其他嵌入式设备持续时间从几周到几年不等。

在评论中这个答案关于交换性的一个不相关的问题,有猜测调整交换性以支持文件缓存页面而不是匿名页面是否会延长 SD 卡的使用寿命在依赖 SD 卡作为主要存储介质的嵌入式系统中。直观上看来,调整 swappinness 应该有一些效果与其他影响因素(例如日志记录或临时文件)相比,很难判断交换对 SD 卡耐用性的总体压力有多大影响。

问题是:调整交换性对此类系统中 SD 卡的使用寿命到底有多大影响?

答案应该有具体的经验或参考资料作为支持。请保持主观好,主观差心里。

答案1

这个问题的答案在很大程度上取决于您的用例。

我不再拥有 Raspberry Pi,但我以前拥有 512 MB RAM 的 Raspberry Pi。方便的是,我的 NFS 服务器也有相同的数量。除了 NFS 之外,该服务器(与我的所有其他服务器一样)还有一个 m68k 交叉编译器,可以通过distcc.它还具有screen连接到另一台服务器的串行端口的始终在线的 GNU会话。让我们看一下vmstat

$ vmstat | awk '{ printf "%4s %2s %2s\n", $3, $7, $8 }' | tail -n 2
swpd si so
   0  0  0

在这种情况下,没有任何交换值比任何其他值更好,因为系统绝不互换。小型嵌入式系统通常甚至没有交换空间。从无交换嵌入式系统的内存管理方法,Linux Journal 2005 年的一篇文章:

Linux 内核内存不足 (OOM) 杀手通常不会在台式机和服务器计算机上调用,因为这些环境包含足够的常驻内存和交换空间,使得 OOM 情况很少发生。然而,无交换嵌入式系统通常只有很少的主存储器并且没有交换空间。在这样的系统中,通常不需要分配很大的内存空间;然而,即使相对较小的分配最终也可能触发 OOM 杀手。

在采用这种方法的系统中,同样适用:由于没有交换空间,交换空间不会影响存储的寿命。

如果您使用的 Raspberry Pi 更像是一个桌面系统,也许运行 X 并在 Python 中为您的生物学作业进行基因测序(我已经看到它完成了),那么您可能需要担心一些事情。让我们来了解一下:

假设你的内存不足并且你的交换性设置得非常高,几乎完全调出程序内存并保留文件缓存。具体而言,假设您有一张 8 类 SDHC 卡,并且它的块大小(相当低)为 16 KB。

那么您可以写入 8 MB/s,即每秒 512 个块。如果没有磨损均衡,并假设 100,000 次写入后发生故障,则距离故障只有 195 秒,即三分钟多一点。当然,这是最坏的情况。通过磨损均衡,故障时间接近 100,000 次写入乘以未使用的块数。假设您有 1 GB 或 65,536 个块可用于磨损均衡。在这种情况下,您将获得(大约)65,536 倍的时间,或者大约 24 年的不断交换。

因为你可能不会不断地交换 24 年,这不太可能成为过早消亡的原因。

更可能出现问题的是文件访问时间的记录。每当读取文件时,其访问时间都会更新,除非使用该noatime选项安装文件系统。这需要每次写入一个文件时写入一个块

诸如 ext3 和 ext4 之类的日志文件系统会在每次写入时将额外的数据写入介质日志。某些文件系统(例如 ext2 或 FFS)不支持日志记录。使用这些文件系统(或关闭其他文件系统中的日志记录)肯定会提高闪存介质的寿命,但会降低断电或介质移除时的数据可靠性。

我认为系统日志一般不会对闪存媒体的消亡产生太大影响,因为我的文件中/var/log 在过去一个月中唯一发生更改的文件是btmpwtmplastlog

相关内容