Translated message

A translation of this page exists in English.

ext4 文件系统被损坏,在日志中包括了 ext4_mb_generate_buddy 信息

Solution Verified - Updated -

Environment

  • Red Hat Enterprise Linux 5
  • Red Hat Enterprise Linux 6
  • Red Hat Enterprise Linux 7
  • Red Hat Enterprise Linux 8
  • ext4 文件系统

Issue

  • ext4 文件系统被损坏,带有 ext4_mb_generate_buddy 信息,如以下信息包括在 /var/log/messages 中:
kernel: EXT4-fs error (device dm-1): ext4_mb_generate_buddy: EXT4-fs: group 84158: 7984 blocks in bitmap, 1840 in gd

Resolution

目前,还没有经过验证的、针对此问题的解决方案。 造成这个问题的一些可能的原因包括:

故障排除

虽然 ext4_mb_generate_buddy 的含义可以被理解,但造成块数量不匹配的根本原因并不清楚。这通常是由存储硬件中的问题造成的。

在对这个问题进行故障排除时,在对文件系统进行修复,收集以下数据会很有用:

  • 整个 dmesg 输出(不仅仅是部分输出)
  • 整个 /var/log/messages 文件(不仅仅是部分内容)
  • 使用类似以下的命令获得存在问题的文件系统的信息:
# e2image -r /dev/<device> - | bzip2 > <device>.e2i.bz2
  • 工作负载详情(每个目录的读/写、顺序/随机、目录和文件的百分比,以及与文件进行交互的方式)

收集故障信息的最佳实践方案是,使用一组可以一致性地重现此问题的步骤。但是目前还没有一个统一的可以实现这个目的步骤。

如果您遇到这个问题,请联系红帽全球支持服务并创建一个相关的支持问题单。

文件系统修复

在收集上述数据后,使用 fsck 修复文件系统以清理存在的任何损坏:

e2fsck -fp /dev/<device>

备注:红帽建议在运行文件系统检查前备份文件系统中存在的数据。

VMware 虚拟机

另外,我没有已知,这个问题会发生中在使用 LSI MegaRAID SAS 设备存储虚拟机磁盘的 VMWare hypervisor 中。如果您在类似的环境中遇到这个问题,请咨询您的虚拟化供应商。

Root Cause

出现这些信息的原因是,ext4 发现在 ext4 buddy 分配器位图和组描述符中的空闲块数据不匹配。这可能是因为位图被损坏造成的。如果出现不匹配的情况,代码会将使用来自位图中计算的值来更新组描述符中的空闲块数量,以确保它们在以后可以匹配。 此问题的确切原因仍在调查中(相关信息记录在一个私有 Bugzilla 中),但对于远程存储的情况,在大多数情况下这个问题都与硬件/固件相关。

Red Hat Enterprise Linux 5

  • 解决 RHEL 5 中的这个问题的信息包括在 Bugzilla RHBZ#789497:
    • 此 BZ 的状态为 CLOSED INSUFFICIENT_DATA。
    • ext4 buddy 信息本身并不是一个程序错误。这些信息是因为由操作系统之外的源所造成的损坏而产生的。
    • 目前还没有发现存在已知的 EXT4 程序错误会造成这个问题,在没有一个可以一致性地重现这个错误的步骤的情况下,无法进行进一步的故障排除。

Red Hat Enterprise Linux 6

  • 解决 RHEL 6 中的这个问题的信息包括在 Bugzilla RHBZ#516580:
    • 此 BZ 的状态为 CLOSED INSUFFICIENT_DATA。
    • ext4 buddy 信息本身并不是一个程序错误。这些信息是因为由操作系统之外的源所造成的损坏而产生的。
    • 目前还没有发现存在已知的 ext4 程序错误会造成这个问题,在没有一个可以一致性地重现这个错误的步骤的情况下,无法进行进一步的故障排除。

Diagnostic Steps

  • 检查 /var/log/messages 中是否有类似如下的信息:
 kernel: EXT4-fs error (device dm-1): ext4_mb_generate_buddy: EXT4-fs: group 84158: 7984 blocks in bitmap, 1840 in gd
 kernel: EXT4-fs error (device dm-1): ext4_mb_generate_buddy: EXT4-fs: group 84157: 2048 blocks in bitmap, 0 in gd
 kernel: EXT4-fs error (device dm-1): ext4_mb_generate_buddy: EXT4-fs: group 84156: 18432 blocks in bitmap, 0 in gd
 kernel: EXT4-fs error (device dm-1): ext4_mb_generate_buddy: EXT4-fs: group 84155: 8192 blocks in bitmap, 0 in gd
 kernel: EXT4-fs error (device dm-1): ext4_mb_generate_buddy: EXT4-fs: group 84154: 26624 blocks in bitmap, 0 in gd
 kernel: EXT4-fs error (device dm-1): ext4_mb_generate_buddy: EXT4-fs: group 84153: 9677 blocks in bitmap, 1485 in gd
 kernel: EXT4-fs error (device dm-1): ext4_mb_generate_buddy: EXT4-fs: group 84152: 8192 blocks in bitmap, 0 in gd
 kernel: EXT4-fs error (device dm-1): ext4_mb_generate_buddy: EXT4-fs: group 84134: 24323 blocks in bitmap, 22275 in gd
 kernel: EXT4-fs error (device dm-1): ext4_mb_generate_buddy: EXT4-fs: group 84123: 28672 blocks in bitmap, 2047 in gd
 kernel: EXT4-fs error (device dm-1): ext4_mb_generate_buddy: EXT4-fs: group 84122: 31541 blocks in bitmap, 17205 in gd
 kernel: EXT4-fs error (device dm-1): ext4_free_inode: bit already cleared for inode 692357486
 kernel: EXT4-fs error (device dm-1): mb_free_blocks: double-free of inode 0's block 2756556800(bit 14336 in group 84123)
 kernel: EXT4-fs error (device dm-1): mb_free_blocks: double-free of inode 0's block 2756556801(bit 14337 in group 84123)
 kernel: EXT4-fs error (device dm-1): mb_free_blocks: double-free of inode 0's block 2756556802(bit 14338 in group 84123)

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Comments