Why Unix filesystems precreate lost+found
directories
Here's a sensible question about the lost+found
directories that
various Unix filesystems stick in the top directory: why do they have to
exist all the time? Yes, clearly fsck
needs somewhere to put recovered
files, but in theory it could just create a lost+found
directory when
needed, and otherwise you wouldn't have it cluttering up the filesystem.
Part of the answer is that lost+found
isn't just a normal empty
directory; instead, it's usually substantially bigger, despite having
nothing in it.
The full answer is simple: because having a pre-existing lost+found
directory means changing as little of the filesystem as possible during
an fsck
recovery. With an existing lost+found
directory that has a
bunch of empty directory entries, all fsck
has to do to recover a
file is fill in some data and rewrite a block.
Without an existing lost+found
directory with empty entries, fsck
would have to do a lot more; it would have to allocate an inode for the
directory, allocate at least one data block for it, and add a directory
entry to the filesystem's root directory (which might require allocating
another data block and extending the directory). Of course, these
changes would require checking and updating various potentially damaged
filesystem data structures.
You could make an fsck
that would do all this but it would clearly
be more complicated, and complicated operations are undesirable in a
filesystem recovery tool. Setting everything up ahead of time is much
simpler.
(This entry was inspired by this comment.)
|
|