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 文件系统无法挂载的报错:
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 (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 -f -i size=512 -m crc=0,finobt=0 /dev/nvme0n1p1
那么怎么验证使用 -m crc=0,finobt=0
参数格式化之后的 XFS superblock 是v4版本呢?
-
使用
xfs_db
检查:
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
其他方法(归档参考)¶
-
Unmountable XFS filesystem 的回答提供了以下移除默认参数的方法( 但是我实践没有成功 )