Read-only file system: почему возникает ошибка и как её исправить

Ошибка read-only file system появляется в тот момент, когда система отказывается записывать файл: команда cp или touch возвращает «Read-only file system», редактор не сохраняет документ, а Android-приложение сообщает, что не может изменить данные на карте памяти. Это не сбой конкретной программы, а состояние всей файловой системы — она смонтирована ядром в режиме «только чтение», и запись заблокирована на уровне ОС.

Чаще всего такое поведение — защитная реакция. Ядро переводит раздел в режим только для чтения, когда обнаруживает ошибки файловой системы, сбои накопителя или проблемы с контроллером, чтобы не усугубить повреждение данных. Реже причина в настройках: раздел намеренно смонтирован с параметром ro, носитель имеет физический переключатель защиты от записи, а в Android запись на внешнюю SD-карту ограничена политикой доступа.

Что означает режим «только чтение»

Файловая система может быть смонтирована в двух базовых режимах: rw (read-write, чтение и запись) и ro (read-only, только чтение). В режиме ro ядро отклоняет любые операции изменения: создание, удаление, переименование файлов и запись в них. Чтение при этом работает в полном объёме.

Перевод в read-only бывает двух видов. Первый — намеренный: администратор или сама система монтирует раздел с опцией ro, например для Live-сессий, раздела восстановления или защиты критичных данных. Второй — аварийный: ядро Linux при ошибках ввода-вывода само перемонтирует раздел в read-only, если в /etc/fstab для него указана опция errors=remount-ro (для ext4 это часто поведение по умолчанию).

Как проверить, в каком режиме смонтирован раздел

Прежде чем что-либо исправлять, нужно увидеть текущее состояние. В Linux выполните в терминале команду, которая покажет все смонтированные файловые системы и их опции:

mount | grep " / "

В выводе ищите интересующий раздел: если в скобках среди параметров стоит ro, раздел действительно смонтирован только для чтения. Альтернативный способ — команда findmnt / или просмотр файла /proc/mounts.

Второй обязательный шаг — посмотреть журнал ядра. Именно там видно, почему система ушла в read-only:

dmesg | grep -iE "error|remount|ext4|i/o"
  • 🔍 Строки вида «Remounting filesystem read-only» — ядро аварийно перевело раздел в ro после ошибки.
  • 💾 Сообщения «I/O error» или «Buffer I/O error on dev…» — вероятны проблемы с накопителем или кабелем.
  • 🧩 Ошибки «EXT4-fs error» — повреждение структуры файловой системы, требуется проверка.
  • 🔒 Отсутствие ошибок при смонтированном ro — раздел переведён в read-only намеренно, через /etc/fstab или команду монтирования.

Основные причины ошибки

Причины удобно разделить на четыре группы — от них зависит дальнейший план действий. Не стоит сразу перемонтировать раздел в rw: если причина аппаратная, принудительная запись может окончательно повредить данные.

ПричинаТипичные признакиПервое действие
Ошибки файловой системыРаздел ушёл в ro после сбоя питания или зависанияПроверка fsck с Live-USB
Неисправность накопителяI/O error в dmesg, медленная работа, щелчки HDDКопирование важных данных, проверка SMART
Ручное монтирование roОшибок в dmesg нет, раздел в ro сразу после загрузкиПроверить /etc/fstab и опции монтирования
Физическая защита носителяSD-карта или USB-адаптер с рычажком LockПроверить переключатель на корпусе
Ограничения AndroidЗапись на SD-карту недоступна сторонним приложениямИспользовать системный файловый менеджер или доступ через SAF

⚠️ Внимание: если в журнале ядра есть ошибки ввода-вывода, первым делом скопируйте важные данные на другой носитель, пока диск читается. Любые попытки «починить» раздел на умирающем накопителе сокращают шансы на успешное восстановление файлов.

Быстрое решение: перемонтирование в режим записи

Если проверка показала, что ошибок диска нет и раздел оказался в read-only из-за настроек или разового сбоя, его можно перемонтировать «на лету», без перезагрузки. Для корневого раздела команда выглядит так:

sudo mount -o remount,rw /

Для отдельного раздела укажите его точку монтирования, например sudo mount -o remount,rw /mnt/data. Если команда завершилась без ошибок — запись восстановлена. Проверьте результат повторным вызовом mount: в опциях должно появиться rw.

Бывает, что перемонтирование отклоняется с сообщением о занятости раздела. Тогда проверьте, какие процессы удерживают файлы: sudo lsof +D /точка/монтирования или sudo fuser -vm /точка/монтирования. Завершите мешающие процессы и повторите попытку.

☑️ Проверка перед перемонтированием в rw

Выполнено: 0 / 5

Исправление ошибок файловой системы через fsck

Когда причина — повреждение структуры файловой системы, помогает утилита fsck. Главное правило: проверять раздел нужно в размонтированном состоянии. Проверка смонтированного раздела может усугубить повреждения, поэтому для корневого раздела процедуру выполняют с Live-USB или из режима восстановления.

Загрузившись с Live-носителя, определите имя устройства командой lsblk и запустите проверку, например для ext4:

sudo fsck -f /dev/sda2

Утилита задаст вопросы об исправлении найденных ошибок. Ключ -y отвечает «да» на все запросы автоматически, но при первом проходе разумнее читать, что именно исправляется. После завершения перезагрузитесь в основную систему и проверьте, монтируется ли раздел в rw.

