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, look at 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 where most of the files are large. Use a smaller fragment
size for file systems where 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 the
users 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 for modern disks. If you need to use this
parameter, the default value provided when the file system is created is probably
best for most cases.
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 there is enough free space, it is relatively
easy to allocate disk blocks effectively, 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
inodes parameter determines the number of files you can have in the file system:
one inode for each file. The number of bytes per inode
determines the total number of inodes that are created when the file system
is made: the total size of the file system divided by the number of bytes
per inode. 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 one Gbyte. If the file system is larger than one
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 | 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 approximately 16 terabytes of usable
space, minus approximately 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 one
terabyte 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.
Commands for Creating a Customized File System
This section describes the two commands that you use to create a customized
file system:
The newfs Command Syntax, Options, and Arguments
The newfs command is a friendlier version of the mkfs
command that is used to create file systems.
The syntax is as follows:
/usr/sbin/newfs [-Nv] [mkfs_options] raw_device
|
The following table describes the options and arguments for the newfs command.
Table 44-4 The newfs Command Options and Arguments
Option | Description |
-N | Displays the file system parameters
that would be used in creating the file system without actually creating it.
This option does not display the parameters that were used to create an existing
file system. |
-T | Set the parameters of the file system to allow eventual
growth to over a terabyte in total file system size. This option sets fragsize to be the same as bsize,
and sets nbpi to 1 Mbyte, unless the -i option is used to make it even larger. If you use the -f or -i options to specify a fragsize or nbpi that is incompatible with
this option, the user-supplied value of fragsize
or nbpi is ignored. |
-v | Displays the parameters that are passed
to the mkfs command. |
mkfs-options | Use the options in this table, from -s size to -C maxcontig, to set the mkfs parameters. The options are listed in the order they are passed
to the mkfs command. Separate the options with spaces. |
-s size | The
size of the file system in sectors. The default is to use the entire partition. |
-t ntrack | The number of tracks per cylinder on the disk. The default is determined from
the disk label. |
-b bsize | The logical block size of the file system, which is either 4096 or 8192 bytes.
The default is 8192 bytes. The sun4u architecture does not support the 4096
block size. |
-f fragsize | The smallest amount of disk space in bytes that is allocated to a file. When
the logical block size is 4096, legal values for fragsize
are 512, 1024, 2048, and 4096. When the logical block size is 8192, legal
values for fragsize are 1024, 2048, 4096, and 8192.
The default value is 1024. For file systems greater than 1 terabyte
or for file systems created with the -T option, fragsize is forced to match block size (bsize). |
-c cgsize | The number of disk cylinders per cylinder group, which ranges from 16 to 256.
The default value is calculated by dividing the number of sectors in the file
system by the number of sectors in 1 Gbyte, and then multiplying the result
by 32. The default value is always between 16 to 256. Use the mkfs command to override the default value. This option
is not applicable for disks with EFI labels and is ignored. |
-m free | The
minimum percentage of free disk space to maintain in the file system (between
1% and 99%, inclusively). This space is off limits to regular users. Once
the file system is filled to this threshold, only the superuser can continue
writing to the file system. The default is ((64 Mbytes/partition
size) * 100), rounded down to the nearest integer and limited between 1% and
10%, inclusively. This parameter can be modified after the file
system is created by using the tunefs command. |
-r rpm | The
speed of the disk, in revolutions per minute. This setting is driver- or device-specific. This parameter is converted to revolutions per second before
it is passed to the mkfs command. This option
is not applicable for disks with EFI labels and is ignored. |
-i nbpi | The
number of bytes per inode to use in computing how many inodes to create for
the file system. For the default values, see Number of Inodes (Files). |
-o opt | Optimization
type to use for allocating disk blocks to files: space
or time. The default is time. |
-a apc | The
number of alternate sectors per disk cylinder to reserve for bad block placement
for SCSI devices only. The default is 0. This option is not applicable
for disks with EFI labels and is ignored. |
-d gap | Rotational
delay. The expected minimum number of milliseconds it takes
the CPU to complete a data transfer and initiate a new data transfer on the
same disk cylinder. The default is 0. |
-n nrpos | The number of different rotation positions in which to divide a cylinder group.
The default is 8. This option is not applicable for disks with
EFI labels and is ignored. |
-C maxcontig | The maximum number of blocks, belonging to one file, that will be allocated
contiguously before inserting a rotational delay. The default varies from
drive to drive. Drives without internal (track) buffers (or drives or controllers
that don't advertise the existence of an internal buffer) default to 1. Drives
with buffers default to 7. This parameter is limited in the following
way: blocksize x maxcontig must be <= maxphys maxphys is a read-only kernel variable that specifies the maximum
block transfer size (in bytes) that the I/O subsystem is capable of satisfying.
This limit is enforced by the mount command, not by newfs or mkfs command. This parameter also controls clustering. Regardless of the value of rotdelay, clustering is enabled only when maxcontig is greater than 1. Clustering allows higher I/O rates for sequential
I/O and is described in tunefs(1M). |
raw_device | The special character (raw) device
file name of the partition that will contain the file system. This argument
is required. |
Example--newfs Command Options and Arguments
This example shows how to use the -N option to display
file system information, including the backup superblocks.
# newfs -N /dev/rdsk/c0t0d0s0
/dev/rdsk/c0t0d0s0: 37260 sectors in 115 cylinders of 9 tracks, 36 sectors
19.1MB in 8 cyl groups (16 c/g, 2.65MB/g, 1216 i/g)
superblock backups (for fsck -b #) at:
32, 5264, 10496, 15728, 20960, 26192, 31424, 36656,
#
|
|