23.6. 分区和文件系统工具
这部分论述了不同的分区和文件系统管理工具如何与设备的 I/O 参数进行交互。
util-linux-ng 的 libblkid 和 fdisk
util-linux-ng
软件包提供的 libblkid
库包括用于访问设备的 I/O 参数的编程 API。libblkid
允许应用程序(特别是那些使用直接 I/O 的应用程序)正确调整其 I/O 请求的大小。util-linux-ng
的 fdisk 工具使用 libblkid
来确定设备的 I/O 参数,以优化所有分区的位置。fdisk 实用程序将在 1MB 边界上校准所有分区。
parted 和 libparted
parted 的
libparted
库也使用 libblkid
的 I/O 参数 API。Red Hat Enterprise Linux 7 安装程序 Anaconda 使用 libparted
,这意味着由安装程序或 parted 创建的所有分区都会被正确对齐。对于在似乎不提供 I/O 参数的设备上创建的所有分区,默认校准为 1MB。
Heuristics parted 使用如下:
- 始终使用报告的 alignment_offset 作为第一个主分区开头的偏移量。
- 如果定义了 optimal_io_size (即不是 0),在 optimal_io_size 边界上校准所有分区。
- 如果 optimal_io_size 未定义(即 0 ),则 alignment_offset 为 0,而 minimum_io_size 是 2 的指数,使用 1MB 默认对齐。这是对“遗留”设备的总称,这些设备似乎不提供 I/O 提示。因此,默认情况下,所有分区将在 1MB 边界上校准。注意Red Hat Enterprise Linux 7 无法区分不提供 I/O 提示的设备和使用 alignment_offset=0 和 optimal_io_size=0 的设备。此类设备可能是单个 SAS 4K 设备;因此,最坏情况下,磁盘开始时会丢失 1MB 空间。
文件系统工具
不同的 mkfs. 文件系统工具已被改进,以使用设备的 I/O 参数。这些工具不允许格式化文件系统以使用比底层存储设备的 logical_block_size 小的块大小。
除 mkfs.gfs2 外,所有其他 mkfs.filesystem 工具也使用 I/O 提示来布局与底层存储设备的 minimum_io_size 和 optimal_io_size 相关的磁盘上数据结构和数据区域。这使得文件系统可以针对各种 RAID(条带)布局进行最佳格式化。