Ошибки

Read-only file system: диск сервера открыт только для чтения

Файлы читаются, но не записываются: система ответила Read-only file system. Причин две — сбой диска или защита службы. Ниже — как отличить одну от другой и что делать в каждом случае.

Обновлено 10.10.2026≈ 4 мин чтения
Содержание 8

Как выглядит ошибка

Слова Read-only file system — «файловая система только для чтения» — пишет любая программа, которой не дали записать файл. Например:

touch: cannot touch 'test.txt': Read-only file system

Шаг 1. Проверьте, открыт ли диск для записи

Команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.

findmnt -no OPTIONS /

Команда покажет, как подключён главный диск. Если ответ начинается с rw, — диск открыт для записи. Если с ro, — только для чтения.

Если rw, а ошибку пишет служба — переходите к шагу про службы. Если ro — читайте дальше.

Шаг 2. Найдите причину в журнале ядра

Когда ядро находит ошибку на диске, оно переключает диск в режим только чтения, чтобы не испортить данные ещё больше. Проверьте журнал ядра с последнего запуска:

sudo journalctl -k -b | grep -i -e 'read-only' -e 'EXT4-fs error'

Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — так и должно быть: наберите пароль и нажмите Enter. Если в ответе есть строка вида

EXT4-fs (vda1): Remounting filesystem read-only

— ядро нашло ошибку на диске и закрыло его для записи. Строки EXT4-fs error выше неё описывают, что именно сломалось.

Если диск закрыт из-за ошибок

Не пытайтесь вернуть диску запись командой mount: если на диске ошибки, данные могут испортиться ещё сильнее.
  1. Скопируйте важные данные с сервера, пока они читаются: базу данных, файлы сайта.
  2. Напишите в поддержку провайдера: приложите строки из журнала ядра. Сбой диска на VPS — забота провайдера.
  3. Перезагрузите сервер из панели провайдера или командой sudo reboot. При загрузке система может проверить диск и исправить ошибки.
  4. Если сервер не загрузился, откройте консоль в панели провайдера — там видно, на каком шаге остановилась загрузка.

Если ошибку пишет только служба

Если диск открыт для записи (rw), а в журнале службы Read-only file system, дело может быть в защите самой службы. systemd умеет запускать службу так, что для неё папки системы видны только для чтения. За это отвечает настройка ProtectSystem в файле службы.

Посмотрите файл службы. В примерах служба называется myapp — подставьте имя своей: nginx, mysql, php8.3-fpm и так далее.

systemctl cat myapp

Найдите строки ProtectSystem= и ReadWritePaths=:

  • ProtectSystem=true — только для чтения папки /usr и /boot.
  • ProtectSystem=full — то же и папка /etc.
  • ProtectSystem=strict — только для чтения вся система, кроме папок, перечисленных в ReadWritePaths=.

Если служба должна писать в папку, которой нет в ReadWritePaths=, добавьте её через дополнительный файл настроек — так изменения не пропадут при обновлении пакета:

sudo systemctl edit myapp

Откроется редактор. Между строками-комментариями впишите, указав свою папку:

[Service]
ReadWritePaths=/var/lib/myapp

Сохраните файл (в nano — Ctrl+O, Enter, затем Ctrl+X). systemd сам перечитает настройки, останется перезапустить службу:

sudo systemctl restart myapp

Как проверить

Попробуйте создать и удалить файл в нужной папке:

sudo touch /var/lib/myapp/test && sudo rm /var/lib/myapp/test

Если команда ничего не ответила — запись работает.

Источники

Сверено 10 октября 2026 года.

Что почитать дальше

Проверено и обновлено: 10.10.2026