Что означает ошибка EROFS
Ошибка read-only file system (часто отображается как EROFS или сообщение «The file system is read-only») означает, что ядро Linux считает определённый раздел или точку монтирования защищённой только для чтения. Любая попытка записать данные — создать файл, изменить содержимое или смонтировать раздел с флагом записи — завершается сбойными сообщениями, например:
mount: /mnt: устройство занято или ресурс заблокирован
cp: невозможно записать файл: Файл или директория находятся только для чтения
Сбой обычно появляется после внезапного отключения питания, ошибок монтирования или когда системный администратор вручную пометил раздел как ro.
Причины возникновения
- Повреждение файловой системы из-за неожиданного отключения питания или сбоя в работе диска.
- Неправильные записи в
/etc/fstabс флагомroили отсутствием прав записи. - Ошибки монтирования при использовании
mount -o roбез последующего восстановления. - Устаревшие или повреждённые драйверы (особенно для RAID или LVM), которые блокируют запись.
- Аппаратные сбои — дефектные сектора или сбой блокировки шпинделя диска.
- Неправильные права доступа на уровне файлов или каталогов, когда пользователю не хватает прав
w.
💡 Совет: Перед тем как что-либо менять, создайте снимок (бэкап) раздела с помощью
sudo rsyncили инструмента LVM/RAID, чтобы иметь точку возврата.
Способы решения
Способ 1: Исправить повреждённую файловую систему
- Определите устройство, которое вызывает проблему, с помощью
sudo fdisk -lилиlsblk. - Выполните команду проверки и исправления:
sudo fsck -y /dev/sdX1
Команда сканирует таблицу блоков, восстанавливает повреждённые inode и восстанавливает целостность файловой системы. - После завершения перемонтируйте раздел:
sudo mount -o remount,rw /mnt
Способ 2: Исправить запись в /etc/fstab
- Откройте файл с помощью текстового редактора:
sudo nano /etc/fstab - Найдите строку, связанную с проблемным разделом (например,
/dev/sda2 /mnt ext4 defaults 0 0). Убедитесь, что нет флагаroили_netdev, добавьтеdefaultsилиrw, если нужно. - Сохраните изменения (
Ctrl+X,Y,Enter). - Выполните принудительное изменение флага монтирования:
sudo mount -o remount,rw /mnt
Способ 3: Сбросить права доступа
- Для директории, которая вызывает проблему, выполните:
sudo chmod 755 /path/to/dir - Для отдельного файла:
sudo chmod 644 /path/to/file - Если проблема связана с владельцем, измените его:
sudo chown $USER:$USER /path/to/file
Способ 4: Обновить драйверы и ядро
- Debian/Ubuntu:
sudo apt update sudo apt upgrade - Fedora/CentOS:
sudo dnf upgrade
После обновления перезагрузите систему (sudo reboot), чтобы применить новые модули ядра.
Способ 5: Автоматическая проверка диска при загрузке
Если сбой повторяется после перезагрузки, вы можете принудить систему выполнить fsck при старте:
- Откройте конфигурационный файл GRUB:
sudo nano /etc/default/grub - Добавьте параметр
fsck.mode=force&fsck.repair=yesв конце строкиGRUB_CMDLINE_LINUX:GRUB_CMDLINE_LINUX="fsck.mode=force&fsck.repair=yes" - Обновите конфигурацию загрузчика:
sudo update-grub - Перезагрузите систему:
sudo reboot
Система автоматически запустит fsck перед загрузкой, что поможет устранить скрытые ошибки файловой системы.
Профилактика
- Регулярно создавайте бэкапы разделов с помощью
rsync,tarили инструментов LVM. - Используйте бесперебойное питание (UPS), чтобы избежать сбоя при записи.
- Мониторьте здоровье диска с помощью
smartctlи заменяйте устройства до их выхода из строя. - Обновляйте ядро и драйверы своевременно;古い версии часто содержат ошибки, вызывающие проблемы с монтированием.
- Проверяйте
/etc/fstabпосле любых изменений в структуре разделов; удаляйте старые записи, чтобы избежать случайного монтирования в режиме только для чтения. - Настройте резервное копирование журнала транзакций для критически важных данных, чтобы быстро восстановить их после сбоя файловой системы.
Систематическое выполнение этих шагов значительно снижает риск повторного возникновения ошибки read-only file system.