Kernel BUG at fs/buffer.c: Buffer I/O error on device — Восстановление файловой системы
Архитектура ошибки и симптомы сбоя
Критический сбой «Kernel BUG at fs/buffer.c (Buffer I/O error on device)» генерируется слоем блочного ввода-вывода ядра Linux. Он указывает на то, что операция записи или чтения буфера файловой системы (buffer_head) завершилась фатальной ошибкой дискового контроллера, либо метаданные буфера были повреждены во время передачи по шине SATA/SAS/NVMe.
Диагностическая таблица параметров сбоя
| Параметр | Значение | Инженерный смысл сбоя |
|---|---|---|
| fs/buffer.c | VFS Buffer Cache | Подсистема кэширования дисковых буферов файловой системы. |
| Buffer I/O error | Hardware / I/O Drop | Отказ накопителя, таймаут шины SCSI/NVMe или деградация RAID-массива. |
| Remount RO | Ext4 Error Action | Файловая система аварийно переведена в режим Read-Only для спасения данных. |
Пошаговое дерево решений и сценарии траблшутинга
Сценарий 1: Проверка SMART-состояния накопителя
# Проверка состояния диска (замените sda на ваш диск):
sudo smartctl -H /dev/sda
sudo smartctl -A /dev/sda | grep -E "(Reallocated|Current_Pending|Offline_Uncorrectable)"Если атрибуты Current_Pending_Sector или Reallocated_Sector_Ct отличны от нуля — накопитель требует немедленной замены.
Сценарий 2: Принудительное исправление ошибок файловой системы
Загрузитесь с LiveCD / Rescue Mode и выполните проверку структуры ФС:
# Для файловых систем Ext4:
sudo e2fsck -fvy /dev/sda2
# Для файловых систем XFS:
sudo xfs_repair /dev/sda2Сценарий 3: Проверка кабелей SAS/SATA и контроллера HBA
Ошибки в fs/buffer.c часто вызваны повреждением SATA-шлейфов (рост атрибута UDMA_CRC_Error_Count в SMART). Замените кабель и проверьте журнал аппаратного RAID-контроллера.
Не перезагружайте сервер вслепую во избежание потери данных. Обратитесь в ITSTM: восстановим базы данных, выполним посекторное клонирование и заменим накопители в RAID без простоя.
Частые вопросы (FAQ)
Почему файловая система внезапно переходит в режим 'Read-Only'?
В суперблоке Ext4/Ext3 по умолчанию задан флаг errors=remount-ro. При обнаружении сбоя I/O ядро немедленно запрещает запись, чтобы защитить структуру метаданных от дальнейшего разрушения.
Можно ли исправить XFS с помощью e2fsck?
Нет. Для файловых систем XFS используется утилита xfs_repair. Запуск e2fsck на разделе XFS не сработает или вернет ошибку некорректного суперблока.