background fsck considered harmful? (Re: panic:
handle_written_inodeblock: bad size)
Mikhail T.
mi+thun at aldan.algebra.com
Thu Jul 22 15:21:47 UTC 2010
21.07.2010 23:35, Kirk McKusick написав(ла):
> Foreground fsck checks all the disk
> metadata every time, so hard disk errors are captured immediately
> before they have had a chance to accumulate. But background fsck
> users blame it because it has not found them.
>
I don't blame the program itself -- if it was deliberately /designed/ to
only do partial checking. However, I was under the impression, that the
background fsck was meant to do the same job as the "real" one, and
that, whenever it did not, it was simply a bug in the /implementation/.
I suspect, this misconception is shared by plenty of other users...
Indeed, even if a inquisitive admin wanted to find out, fsck(8) gives
absolutely no warning to that effect -- it simply states, that
background fsck will be attempted, whenever possible.
> If you have small disk systems, running foreground fsck is an
> acceptable solution (and indeed I would recommend it). But when
> you are running systems with 20Tb of disks, you are not willing
> to have your system down for 10 hours after every crash.
>
> A reasonable intermediate solution is to use background fsck by
> default, but schedule down time to run a full fsck once a month
> or so to check for accumulated hard disk errors.
>
Maybe, filesystems less than, say, 100Gb (default threshold, subject to
admin's adjustment) in size should always be foreground fsck-ed? This
should, at least, cover the system file-systems (such as / and /var) on
typical installations...
And a stern warning issued, when a background fsck is attempted -- for
whatever reason. Something like:
background fsck, although faster, may be unable to detect certain
rare forms of filesystem corruption. You are advised to perform a
full fsck on %s on a regular basis. See fsck(8).
should go into the right place under fsck_ffs/ -- not sure, where exactly...
Below is a simple patch for the top-level fsck(8). Somebody more
knowledgeable of the details should augment fsck_ffs(8) -- it currently
gives the lists of inconsistencies checked for without mentioning the
difference in coverage between full and background modes...
diff -U 2 -r1.38.2.1 fsck.8
--- fsck.8 3 Aug 2009 08:13:06 -0000 1.38.2.1
+++ fsck.8 22 Jul 2010 15:19:25 -0000
@@ -170,4 +170,12 @@
When running in background mode,
only one file system at a time will be checked.
+
+.Sy Warning:
+because background fsck is performed while the filesystem
+is in use, it is limited to checking for only the most commonly
+occuring filesystem abnormalities. Under certain circumstances,
+some errors can escape background fsck. It is recommended, that you
+perform full fsck on your systems once in a while -- or whenever
+you encounter filesystem-related panics.
.It Fl t Ar fstype
Invoke
Yours,
-mi
More information about the freebsd-fs
mailing list