Файловая система перешла в режим только для чтения на ходу
Если служба внезапно перестала писать, а в журнале ядра есть сообщение о перемонтировании, значит файловая система обнаружила ошибку и перешла в защитный режим. Это авария, а не настройка: данные под угрозой.
Что это значит
Первое действие — не перемонтировать раздел обратно, а снять копию данных. Возврат записи без разбора причины обычно приводит к новым ошибкам и большей потере.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Ошибки носителя
Ядро обнаружило ошибку ввода-вывода и перевело раздел в режим только для чтения, чтобы не усугублять повреждение.
-
Повреждение метаданных файловой системы
Несогласованность метаданных после аварийного выключения тоже приводит к защитному перемонтированию.
-
Раздел на сетевом хранилище потерял связь
При обрыве связи операции с файлами начинают отказывать, и поведение похоже на защитный режим.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Момент и причина перехода в режим только для чтения.
journalctl -k -b --no-pager | grep -iE "remount|I/O error" | tail -20Текущие параметры монтирования.
findmnt -o TARGET,SOURCE,OPTIONS | headСостояние носителя.
sudo smartctl -H /dev/sdaРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Ядро обнаружило ошибку ввода-вывода и перевело раздел в режим только для чтения, чтобы не усугублять повреждение.
- Как проверить
-
Посмотрите записи ядра и состояние диска.
journalctl -k -b --no-pager | grep -iE "I/O error|remount|EXT4-fs error" | tail -20 sudo smartctl -H -A /dev/sda 2>/dev/null | head -20
- Как исправить
- Снимите копию данных на другой носитель, затем проверяйте файловую систему при размонтированном разделе и меняйте диск.
- Почему происходит
- Несогласованность метаданных после аварийного выключения тоже приводит к защитному перемонтированию.
- Как проверить
-
Посмотрите сообщения файловой системы.
journalctl -k -b --no-pager | grep -iE "ext4-fs error|xfs.*corrupt" | tail
- Как исправить
- Проверьте файловую систему на размонтированном разделе. Для корневого — из режима восстановления.
- Почему происходит
- При обрыве связи операции с файлами начинают отказывать, и поведение похоже на защитный режим.
- Как проверить
-
Посмотрите монтирования и доступность хранилища.
findmnt -t nfs4,nfs,cifs -o TARGET,SOURCE,OPTIONS journalctl -k -b --no-pager | grep -i "not responding" | tail
- Как исправить
- Восстановите связь и перемонтируйте ресурс. Для устойчивости используйте мягкое монтирование.
Пример вывода
Ядро перевело раздел в защитный режим. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
kernel: EXT4-fs error (device vda2): ext4_journal_check_start:83: Detected aborted journal
kernel: EXT4-fs (vda2): Remounting filesystem read-only
myapp[1200]: fatal: write /var/lib/myapp/state.db: read-only file system
Связанные ошибки
- Read-only file system в журнале службы Служба не может писать: файловая система только для чтения. Разбор: параметры изоляции unit, монтирование ro, ошибки файловой системы.
- Input/output error в журнале службы Ошибка ввода-вывода: проблемы носителя, отвалившийся сетевой ресурс, повреждённая файловая система. Что проверять срочно.
- fsck failed: проверка файловой системы остановила загрузку Проверка файловой системы при загрузке завершилась неудачей. Как прочитать причину, запустить проверку вручную и что делать с корневым разделом.
- Disk quota exceeded для службы Место на разделе есть, а запись отклоняется: исчерпана дисковая квота пользователя или группы.
- Docker: no space left on device при запуске контейнеров Раздел с /var/lib/docker заполнен образами и слоями. Как посчитать занятое и что можно удалить безопасно.
- Elasticsearch: индексы переведены в режим только для чтения Elasticsearch блокирует запись при нехватке места: пороги watermark. Как снять блокировку правильно.
- MySQL: InnoDB не запускается после аварийного завершения Ошибки InnoDB при старте: повреждение страниц, несовпадение журнала, режим принудительного восстановления.
- MySQL: журнал двоичных изменений заполнил диск Место кончилось из-за binlog: не настроена очистка, отстала репликация, слишком большой срок хранения.
Источники
- Документация ext4: обработка ошибок
-
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Наблюдалось на диске с ошибками в тестовой среде.