xfsprogs

 

xfsprogs 

 

 

https://www.wallcopper.com/linux/2500.html:

linux安装xfsprogs

2017-09-29

XFS是SGI公司开发的文件系统,相比于其他的文件系统有很多的优势,比如扩展性(支持最大的文件和分区)、性能、快速恢复、日志型的有效结构等。

XFSProgs是一个高性能的日志文件系统

1、由于RHEL5不提供对xfs的官方支持,我们可以安装XFSProgs,XFSProgs是一个高性能的日志文件系统
which mkfs.xfs
/usr/sbin/mkfs.xfs
rpm -qf /usr/sbin/mkfs.xfs
xfsprogs-4.5.0-10.el7_3.x86_64

2、yum install xfsprogs失败
3、Centos5.11编译安装xfsprogs-3.2.4.tar.gz
http://xfs.org/index.php/Getting_the_latest_source_code
https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/
wget --no-check-certificate https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-3.2.4.tar.gz
tar zxf xfsprogs-3.2.4.tar.gz
cd xfsprogs-3.2.4
./configure
make;make install
make install-dev
4、https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/xfsprogs-4.10.0.tar.gz
tar zxf xfsprogs-4.10.0.tar.gz
modprobe xfs
mkfs.xfs /dev/sdb1,
mount /dev/sdb1 /mnt
mount: wrong fs type, bad option, bad superblock on /dev/sda3,
XFS: bad version
XFS: SB validate failed

5、Centos5.11编译安装xfsprogs-4.10.0.tar.gz

FATAL ERROR: could not find a valid BLKID header
yum -y install libuuid libuuid-devel

 

 

https://www.linuxfromscratch.org/blfs/view/svn/postlfs/xfsprogs.html

 

 

 

https://cloud-atlas.readthedocs.io/zh-cn/latest/linux/storage/filesystem/xfs/xfs_kernel_incompatible.html

 

xfs内核不兼容处理

我在 为GlusterFS部署准备CentOS环境 时遇到过 XFS 文件系统无法挂载的报错:

挂载XFS文件系统报错 wrong fs type, bad option, bad superblock
mount: wrong fs type, bad option, bad superblock on /dev/nvme0n1p1,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

根据提示,执行 dmesg tail 查看,原来是服务器内核不支持挂载参数:

内核不兼容xfs文件系统参数报错
XFS (nvme0n1p1): Superblock has unknown incompatible features (0x2) enabled.
Filesystem can not be safely mounted by this kernel.
XFS (nvme0n1p1): SB validate failed with error -22.

这个问题在我之前的实践中( CentOS 7 部署Gluster 6 没有遇到过(之前的操作系统内核版本应该是 4.19 ,但这次遇到的内核版本是是非常古老的 3.10.0-xxx

XFS默认格式化的时候,会为文件系统设置一个随机的UUID,类似 c1b9d5a2-f162-11cf-9ece-0020afc76f16 ,这个uuid也可以设置为 nil 意味着文件系统UUID设置成没有UUID。但是,对于旧版本内核,在激活了CRC的文件系统中,这会导致不兼容而无法挂载文件系统。

上述这种内核不兼容报错在将XFS文件系统从 RHEL 8 改到 RHEL 7上经常会出现:

  • RHEL 8 使用的XFS文件系统是 XFS v5,包含了大量的 RHEL 7 内核(kernel 3.10)不支持的功能

  • mkfs.xfs (从 xfsprogs 3.2.4 开始)默认创建 XFS v5版本超级快,并提供大量增强功能,例如元数据CRC校验和。这种XFS v5 superblock需要内核 3.16 或更高版本支持,在默认的 RHEL 7/CentOS 7使用的Kernel 3.10 内核无法挂载

  • 在搭配使用最新版本 xfsprogs 和老版本内核(例如 kernel 3.10)时,务必使用以下选项创建 v4 文件系统:

mkfs.xfs 创建兼容旧版内核(3.16之前)的XFS v4 superblock
mkfs.xfs -f -i size=512 -m crc=0,finobt=0 /dev/nvme0n1p1

那么怎么验证使用 -m crc=0,finobt=0 参数格式化之后的 XFS superblock 是v4版本呢?

  • 使用 xfs_db 检查:

xfs_db 检查XFS superblock版本
xfs_db -r -c "sb" -c p /dev/nvme0n1p1 | grep versionnum

如果是 v4 版本 xfs superblock,则输出:

versionnum = 0xb4a4

如果是 v5 版本 xfs superblock,则输出:

versionnum = 0xb4a5

此外,当将文件系统重新格式化成 XFS superblock v4 之后,就能够正常在 kernel 3.10 内核(RHEL 7/CentOS 7)挂载,此时内核消息输出也能看到是挂载XFS v4:

[Sun Jul  2 21:28:43 2023] XFS (nvme0n1p1): Mounting V4 Filesystem
[Sun Jul  2 21:28:43 2023] XFS (nvme0n1p1): Ending clean mount

其他方法(归档参考)

 

posted @ 2024-11-19 20:47  redrobot  阅读(5)  评论(0编辑  收藏  举报