我有一个运行linux的系统,该系统必须长时间无人值守。系统使用工业CF卡进行存储。在大多数情况下,虽然有时可以修改某些配置数据/设置,但不写入闪存。系统必须能够抵抗电源故障。
我想为此使用ext4。为这种设置配置ext4的最佳方法是什么?请记住:
- 性能根本不是问题(特别是写性能)
- 断电时,系统应始终以干净状态启动,即使这意味着最后几秒钟写入的数据也会丢失
- 如果可以避免fsck,那就更好了。
(我知道这个相关问题: 断电时防止ext4 / Linux驱动器上的数据损坏)
我有一个运行linux的系统,该系统必须长时间无人值守。系统使用工业CF卡进行存储。在大多数情况下,虽然有时可以修改某些配置数据/设置,但不写入闪存。系统必须能够抵抗电源故障。
我想为此使用ext4。为这种设置配置ext4的最佳方法是什么?请记住:
(我知道这个相关问题: 断电时防止ext4 / Linux驱动器上的数据损坏)
Answers:
我已经在构建用于船上自动化的系统,并且有一个先决条件:在每时每刻,电源可能会下降,并且所有东西都必须再次正确启动。
我的解决方案是构建一个基于Gentoo的initramfs系统,其中只有一个用于应用程序和配置的rw文件夹(这是每个路由器/防火墙供应商使用的方法)。该解决方案在处理系统升级时会增加一层额外的复杂性,但要确保系统始终会启动。
关于您的特定问题,应启用 EXT4日志以使其具有更快的fsck(几秒钟),使用data = journal挂载选项,降低commit选项或使用sync选项以使缓冲区始终为空。
参考:http : //www.kernel.org/doc/Documentation/filesystems/ext4.txt
首先,我要说的是,EXT(就其所有形式而言)是一个非常糟糕的文件系统- 在相对少数的Linux / EXT中,我看到了更多“ 有趣 ”的文件系统损坏案例我管理过的{2,3,4}系统比我曾经使用过的相对大量的Not-EXT文件系统中的系统要多。
如果有可能,请尝试选择更强大的文件系统。当不可避免的事情发生时,您会感谢自己的。
话虽这么说,但我所有的个人偏见都被公开和抛在一边,EXT4确实具有三个可以帮助您的功能:
如果需要,日记 EXT4可以是日记文件系统。启用日记功能(并专门将数据日记模式设置为journal
via tune2fs
或作为安装选项)。
这会导致性能下降,因为所有数据都必须先写入EXT日志,然后才能“提交”到文件系统(每次写入基本上发生两次),但它可以确保您始终可以恢复到日志重放将使您无任何损失的程度问题。
SYNC
棘手的挂载
当安全性至高无上时,使用该sync
选项挂载文件系统始终是一个好主意。这会立即将所有写入都强制写入磁盘-再次降低性能,但是如果您预计电源故障或随机的陌生人会将CF卡拔出,则是个好主意。
尽可能限制可写文件系统
这不是EXT特有的,但是坦率地说,“仅创建一个大的根分区并将所有内容转储到其中”这太普遍的Linux哲学是愚蠢的。创建一个适当的文件系统结构(/
,/var
,/usr
,/home
,等...),并安装尽可能多的文件系统的只读越好。
出于安全性考虑,这通常是unix系统的常见建议,但是在您的情况下,它还有一个额外的好处:如果无法写入文件系统,则无法破坏它。
sync
每次写入后都简单地调用-同步挂载将(或者至少不应该)从文件系统写调用返回,直到数据在磁盘上为止。调用sync
将刷新所有挂起的写操作,但是在写返回到调用sync
返回之间还有一个窗口(但是很短),在此期间可能尚未将数据写出到磁盘。
data=journal
(如上所述),data=ordered
(记录了元数据。在将元数据提交到文件系统之前,数据已提交到磁盘)和data=writeback
(实际上是没有日志记录/保护数据- 坏事可能在崩溃后发生,例如文件中间的垃圾)。我相信ordered
这些天是大多数Linux发行版的默认发行版……
我对您建造的设备很感兴趣。您在使用不太适合的文件系统时追求嵌入式设备的可靠性。
Ext4(和家族)是一个很好的通用文件系统,在各种硬件和用例上,我有数十亿小时的使用时间。但是,您的要求实际上并不适合ext4。voretaq7和Giovanni的指针将帮助您从ext4的使用中获得最大收益,但是真正的答案是使用更适合您要求的东西。史蒂夫给了您几个选择。如果您继续从ext4 FS上获取能量,最终将一团糟。
如果这是您要构建的一次性系统,则应该选择使用更合适的产品,或者接受在某些时候会出现问题的选择。这可能仅是100次中断中的1次或1000次中断中的1次。这足以让您承担风险,并且该设备可能会长时间(多年)运行而无需任何人工干预。
如果您打算将该产品广泛部署/推向市场,则可以选择使用更合适的产品。或者,您可以根据业务决策来支持一定比例的设备,这些设备每年都会变砖,并且需要更换或手动干预来恢复它们。