解决XFS (dm-0): metadata I/O error: block 0x305ced8 ("xfs_trans_read_buf_map") error 74 numblks 8

本文详细记录了XFS文件系统中出现CRC错误的处理过程,包括在单用户模式下使用xfs_repair工具进行修复的方法,以及解决Oracle Clusterware启动时遇到的只读文件系统错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[root@rac2 ~]# tail -50 /var/log/messages 
Nov 14 19:08:54 rac2 kernel: XFS (dm-0): Metadata CRC error detected at xfs_dir3_block_read_verify+0x5e/0x110 [xfs], xfs_dir3_block block 0x305ced8
Nov 14 19:08:54 rac2 kernel: XFS (dm-0): Unmount and run xfs_repair
Nov 14 19:08:54 rac2 kernel: XFS (dm-0): First 64 bytes of corrupted metadata buffer:
Nov 14 19:08:54 rac2 kernel: ffff8830eaaae000: 31 30 31 32 30 0a 00 00 00 00 00 00 00 00 00 00  10120...........
Nov 14 19:08:54 rac2 kernel: ffff8830eaaae010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
Nov 14 19:08:54 rac2 kernel: ffff8830eaaae020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
Nov 14 19:08:54 rac2 kernel: ffff8830eaaae030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
Nov 14 19:08:54 rac2 kernel: XFS (dm-0): metadata I/O error: block 0x305ced8 ("xfs_trans_read_buf_map") error 74 numblks 8
Nov 14 19:08:54 rac2 kernel: XFS (dm-0): Metadata CRC error detected at xfs_dir3_block_read_verify+0x5e/0x110 [xfs], xfs_dir3_block block 0x305ced8
Nov 14 19:08:54 rac2 kernel: XFS (dm-0): Unmount and run xfs_repair
Nov 14 19:08:54 rac2 kernel: XFS (dm-0): First 64 bytes of corrupted metadata buffer:
Nov 14 19:08:54 rac2 kernel: ffff8830d8e53000: 31 30 31 32 30 0a 00 00 00 00 00 00 00 00 00 00  10120...........
Nov 14 19:08:54 rac2 kernel: ffff8830d8e53010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
Nov 14 19:08:54 rac2 kernel: ffff8830d8e53020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
Nov 14 19:08:54 rac2 kernel: ffff8830d8e53030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
Nov 14 19:08:54 rac2 kernel: XFS (dm-0): metadata I/O error: block 0x305ced8 ("xfs_trans_read_buf_map") error 74 numblks 8

解决办法:

由于是根盘,所以无法umount修复:

[root@rac2 ~]# xfs_repair /dev/mapper/centos-root
xfs_repair: /dev/mapper/centos-root contains a mounted filesystem
xfs_repair: /dev/mapper/centos-root contains a mounted and writable filesystem

fatal error -- couldn't initialize XFS library
[root@rac2 ~]# 

 

重启进入单用户模式

按e,末尾添加init=/bin/sh

按ctrl+x

然后xfs_repair -d /dev/dm-0或者xfs_repair -d /dev/mapper/centos-root

完成后,重启系统

