1. 首页 > Linux教程 > 正文

Linux教程FG144-xfs_repair命令XFS文件系统修复

内容大纲

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

1. xfs_repair命令概述

xfs_repair命令用于修复XFS文件系统。当XFS文件系统出现损坏或错误时,可以使用xfs_repair命令进行修复。

# xfs_repair命令的基本作用
# 修复XFS文件系统
# xfs_repair [选项] 设备

# 查看xfs_repair命令的帮助
# xfs_repair –help

2. 基本用法

以下是xfs_repair命令的基本用法:

学习交流加群风哥QQ113257174

# 基本用法

# 1. 检查XFS文件系统(不修复)
# xfs_repair -n /dev/vdb1
Phase 1 – find and verify superblock…
– reporting progress in intervals of 15 minutes
– scanning filesystem freespace 16775168 btree
– scanning filesystem agi unlinked lists 16775168 btree
– scanning known inodes 16775168 btree
– scanning inode allocation maps 16775168 btree
– scanning filesystem freespace 16775168 btree
– scanning filesystem agi unlinked lists 16775168 btree
– scanning known inodes 16775168 btree
– scanning inode allocation maps 16775168 btree
– scanning filesystem freespace 16775168 btree
– scanning filesystem agi unlinked lists 16775168 btree
– scanning known inodes 16775168 btree
– scanning inode allocation maps 16775168 btree
done
Phase 2 – using internal log
– zero log…
– scan filesystem freespace and inode maps…
– found root inode chunk
Phase 3 – for each AG…
– scan and clear agi unlinked lists…
– process known inodes and perform inode discovery…
– agno = 0
– agno = 1
– agno = 2
– agno = 3
done
Phase 4 – check for duplicate blocks…
– setting up duplicate extent list…
– check for inodes claiming duplicate blocks…
– agno = 0
– agno = 1
– agno = 2
– agno = 3
No modify flag set, skipping phase 5
Phase 6 – check inode connectivity…
– traversing filesystem …
– traversal finished …
– moving disconnected inodes to lost+found …
Phase 7 – verify link counts…
– verifying link counts …
done

# 2. 修复XFS文件系统
# xfs_repair /dev/vdb1
Phase 1 – find and verify superblock…
– reporting progress in intervals of 15 minutes
– scanning filesystem freespace 16775168 btree
– scanning filesystem agi unlinked lists 16775168 btree
– scanning known inodes 16775168 btree
– scanning inode allocation maps 16775168 btree
– scanning filesystem freespace 16775168 btree
– scanning filesystem agi unlinked lists 16775168 btree
– scanning known inodes 16775168 btree
– scanning inode allocation maps 16775168 btree
done
Phase 2 – using internal log
– zero log…
– scan filesystem freespace and inode maps…
– found root inode chunk
Phase 3 – for each AG…
– scan and clear agi unlinked lists…
– process known inodes and perform inode discovery…
– agno = 0
– agno = 1
– agno = 2
– agno = 3
done
Phase 4 – check for duplicate blocks…
– setting up duplicate extent list…
– check for inodes claiming duplicate blocks…
– agno = 0
– agno = 1
– agno = 2
– agno = 3
done
Phase 5 – check AGI unlinked lists…
– processing AGI unlinked lists
– agno = 0
– agno = 1
– agno = 2
– agno = 3
done
Phase 6 – check inode connectivity…
– traversing filesystem …
– traversal finished …
– moving disconnected inodes to lost+found …
Phase 7 – verify link counts…
– verifying link counts …
done

3. 常用选项详解

xfs_re

from PG视频:www.itpux.com

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

pair命令支持多种选项,用于定制修复行为。

# 常用选项

# -n:不修复文件系统,只检查
# xfs_repair -n /dev/vdb1

# -f:强制修复,即使文件系统已挂载
# xfs_repair -f /dev/vdb1

# -L:清除日志
# xfs_repair -L /dev/vdb1

# -m:指定最大内存使用量
# xfs_repair -m 512 /dev/vdb1

# -v:显示详细信息
# xfs_repair -v /dev/vdb1

# 查看所有可用选项
# xfs_repair –help

4. XFS文件系统修复流程

XFS文件系统修复通常分为以下几个阶段:

# XFS文件系统修复流程

