了解 mkfs.xfs 命令的输出
输出显示 XFS 文件系统最多包含三个部分:
- 数据部分(data)
- 日志部分(journal)
- 实时部分(realtime)
使用默认的 mkfs.xfs 选项时,实时部分不存在,日志区域包含在数据部分中。
命名区域指定文件系统目录的设置。
以下是 mkfs.xfs 命令的一些添加选项:
- -b [block_size] :文件系统的每个部分被分成一定数量的块。 XFS 允许我们为文件系统的每个部分选择逻辑块大小。物理磁盘块总是 512 字节。逻辑块大小的默认值为 4 KB。这是大于 100 MB 的文件系统的推荐块大小。最小逻辑块为 512 字节,建议用于小于 100 MB 的文件系统和具有许多小文件的文件系统。最大块大小是内核的页面大小。
- -d [data_section_options] :这些选项指定文件系统数据部分的位置、大小和其他参数。文件系统的数据部分被划分为多个分配组以提高 XFS 的性能。更多的分配组意味着在分配块和 inode 时可以实现更多的并行性。使用-d agcount=[value] 选项来选择分配组的数量。当文件系统大小在 128 MB 和 8 GB 之间时,分配组的默认数量为 8. 或者,我们可以使用 -d agsize=[value] 选项来选择分配组的大小。 agcount 和 agsize 参数是互斥的。最小分配组大小为 16 MB;最大大小不到 1 TB。如果有足够的内存和大量分配活动,请从默认值增加分配组的数量。不要将分配组的数量设置得太高,因为这会导致文件系统使用大量 CPU 时间,尤其是在文件系统接近满时。
- -n [naming_options] :这些选项指定文件系统目录(或者命名区域)的版本和大小参数。这允许我们为文件系统目录选择大于文件系统逻辑块大小的逻辑块大小。例如,在具有许多小文件的文件系统中,文件系统逻辑块大小可能很小(512 字节),而文件系统目录的逻辑块大小可能很大(4 KB)。这可以提高目录查找的性能,因为存储索引信息的树具有更大的块。
XFS 文件系统是一个高性能的日志文件系统。
XFS 是 RedHat Linux 7 的默认文件系统。
XFS 支持的最大文件系统大小为 500 TB,最大文件大小为 16 TB。
我们可以在常规磁盘分区和逻辑卷上创建 XFS 文件系统。
XFS 文件系统的数据部分包含文件系统元数据(索引节点、目录和间接块)和用户文件数据。
数据部分被划分为分配组,这些分配组是固定大小的虚拟存储区域。
我们创建的任何文件和目录都可以跨越多个分配组。
每个分配组独立于其他分配组管理自己的一组 inode 和可用空间,以提供 I/O 操作的可伸缩性和并行性。
XFS 日志(或者日志)可以位于文件系统的内部数据部分,也可以位于外部的单独设备上以减少磁盘寻道次数。
日志在文件系统运行时存储对文件系统元数据的更改,直到将这些更改写入数据部分。
XFS 日志可确保断电或者系统崩溃后文件系统的一致性。
在崩溃后挂载文件系统时,会读取日志以完成崩溃时正在进行的操作。
创建 XFS 文件系统的示例
1.在同一设备上创建带有内部日志的XFS文件系统
使用 mkfs.xfs 或者 mkfs -t xfs 命令创建 XFS 文件系统。
以下示例在 /dev/sdc 磁盘上创建一个带有内部日志的 XFS 文件系统。
如幻灯片所示,文件系统的参数显示为输出。
# mkfs.xfs /dev/sdc meta-data=/dev/sdc isize=512 agcount=4, agsize=1310720 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=5242880, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
2. 在另一台设备上使用日志创建 XFS 文件系统
下一个示例在 /dev/sdb 上创建一个 XFS 文件系统,但将日志放在另一个设备 /dev/sdc 上。
size 选项指定一个 10000 块日志:
# mkfs.xfs -l logdev=/dev/sdc,size=10000b /dev/sdb meta-data=/dev/sdb isize=512 agcount=4, agsize=1310720 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=5242880, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =/dev/sdc bsize=4096 blocks=10000, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
3. 在逻辑卷上创建 XFS 文件系统
下一个示例创建一个 XFS 文件系统,其条带单元大小为 32 KB,逻辑卷上的每个条带有 6 个单元:
# mkfs.xfs -d su=32k,sw=6 /dev/mapper/vg_test-test_lv meta-data=/dev/mapper/vg_test-test_lv isize=512 agcount=8, agsize=9592 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=76736, imaxpct=25 = sunit=8 swidth=48 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=624, version=2 = sectsz=512 sunit=8 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
XFS 使用条带单元大小和每个条带信息的单元数来为存储适当地对齐数据、inode 和日志。
在 LVM 和多设备 (MD) 卷以及一些硬件 RAID 配置上,XFS 可以自动选择最佳条带参数。
4. 用 XFS 文件系统覆盖现有的文件系统
下一个示例包括 mkfs.xfs 命令的输出。
-f 选项强制覆盖现有文件系统类型。
-L 选项将文件系统标签设置为“XFS”。
-b size=1024 选项将逻辑块大小设置为 1024 字节。
# mkfs.xfs -f -L XFS -b size=1024 /dev/sdb meta-data=/dev/sdb isize=512 agcount=4, agsize=5242880 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=1024 blocks=20971520, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=1024 blocks=10240, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0