[root@rac2 ~]# /oracle/app/19c/grid/bin/crsctl start crs
Oracle Clusterware infrastructure error in CRSCTL (OS PID 11059): Error in an OS-dependent function or service
Error category: -8, operation: access failed, location: SlfAccess, OS error: 30
OS error message: Read-only file system
Oracle Clusterware infrastructure error in CRSCTL (OS PID 11059): Unable to determine usability of ADR home path /oracle/app/grid/diag/crs/rac2/crs - error -8
CLSU-00107: operating system function: open; failed with error data: 30; at location: scrsval5
CLSU-00101: operating system error message: Read-only file system
CLSU-00104: additional error information: cant open file
CRS-4000: Command Start failed, or completed with errors.
[root@rac2 ~]# 
[root@rac2 ~]# 
[root@rac2 ~]# mount / -o rw,remount
[root@rac2 ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   47G   23G   25G  47% /
devtmpfs                 3.8G     0  3.8G   0% /dev
tmpfs                    3.9G     0  3.9G   0% /dev/shm
tmpfs                    3.9G   12M  3.8G   1% /run
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda1               1014M  146M  869M  15% /boot
tmpfs                    781M     0  781M   0% /run/user/0
[root@rac2 ~]# vi 1.txt

dldl
~
~
~
"1.txt" [New] 1L, 5C written
[root@rac2 ~]# ps -ef|grep d.bin
root      11257  10938  0 19:55 pts/0    00:00:00 grep --color=auto d.bin
[root@rac2 ~]# /oracle/app/19c/grid/bin/crsctl start crs
CRS-4123: Oracle High Availability Services has been started.

参考:https://blog.csdn.net/runming56/article/details/81016404

<think>嗯,用户咨询的是XFS文件系统中出现metadataI/Oerror错误,具体是dm-0设备上的error74问题。这个错误通常与硬件故障或突然断电导致的元数据损坏有关,需要谨慎处理。用户引用了四篇关于XFS错误的资料,其中都提到了断电导致的元数据损坏和修复方法。特别是引用[2]和[3]直接涉及dm-0设备的修复步骤,引用[4]提到的"Structureneedscleaning"错误也与当前情况高度相关。这些资料说明用户可能遇到了服务器意外断电后的文件系统损坏。考虑为用户整理系统化的解决方案。首先需要明确error74的具体含义:根据XFS文档,这是XFS_DA_READ_BUF错误,表示读取目录块时元数据校验失败。可能的原因包括:磁盘坏道、供电问题导致写入中断、文件系统日志损坏。dm-0设备通常对应LVM逻辑卷,需要特别注意LVM层是否完好。修复流程应该分层次进行:从只读挂载检查开始,逐步升级到日志重置和深度修复。引用[2]提到的xfs_repair-L命令要放在最后阶段,因为会清空日志导致数据丢失风险。引用[3]的救援模式操作是关键步骤,但用户可能不清楚如何进入该模式,需要补充具体按键说明。数据备份要特别强调,引用[4]案例显示强行修复可能导致挂载失败。如果修复后仍报错,就要考虑硬件诊断,比如smartctl检测。用户没有提供dmesg日志细节,这点在方案中要提醒补充。相关问题设计围绕三个方向:预防措施(对应突然断电问题)、替代恢复工具(如xfs_metadump)、灾难恢复方案。其中LVM快照备份的方案可能对用户最有实用价值。</think>以下是针对 XFS 文件系统在 `/dev/dm-0` 设备上报 **Metadata I/O error (error 74)** 的具体原因分析和解决方案,尤其针对 `xfs_da_read_buf` 错误: --- ### **错误原因分析** 1. **硬件故障 (最常见)** - 磁盘物理坏道、连接线松动、RAID 卡故障或供电不稳导致元数据损坏。 - 错误码 `74` (`EFSCORRUPTED`) 明确指向文件系统结构损坏[^1][^4]。 2. **突然断电/强制重启** - 写入元数据时断电,导致日志(Journal)与实际数据不一致,引发 `xfs_da_read_buf`(目录块读取)校验失败[^1][^2][^4]。 3. **文件系统日志损坏** - XFS 依赖日志保证一致性,日志区损坏会直接触发 Metadata I/O 错误[^2][^3]。 4. **内存故障** - 内存错误可能导致写入磁盘的元数据异常,但概率较低。 --- ### **解决方案(逐步操作)** #### **第一步:进入救援/单用户模式** 1. 重启服务器,在 GRUB 菜单按 `e` 编辑启动参数。 2. 找到 `linux16` 行,将 `ro` 改为 **`rw init=/sysroot/bin/sh`**(参考引用[^3])。 3. 按 `Ctrl+X` 启动,进入紧急 Shell。 #### **第二步:卸载文件系统** ```bash umount /dev/mapper/centos-root # 若挂载点为 /,需先卸载 ``` > ⚠️ 若提示 `busy`,用 `fuser -mk /dev/dm-0` 结束占用进程。 #### **第三步:修复元数据** 1. **基础修复(尝试恢复日志)** ```bash xfs_repair /dev/dm-0 ``` - 成功标志:输出 `Phase 7 - Verify and correct tree counts` 后无报错。 2. **日志损坏时(强制修复)** 若上述失败,清空日志(可能丢失最近操作): ```bash xfs_repair -L /dev/dm-0 # -L 会重置日志(引用[^2]) ``` 3. **深度修复(目录结构损坏)** 针对 `xfs_da_read_buf` 错误(error 74): ```bash xfs_repair -d /dev/dm-0 # -d 允许修复只读挂载的设备(引用[^3]) ``` #### **第四步:检查修复结果** ```bash xfs_check /dev/dm-0 # 确认无错误输出 mount /dev/mapper/centos-root /mnt # 测试挂载 ls /mnt # 检查文件完整性 ``` #### **第五步:备份数据** 修复后立即备份重要数据: ```bash cp -a /mnt/data /backup/ ``` --- ### **修复失败时的备选方案** 1. **尝试挂载并备份** ```bash mount -o ro,norecovery /dev/dm-0 /mnt # 只读模式挂载 ``` 若成功,紧急备份数据至其他磁盘。 2. **使用 `xfs_metadump` 分析** 提取元数据供专家诊断: ```bash xfs_metadump /dev/dm-0 /tmp/dm0_meta.img ``` 3. **专业工具恢复** 考虑工具如 `xfsundelete` 或联系数据恢复公司。 --- ### **预防措施** 1. **UPS 不间断电源**:避免意外断电[^1][^4]。 2. **定期检查磁盘健康**: ```bash smartctl -a /dev/sda | grep "Reallocated_Sector_Ct" ``` 3. **启用 LVM 快照**:关键操作前创建快照。 4. **避免 `-L` 滥用**:仅在日志损坏时使用。 > **重要提示**: > - 操作前务必对磁盘做**完整镜像备份**(如 `dd if=/dev/dm-0 of=/backup/dm0.img`)。 > - 若硬件故障(如坏道),需先更换磁盘再修复文件系统[^1][^4]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值