23.6. Partition and File System Tools
This section describes how different partition and file system management tools interact with a device's I/O parameters.
util-linux-ng's libblkid and fdisk Copy linkLink copied to clipboard!
Copy linkLink copied to clipboard!
The
libblkid
library provided with the util-linux-ng
package includes a programmatic API to access a device's I/O parameters. libblkid
allows applications, especially those that use Direct I/O, to properly size their I/O requests. The fdisk
utility from util-linux-ng
uses libblkid
to determine the I/O parameters of a device for optimal placement of all partitions. The fdisk
utility will align all partitions on a 1MB boundary.
parted and libparted Copy linkLink copied to clipboard!
Copy linkLink copied to clipboard!
The
libparted
library from parted
also uses the I/O parameters API of libblkid
. The Red Hat Enterprise Linux 6 installer (Anaconda) uses libparted
, which means that all partitions created by either the installer or parted
will 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.
The heuristics
parted
uses are as follows:
- Always use the reported
alignment_offset
as the offset for the start of the first primary partition. - If
optimal_io_size
is defined (i.e. not0
), align all partitions on anoptimal_io_size
boundary. - If
optimal_io_size
is undefined (i.e.0
),alignment_offset
is0
, andminimum_io_size
is 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.Note
Red Hat Enterprise Linux 6 cannot distinguish between devices that don't provide I/O hints and those that do so withalignment_offset=0
andoptimal_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 Copy linkLink copied to clipboard!
Copy linkLink copied to clipboard!
The different
mkfs.filesystem
utilities 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_size
of the underlying storage device.
Except for
mkfs.gfs2
, all other mkfs.filesystem
utilities also use the I/O hints to layout on-disk data structure and data areas relative to the minimum_io_size
and optimal_io_size
of the underlying storage device. This allows file systems to be optimally formatted for various RAID (striped) layouts.