Unix Filesystems are allocated
a block size upon creation, a block being
the unit of data the filesystem will always
automatically allocate on the disk. So how
does this element affect performance?
A large block size will give the best I/O
speed for large files whereas a small block
size gives better storage efficiency. In
general then, filesystems used for large
files should have a large block size since
as file size increases, the amount of unused
space at the end of the file becomes relatively
small. This also makes sense since if you're
working with huge files you'll want to access
them as quickly as possible, particularly
if those files are executables. Large executables
in a filesystem with a large block size
will have a faster startup time, and paging
time.
The question of whether this consideration
is redundant stems from the fact that block
size applies to filesystems, not directories
or files and most practical filesystems
will contain a mix of file types. However,
dedicated filesystems are not only good
practice, but also essential to the management
of, for instance, a large database. In the
case of a database-dedicated filesystem
the block size is a definite consideration.
The larger data files and executables should
be stored on filesystems with large block
sizes, and the areas where smaller files
exist, for example development areas will
be best served by a smaller block size.
Note that additional refinements can be
made by aligning the block size of the database
with the filesystem, for example making
the Oracle block size the same. This will
provide a performance lift to datafile reads
and writes.
Next
UNIX Tip |