Linux 下 SSD 上托管根文件系统的最佳选择是什么

Linux 下 SSD 上托管根文件系统的最佳选择是什么

我正在开发一个嵌入式系统,该系统将在 SSD 磁盘上启动和托管其 rootfs。我们目前正在考虑使用 Intel X-18M SSD。

文件系统结构将有一个相当静态的 /usr 部分(模数软件升级)和一个用于维护状态和日志记录的活动 /var 和 /var/log。考虑到底层闪存完成的磨损均衡,拥有单独的分区是有帮助还是有阻碍?

由于现代 SSD 作为直接块设备出现并将其映射魔法隐藏在其固件后面,尝试优化位于 SSD 之上的文件系统选择是否有意义?

最后,在这种情况下启用 SMART 监控是否有意义,或者它们的 SSD 特定方法是否是确定存储硬件底层健康状况的方法?

答案1

如果根据用途对不同的分区使用不同的文件系统/挂载配置,那么拥有单独的分区会有所帮助。某些文件系统针对 NILFS 等 SSD 进行了优化。所以,是的,它们确实很重要。如果您有足够的 RAM,您可以在 tmpfs 上挂载 /var/log 以减轻 SSD 的压力。noatime 等选项当然可以用来减少磁盘更新。如果您没有足够的 RAM,您仍然可以挂载它并将 SSD 用作交换设备。此外,强烈建议在 Linux 上使用 noop I/O 调度程序而不是默认的 CFQ。这肯定会降低 CPU 使用率。

另外,如果可能的话,请确保使用 Linux 2.6.33,因为它支持 ATA Trim,这应该会显著延长设备的使用寿命。如果 2.6.33 不可用,那么您可以考虑反向移植它们。

编辑:既然您提到了嵌入式,我推测 tmpfs 的内存会很紧张。因此在这种情况下,我建议使用 SSD 上的交换分区,如果这也不可能,也可以使用交换文件(作为后备存储)。

答案2

从 SSD 损耗均衡的角度来看,拥有单独的分区并没有什么固有的优势或劣势。SSD 只会看到对逻辑块的写入和读取 - 它不知道或不关心它们是属于一个分区还是另一个分区。

但是将它们分开仍然很有用,因为您可能希望在不同的分区上使用不同的文件系统选项 - 特别是您可能希望尝试让经常写入的分区上的文件系统块大小很大 - 可能与 SSD 擦除块大小一样大。

相关内容