我有一个运行 linux 的系统,它必须长时间无人值守运行。系统采用工业CF卡存储。大多数情况下没有写入闪存,尽管有时可以修改一些配置数据/设置。系统必须能够抵抗电源故障。
我想为此使用 ext4。为这种设置配置 ext4 的最佳方法是什么?铭记:
(我知道这个相关问题: 防止断电时 ext4/Linux 驱动器上的数据损坏)
vor*_*aq7 13
我将首先说,就我而言,EXT(在它的所有化身中)是一个非常糟糕的文件系统——我在相对较少的 Linux/EXT 中看到了更多“有趣”的文件系统损坏案例{2,3,4} 我管理的系统比我有机会使用的相对大量的 Not-EXT 文件系统所拥有的系统多。
如果可能的话,尝试选择一个更健壮的文件系统。当不可避免的事情发生时,你会感谢自己。
话虽如此,我所有的个人偏见都被公开并搁置一旁,EXT4 确实具有我能想到的三个功能,可以帮助您:
日记
EXT4可以是一个日志文件系统,如果你希望它是。启用日志功能(并将数据日志模式专门设置为journal
viatune2fs
或作为挂载选项)。
这会导致性能下降,因为所有数据必须在“提交”到文件系统之前写出到 EXT 日志(每次写入基本上发生两次),但它确保您始终可以恢复,只要日志重放将使您没有任何问题。
SYNC
hronous Mounts
当安全至上时,使用该sync
选项挂载文件系统总是一个好主意。这会立即强制所有写入磁盘 - 这同样会影响性能,但如果您预计电源故障或随机陌生人将 CF 卡拔出,这是一个好主意。
尽可能地限制可写文件系统
这不是特定于 EXT 的,但是非常普遍的 Linux 哲学“只需创建一个大的根分区并将所有内容都转储到其中”,坦率地说,是愚蠢的。创建适当的文件系统结构(/
、/var
、/usr
、/home
等...),并以只读方式挂载尽可能多的文件系统。
为了安全起见,这曾经是 unix 系统的常见建议,但在您的情况下,它有一个额外的好处:如果您不能写入文件系统,您就不能破坏它。
Gio*_*ldo 12
我一直在为船上的自动化构建一个系统,有一个先决条件:每时每刻都可能功率下降,并且一切都必须再次正确助推。
我的解决方案是构建一个基于 Gentoo 的 initramfs 系统,只有一个 rw 文件夹用于应用程序和配置(这是每个路由器/防火墙供应商使用的方法)。在处理系统升级时,此解决方案增加了一层额外的复杂性,但可以向您保证系统将始终启动。
关于您的具体问题,您应该启用EXT4日志以获得更快的 fsck(几秒),使用data=journal挂载选项,降低提交选项或使用同步选项以保持缓冲区始终为空。
参考:http : //www.kernel.org/doc/Documentation/filesystems/ext4.txt