Read-only file system: диск сервера открыт только для чтения
Файлы читаются, но не записываются: система ответила Read-only file system. Причин две — сбой диска или защита службы. Ниже — как отличить одну от другой и что делать в каждом случае.
Содержание 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 выше неё описывают, что именно сломалось.
Если диск закрыт из-за ошибок
- Скопируйте важные данные с сервера, пока они читаются: базу данных, файлы сайта.
- Напишите в поддержку провайдера: приложите строки из журнала ядра. Сбой диска на VPS — забота провайдера.
- Перезагрузите сервер из панели провайдера или командой
sudo reboot. При загрузке система может проверить диск и исправить ошибки. - Если сервер не загрузился, откройте консоль в панели провайдера — там видно, на каком шаге остановилась загрузка.
Если ошибку пишет только служба
Если диск открыт для записи (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Если команда ничего не ответила — запись работает.
Источники
- Исходный код glibc 2.39: errlist.h — тексты системных ошибок: No space left on device, Read-only file system, Cannot allocate memory.
- Исходный код ядра Linux 6.8: super.c — текст Remounting filesystem read-only.
- Справка systemd.exec(5) в Ubuntu 24.04 — ProtectSystem и ReadWritePaths.
- Справка findmnt(8) в Ubuntu 24.04 — как посмотреть параметры подключения диска.
- Справка journalctl(1) в Ubuntu 24.04 — параметры --disk-usage и --vacuum-size.
- Справка systemctl(1) в Ubuntu 24.04 — команды reset-failed, daemon-reload, unmask.
Сверено 10 октября 2026 года.
Что почитать дальше
- Operation not permitted — почему chmod и chown не меняют права и что делать.
- Все ошибки systemd и диска.
- Как подключиться к VPS по SSH.
Проверено и обновлено: 10.10.2026