如何调整 Linux 以在闪存上可靠运行?

如何调整 Linux 以在闪存上可靠运行?

由于闪存的写入次数有限,将Linux系统安装到闪存介质上需要进行哪些调整才能使操作系统能够长期可靠地运行?

闪存安装的一些示例包括将 Linux 映像刻录到无线路由器的闪存上,或者将 Linux 发行版安装到使用 SD 卡作为硬盘驱动器的盒子上。

另外,除了可能已经实现此类调整的无线路由器固件(OpenWRT、DD-WRT 等)之外,是否有任何通用发行版可以进行这些调整或允许您将它们用作选项?

答案1

/tmp和目录/var是许多系统程序经常写入的目录,并且依赖于可写性。最大限度地减少对这些目录的写入,或者将 Linux 配置为将这些目录安装在可更换的外部存储设备上(而不是板载闪存),将大大有助于实现您的目标。

/home和交换分区应该以同样的方式处理。

rsyslogdDebian 和许多 Debian 衍生发行版中的默认 syslogd 能够不将日志写入磁盘,而是通过网络连接传送日志,并且仅在内部缓冲区已满时才将日志写入存储。实现这个(我正在尝试找出目前如何以一种好的方式实现)可以消除大量的闪存写入。

此外,您还希望在挂载文件系统时使用noatime阻止 Linux 更新您接触的每个文件的访问时间的选项。这也可以消除大量写入并加快性能。我认为还有一个内核参数可以控制Linux自动sync调用之间的时间间隔。如果您的系统预计不会遇到突然断电的情况,您可以将其设置为比默认值 5 秒更高的值(我认为)。

答案2

更恰当的说法是闪存只有有限数量的擦除周期,这些擦除周期最终是由写入引起的。有很多关于这种区别的好文章。

当您提到将 Linux 映像刻录到路由器固件时,这可能是 NOR 闪存或 EEProm。 NOR 是读取速度更快的闪存类型,NAND 是写入速度更快的闪存类型。

在 ext3 下,日志是最常写入的文件,这些写入最终将填满一个块,从而强制擦除另一个块。在挂载上设置较大的commit=值会将这些日志写入收集到更大的块中。

最后,为了回应其他解决方案,安装noatime是减少影响的标准做法。

相关内容