ext3文件系统使用哪种安装选项以最大程度地减少数据丢失或损坏?


15

我有一个用于initramfs的嵌入式设置,用于根文件系统,但使用的是安装在紧凑型Flash IDE驱动器上的自定义ext3分区。因为面对断电的数据完整性是整个设置中最重要的因素,所以我使用了以下选项进行挂载(以下是我/etc/fstab文件中的条目)

<file system> <mount pt> <type> <options>                         <dump><pass>
/dev/sda2     /data      ext3   auto,exec,relatime,sync,barrier=1 0     2

通过在互联网上阅读,我得到了这些选择。我担心的是,其内容/proc/mounts如下:

/dev/sda2 /data ext3 rw,sync,relatime,errors=continue,user_xattr,acl,
barrier=1,data=writeback 0 0

据我了解到的是,我想data=journal为我的安装使用选项,因为它提供了防止数据损坏的最佳保护。但是,从手册页的特定ext3选项mount可以看到有关回写选项的以下内容:

数据顺序不会保留-数据可以在其元数据已提交到日志后写入主文件系统。
据传这是最高吞吐量的选择。它可以保证内部文件系统的完整性,但是它可以允许旧数据在崩溃和日志恢复后显示在文件中。

我对此感到非常困惑-手册页似乎建议为了文件系统的完整性,我想指定data=writeback选项,mount但我发现的大多数其他参考(包括一些嵌入式Linux上出版的书籍)建议我应该使用data=journal。对我来说,最好的方法是什么?写入速度根本不是问题-尽管数据完整性。


1
提供有关data = journal的一些指导。我倾向于将其用于其他任何方面,因为RH仅支持这种类型的排序。
slm

2
@sim实际上说data=ordered:p
sourcejedi 2013年

Answers:


7

不要被只writeback提及的事实所误导internal filesystem integrity
随着ext3,无论你用journalordered或者writeback,文件系统元数据总是轴颈,这就意味着内部文件系统的完整性。

数据模式提供的控制权如何的方式普通数据被写入到文件系统。
writeback模式下,元数据更改首先记录在日志中,然后写入提交块。日记更新后,可能会继续进行元数据和数据写出。 data=writeback 可能会带来严重的安全风险:如果系统在添加到文件时崩溃,则在提交元数据(分配了其他数据块)之后但在写入数据之前(新数据块覆盖了数据块),然后在日志之后恢复该文件可能包含充满了先前删除文件(来自任何用户1)中的数据的块

因此,如果数据完整性是您的主要考虑因素,而速度并不重要,data=journal那么这就是要走的路。


4

正如您已经注意到的那样,主要要点是您无法防止文件系统遭受各种崩溃。

你可以做什么:

  1. 在软件方面,您可以在每个重要操作之后使用fdatawrites(请参阅Linux FS内核主要开发者Theodore T'so的2003年帖子。它仍然是正确的。还有一个关于旧版本ext4中隐藏的主要数据丢失的问题)
  2. 将提交间隔减少到1秒(commit = 1)(请参阅LWN的本文,它与ext4有关,但包含有关ext3的非常有用的信息)。注意:不需要使用sync
  3. 正如sim指出的RHEL doc所述,请使用* data_err = abort *和data = ordered
  4. noatime将减少对文件系统的无用操作
  5. 您已经注意到,barrier = 1是减少数据丢失的好方法(请参阅此文章
  6. 同步也是,当然是“我不想失去我的数据”选项之一。

最后,偏执挂载选项可能如下所示:

auto,exec,relatime,sync,barrier=1,commit=1,data=ordered,data_err=abort,noatime,

您还可以在每次启动时使用自动fsck来确保数据完整性。


2

尝试更改您强调的手册页的哪一部分:

回写

数据顺序不会保留 -数据可以在其元数据已提交到日志后写入主文件系统。据传这是最高吞吐量的选择。它可以保证内部文件系统的完整性,但是它可以允许旧数据在崩溃和日志恢复后显示在文件中。

正如don_crissti所指出的,其他模式没有“但是”。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.