23.6. Partition and File System Tools
util-linux-ng's libblkid and fdisk
libblkidlibrary provided with the
util-linux-ngpackage includes a programmatic API to access a device's I/O parameters.
libblkidallows applications, especially those that use Direct I/O, to properly size their I/O requests. The
libblkidto determine the I/O parameters of a device for optimal placement of all partitions. The
fdiskutility will align all partitions on a 1MB boundary.
parted and libparted
partedalso uses the I/O parameters API of
libblkid. Anaconda, the Red Hat Enterprise Linux 7 installer, uses
libparted, which means that all partitions created by either the installer or
partedwill be properly aligned. For all partitions created on a device that does not appear to provide I/O parameters, the default alignment will be 1MB.
parteduses are as follows:
- Always use the reported
alignment_offsetas the offset for the start of the first primary partition.
optimal_io_sizeis defined (i.e. not
0), align all partitions on an
optimal_io_sizeis undefined (i.e.
minimum_io_sizeis a power of 2, use a 1MB default alignment.This is the catch-all for "legacy" devices which don't appear to provide I/O hints. As such, by default all partitions will be aligned on a 1MB boundary.
NoteRed Hat Enterprise Linux 7 cannot distinguish between devices that don't provide I/O hints and those that do so with
optimal_io_size=0. Such a device might be a single SAS 4K device; as such, at worst 1MB of space is lost at the start of the disk.
File System Tools
mkfs.filesystemutilities have also been enhanced to consume a device's I/O parameters. These utilities will not allow a file system to be formatted to use a block size smaller than the
logical_block_sizeof the underlying storage device.
mkfs.gfs2, all other
mkfs.filesystemutilities also use the I/O hints to layout on-disk data structure and data areas relative to the
optimal_io_sizeof the underlying storage device. This allows file systems to be optimally formatted for various RAID (striped) layouts.