Customizing UFS File System Parameters
Before you alter the default file system parameters that are assigned by the
newfs command, you need to understand them. This section describes these parameters:
For a description of the command options that customize these parameters, see newfs(1M)
and mkfs_ufs(1M).
Logical Block Size
The logical block size is the size of the blocks that the UNIX®
kernel uses
to read or write files. The logical block size is usually different from
the physical block size. The physical block size is usually 512 bytes, which
is the size of the smallest block that the disk controller can read
or write.
Logical block size is set to the page size of the system
by default. The default logical block size is 8192 bytes (8 Kbytes) for
UFS file systems. The UFS file system supports block sizes of 4096 or
8192 bytes (4 or 8 Kbytes). The recommended logical block size is 8
Kbytes.
SPARC only - You can specify only the 8192-byte block size on the sun-4uTM platform.
To choose the best logical block size for your system, consider both the
performance you want and the available space. For most UFS systems, an 8-Kbyte
file system provides the best performance, offering a good balance between disk performance
and the use of space in primary memory and on disk.
As a general rule, to increase efficiency, use a larger logical block size
for file systems when most of the files are very large. Use
a smaller logical block size for file systems when most of the files
are very small. You can use the quot -c filesystem command on a file system
to display a complete report on the distribution of files by block size.
However, the page size set when the file system is created is
probably the best size in most cases.
Fragment Size
As files are created or expanded, they are allocated disk space in
either full logical blocks or portions of logical blocks called fragments. When disk space
is needed for a file, full blocks are allocated first, and then one
or more fragments of a block are allocated for the remainder. For small
files, allocation begins with fragments.
The ability to allocate fragments of blocks to files, rather than just whole
blocks, saves space by reducing fragmentation of disk space that results from unused
holes in blocks.
You define the fragment size when you create a UFS file system. The default
fragment size is 1 Kbyte. Each block can be divided into 1, 2,
4, or 8 fragments, which results in fragment sizes from 8192 bytes to
512 bytes (for 4-Kbyte file systems only). The lower bound is actually tied
to the disk sector size, typically 512 bytes.
For multiterabyte file systems, the fragment size must be equal to the file
system block size.
Note - The upper bound for the fragment is the logical block size, in which
case the fragment is not a fragment at all. This configuration might be
optimal for file systems with very large files when you are more
concerned with speed than with space.
When choosing a fragment size, consider the trade-off between time and space: A
small fragment size saves space, but requires more time to allocate. As a
general rule, to increase storage efficiency, use a larger fragment size for file
systems when most of the files are large. Use a smaller fragment size
for file systems when most of the files are small.
Minimum Free Space
The minimum free space is the percentage of the total disk space that is held
in reserve when you create the file system. The default reserve is ((64
Mbytes/partition size) * 100), rounded down to the nearest integer and limited between
1 percent and 10 percent, inclusively.
Free space is important because file access becomes less and less efficient as
a file system gets full. As long as an adequate amount of
free space exists, UFS file systems operate efficiently. When a file system becomes
full, using up the available user space, only root can access the reserved
free space.
Commands such as df report the percentage of space that is available to
users, excluding the percentage allocated as the minimum free space. When the command
reports that more than 100 percent of the disk space in the file
system is in use, some of the reserve has been used by
root.
If you impose quotas on users, the amount of space available to
them does not include the reserved free space. You can change the value
of the minimum free space for an existing file system by using the
tunefs command.
Rotational Delay
This parameter is obsolete. The value is always set to 0, regardless of
the value you specify.
Optimization Type
The optimization type parameter is set to either space or time.
Space – When you select space optimization, disk blocks are allocated to minimize fragmentation and disk use is optimized.
Time – When you select time optimization, disk blocks are allocated as quickly as possible, with less emphasis on their placement. When sufficient free space exists, allocating disk blocks is relatively easy, without resulting in too much fragmentation. The default is time.
You can change the value of the optimization type parameter for an existing file system by using the tunefs command.
For more information, see tunefs(1M).
Number of Inodes (Files)
The number of bytes per inode specifies the density of
inodes in the file system. The number is divided into the
total size of the file system to determine the number of inodes
to create. Once the inodes are allocated, you cannot change the number without
re-creating the file system.
The default number of bytes per inode is 2048 bytes (2 Kbytes)
if the file system is less than 1 Gbyte. If the file system
is larger than 1 Gbyte, the following formula is used:
File System Size |
Number of
Bytes Per Inode |
Less than or equal to 1 Gbyte |
2048 |
Less than 2 Gbytes |
4096 |
Less
than 3 Gbytes |
6144 |
3 Gbytes up to 1 Tbyte |
8192 |
Greater than 1 Tbyte or
created with -T option |
1048576 |
If you have a file system with many symbolic links, they can
lower the average file size. If your file system is going to have
many small files, you can give this parameter a lower value. Note, however,
that having too many inodes is much better than running out of inodes.
If you have too few inodes, you could reach the maximum number of
files on a disk slice that is practically empty.
Maximum UFS File and File System Size
The maximum size of a UFS file system is about 16 Tbytes
of usable space, minus about one percent overhead. A sparse file can have a
logical size of one terabyte. However, the actual amount of data that
can be stored in a file is approximately one percent less than 1
Tbyte because of the file system overhead.
Maximum Number of UFS Subdirectories
The maximum number of subdirectories per directory in a UFS file system is
32,767. This limit is predefined and cannot be changed.