what is fsck's "slowdown"?

Matthew Dillon dillon at apollo.backplane.com
Fri Sep 3 23:45:18 PDT 2004

    There may be some tricks you can use to improve your fsck times on that
    large partition.

    The first thing you can try is to compile up an fsck with a much larger
    in-program disk buffer cache.  cd into /usr/src/sbin/fsck and edit
    fsck_ffs/fsck.h.  Significantly increase MAXBUFSPACE and INOBUFSIZE.
    e.g. try increasing MAXBUFSPACE from 40MB to 200MB, and INOBUFSIZE from
    56MB to 200MB.

    Another possibility would be to try to improve disk I/O linearity by
    modifying getdatablk() in fsutil.c to read-ahead several blocks rather
    then just one.  This would require some programming.

    The remaining tricks involve reformatting the large partition to 
    increase the block size and/or increase the number of bytes/inode
    (thus reducing the number of inodes).  The larger the block size, the
    easier it is for fsck to track down indirect blocks.  The fewer inodes
    the partition has, the less work fsck has to do.  But, of course, to do
    this you have to backup all the data on the partition, newfs it with
    the new parameters, and restore all the data back.  Maximizing the
    number of cylinders/group also helps a great deal but I think newfs
    already does that by default.

					Matthew Dillon 
					<dillon at backplane.com>

More information about the freebsd-current mailing list