# Phase 1:查找和验证超级块
# Phase 2:使用内部日志
# Phase 3:处理每个分配组(AG)
# Phase 4:检查重复块
# Phase 5:检查AGI未链接列表
# Phase 6:检查inode连接性
# Phase 7:验证链接计数

5. 实战案例

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

# 场景:修复损坏的XFS文件系统

# 1. 查看设备信息
# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
vda
├─vda1 xfs 12345678-90ab-cdef-1234-567890abcdef /boot
└─vda2 LVM2_member 87654321-0987-fedc-ba98-76543210fedc
├─rhel-root xfs 23456789-0abc-def1-2345-67890abcdef1 /
└─rhel-swap swap 34567890-12ab-cdef-3456-7890abcdef2 [SWAP]
vdb
└─vdb1 xfs 45678901-23ab-cdef-4567-890abcdef123

# 2. 卸载XFS文件系统
# umount /dev/vdb1

# 3. 检查XFS文件系统(不修复)
# xfs_repair -n /dev/vdb1
Phase 1 – find and verify superblock…
– reporting progress in intervals of 15 minutes
– scanning filesystem freespace 16775168 btree
– scanning filesystem agi unlinked lists 16775168 btree
– scanning known inodes 16775168 btree
– scanning inode allocation maps 16775168 btree
done
Phase 2 – using internal log
– zero log…
– scan filesystem freespace and inode maps…
– found root inode chunk
Phase 3 – for each AG…
– scan and clear agi unlinked lists…
– process known inodes and perform inode discovery…
– agno = 0
– agno = 1
– agno = 2
– agno = 3
done
Phase 4 – check for duplicate blocks…
– setting up duplicate extent list…
– check for inodes claiming duplicate blocks…
– agno = 0
– agno = 1
– agno = 2
– agno = 3
No modify flag set, skipping phase 5
Phase 6 – check inode connectivity…
– traversing filesystem …
– traversal finished …
– moving disconnected inodes to lost+found …
Phase 7 – verify link counts…
– verifying link counts …
done

# 4. 修复XFS文件系统
# xfs_repair /dev/vdb1
Phase 1 – find and verify superblock…
– reporting progress in intervals of 15 minutes
– scanning filesystem freespace 16775168 btree
– scanning filesystem agi unlinked lists 16775168 btree
– scanning known inodes 16775168 btree
– scanning inode allocation maps 16775168 btree
done
Phase 2 – using internal log
– zero log…
– scan filesystem freespace and inode maps…
– found root inode chunk
Phase 3 – for each AG…
– scan and clear agi unlinked lists…
– process known inodes and perform inode discovery…
– agno = 0
– agno = 1
– agno = 2
– agno = 3
done
Phase 4 – check for duplicate blocks…
– setting up duplicate extent list…
– check for inodes claiming duplicate blocks…
– agno = 0
– agno = 1
– agno = 2
– agno = 3
done
Phase 5 – check AGI unlinked lists…
– processing AGI unlinked lists
– agno = 0
– agno = 1
– agno = 2
– agno = 3
done
Phase 6 – check inode connectivity…
– traversing filesystem …
– traversal finished …
– moving disconnected inodes to lost+found …
Phase 7 – verify link counts…
– verifying link counts …
done

# 5. 重新挂载XFS文件系统
# mount /dev/vdb1 /mnt/xfs

# 6. 验证挂载
# df -h /mnt/xfs
Filesystem Size Used Avail Use% Mounted on
/dev/vdb1 50G 33M 50G 1% /mnt/xfs

# 7. 检查文件系统状态
# xfs_info /mnt/xfs
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

风哥经验总结

1. 在使用xfs_repair命令修复XFS文件系统之前,

风哥提示:

必须先卸载文件系统,否则可能会导致数据损坏。

2. xfs_repair命令是修复XFS文件系统的专用工具,比fsck命令更适合XFS文件系统。

3. 在修复文件系统之前,建议先使用-n选项进行检查,了解文件系统的状态。

4. 对于大型文件系统,xfs_repair命令可能需要较长时间,应耐心等待。

5. 在生产环境中,建议在维护窗口期间进行文件系统修复,以避免影响业务。

6. 如果文件系统出现严重错误,应先备份数据,然后再进行修复操作。

联系我们

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

微信号:itpux-com

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