1. 首页 > Linux教程 > 正文

Linux教程FG137-mkfs.xfs命令XFS文件系统格式化

内容大纲

内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。

1. XFS文件系统概述

XFS是一种高性能的日志文件系统,最初由SGI开发,现在是Linux系统中默认的文件系统之一。XFS特别适合处理大文件和大容量存储系统。

学习交流加群风哥QQ113257174

XFS文件系统的主要特点包括:

  • 支持非常大的文件和分区
  • 高性能的I/O操作
  • 高效的日志功能
  • 支持在线扩容
  • 优秀的并行I/O性能

2. mkfs.xfs命令基本用法

mkfs.xfs命令用于在分区上创建XFS文件系统。

# 基本语法
# mkfs.xfs [选项] 设备

# 简单格式化
# mkfs.xfs /dev/vdb1
meta-data=/dev/vdb1 isize=512 agcount=4, agsize=3276800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=13107200, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=6400, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

# 查看文件系统信息
# xfs_info /dev/vdb1
meta-data=/dev/vdb1 isize=512 agcount=4, agsize=3276800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=13107200, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=6400, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

3. 常用选项详解

mkfs.xfs命令支持多种选项,用于定制文件系统的创建过程。

# 常用选项

# -f:强制格式化,即使设备已经有文件系统
# mkfs.xfs -f /dev/vdb1

# -L:指定卷标
# mkfs.xfs -L data1 /dev/vdb1

# -b:指定块大小
# mkfs.xfs -b size=4096 /dev/vdb1

# -m:指定元数据相关选项
# mkfs.xfs -m crc=1 /dev/vdb1 # 启用CRC校验

# -d:指定数据区相关选项
# mkfs.xfs -d agcount=8 /dev/vdb1 # 设置分配组数量

# -l:指定日志相关选项
# mkfs.xfs -l size=128m /dev/vdb1 # 设置日志大小

# 查看所有可用选项
# mkfs.xfs –help

4. 高级配置选项

对于特殊场景,

from PG视频:www.itpux.com

mkfs.xfs命令提供了更多高级配置选项。

# 高级配置

# 创建带有实时分区的XFS文件系统
# mkfs.xfs -d size=90g -r size=10g /dev/vdb1

# 为RAID设备优化
# mkfs.xfs -d sunit=128,swidth=512 /dev/md0

# 启用reflink功能
# mkfs.xfs -m reflink=1 /dev/vdb1

# 启用sparse inode
# mkfs.xfs -m sparse=1 /dev/vdb1

# 设置inode大小
# mkfs.xfs -m isize=256 /dev/vdb1

5. 实战案例

下面通过一个完整的实战案例来演示mkfs.xfs命令的使用。

# 场景:为不同用途创建优化的XFS文件系统

# 1. 查看分区
# lsblk /dev/vdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vdb 252:16 0 200G 0 disk
├─vdb1 252:17 0 100G 0 part
└─vdb2 252:18 0 100G 0 part

# 2. 为vdb1创建XFS文件系统(优化为数据库存储)
# mkfs.xfs -L database -d agcount=16 -l size=256m /dev/vdb1
meta-data=/dev/vdb1 isize=512 agcount=16, agsize=1638400 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=26214400, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=65536, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

# 3. 为vdb2创建XFS文件系统(优化为多媒体存储)
# mkfs.xfs -L media -d agcount=8 -b size=4096 /dev/vdb2
meta-data=/dev/vdb2 isize=512 agcount=8, agsize=3276800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=26214400, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=6400, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

# 4. 挂载文件系统
# mkdir -p /database /media
# mount /dev/vdb1 /database
# mount /dev/vdb2 /media

# 5. 配置永久挂载
# echo ‘/dev/vdb1 /database xfs defaults 0 0’ >> /etc/fstab
# echo ‘/dev/vdb2 /media xfs defaults 0 0’ >> /etc/fstab

# 6. 验证挂载
# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 9.0M 3.8G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/mapper/rhel-root 45G 3.5G 42G 8% /
/dev/vda1 1014M 194M 821M 20% /boot
tmpfs 781M 0 781M 0% /run/user/0
/dev/vdb1 100G 33M 100G 1% /database
/dev/vdb2 100G 33M 100G 1% /media

# 7. 查看文件系统详细信息
# xfs_info /dev/vdb1
meta-data=/dev/vdb1 isize=512 agcount=16, agsize=1638400 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=26214400, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=65536, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0

风哥经验总结

1. XFS文件系统特别适合处理大文件和

更多学习教程公众号风哥教程itpux_com

大容量存储,是RHEL 7+的默认文件系统。

2. 对于不同的使用场景,选择合适的配置:

学习交流加群风哥微信: itpux-com

  • 数据库存储:增加分配组数量和日志大小
  • 多媒体存储:使用默认配置即可
  • RAID设备:设置合适的sunit和swidth参数

3. XFS支持在线扩容,但不支持在线缩容,因此在规划分区大小时要预留足够的空间。

4. 启用CRC校验可以提高文件系统的可靠性,但会 slightly 影响性能。

风哥提示:

>

5. 对于大型文件系统,建议使用多个分配组,以提高并行I/O性能。

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息