⚠️ Внимание: не запускайте fsck на смонтированном разделе и не прерывайте проверку на полпути. Если fsck находит массу ошибок, это косвенный признак проблем с самим накопителем — после восстановления данных проверьте его состояние через SMART (smartctl -a /dev/sdX).

📊 Где вы столкнулись с ошибкой read-only file system?
На ПК с Linux
На Android-смартфоне
На USB-флешке или SD-карте
На сервере или VPS

Read-only на SD-картах, флешках и в Android

Съёмные носители — отдельный случай. У полноразмерных SD-карт и многих картридеров есть механический переключатель Lock на боковой грани: в положении блокировки контроллер карты отказывает в записи на аппаратном уровне, и никакие команды ОС это не изменят. Проверьте положение рычажка и попробуйте другой картридер — изношенный адаптер иногда «залипает» в состоянии защиты.

Если переключателя нет или он в рабочем положении, возможен износ флеш-памяти. У USB-флешек и microSD контроллер при исчерпании ресурса перезаписи нередко сам переводит носитель в постоянный read-only — это необратимое состояние: данные ещё читаются, но записать или отформатировать карту уже нельзя. В такой ситуации единственное верное действие — скопировать содержимое и заменить носитель.

В Android ситуация иная: начиная с современных версий системы, сторонним приложениям запись в корень внешней SD-карты ограничена политикой доступа. Ошибка «read-only file system» в файловом менеджере часто означает именно это ограничение, а не неисправность. Запись возможна в собственную папку приложения на карте (Android/data/имя.пакета) или через системный диалог выбора файлов. Точное поведение зависит от версии Android и оболочки производителя, поэтому сверяйтесь с документацией конкретного устройства.

Почему флешка «намертво» уходит в read-only

Внутри флеш-накопителя работает контроллер, который следит за состоянием ячеек памяти. Когда резервные блоки для замены сбойных заканчиваются, контроллер переводит прошивку в режим защиты данных: блокирует запись, оставляя чтение. Программно это состояние обычно не снимается штатными средствами ОС — требуются заводские утилиты под конкретный контроллер, и даже они не гарантируют результат.

Когда раздел смонтирован ro намеренно

Иногда read-only — не ошибка, а задуманная конфигурация. Проверьте файл /etc/fstab: если в строке нужного раздела в поле опций указано ro, система будет монтировать его только для чтения при каждой загрузке. Замените ro на rw и выполните sudo mount -a для применения без перезагрузки.

Также встречаются специфические сценарии: разделы /boot в некоторых hardened-сборках, overlay-файловые системы на роутерах и встраиваемых устройствах, контейнеры с read-only rootfs. В этих случаях режим задан осознанно, и менять его стоит только понимая, зачем он был включён.

Профилактика повторного появления ошибки

Чтобы ошибка не возвращалась, устраните первопричину, а не только симптом. Вот базовый набор мер:

  • 🔌 Исключите внезапные отключения питания — именно они чаще всего приводят к повреждению файловой системы и аварийному remount-ro.
  • 🌡️ Следите за состоянием накопителя: периодически просматривайте SMART-параметры, особенно счётчики переназначенных секторов и ошибок.
  • 💾 Настройте регулярное резервное копирование — read-only на изношенной флешке или деградирующем диске это вопрос времени.
  • 🧰 Используйте качественные картридеры и кабели: нестабильный контакт вызывает I/O errors, которые ядро трактует как сбой диска.

Если ошибка появилась однократно после сбоя питания и fsck ничего критичного не нашёл, достаточно наблюдать за системой. Повторяющиеся уходы в read-only — сигнал планировать замену накопителя, а не бороться с симптомом.

Частые вопросы

Можно ли исправить read-only без потери данных?

В большинстве сценариев да. Перемонтирование в rw и проверка fsck не удаляют пользовательские файлы. Риск потери данных возникает при аппаратной неисправности накопителя, поэтому при ошибках ввода-вывода сначала копируйте важное, а потом чините.

Почему команда remount,rw возвращает ошибку?

Частые причины: раздел занят процессами, файловая система повреждена настолько, что ядро отказывается монтировать её в rw, либо носитель заблокирован аппаратно (переключатель Lock или изношенный контроллер флешки). Проверьте dmesg и список процессов через lsof или fuser.

Что делать, если в read-only ушёл корневой раздел и система не загружается?

Загрузитесь с Live-USB, определите раздел через lsblk, выполните fsck в размонтированном состоянии и перезагрузитесь. Если после проверки система снова уходит в ro, проверяйте SMART диска и кабели подключения.

Почему Android не даёт записывать файлы на SD-карту?

Начиная с современных версий Android, сторонние приложения имеют ограниченный доступ к внешней карте. Используйте системный файловый менеджер, запись в папку приложения на карте или системный механизм выбора файлов. Точные возможности зависят от версии ОС и прошивки устройства.

Флешка определяется, читается, но не форматируется — это read-only?

Очень похоже на аппаратную защиту контроллера при износе памяти. Проверьте переключатель Lock (если есть) и другой картридер. Если защита остаётся на любом устройстве, носитель, скорее всего, необратимо переведён в режим только чтения — скопируйте данные и замените его.