Файловая система только для чтения
Название ошибки говорит само за себя: программа не может записывать на диск, потому что диск находится в режиме “только для чтения” или программа запущена с ограниченными правами на запись.
Как эта ошибка проявляется в Astra
Заголовок раздела «Как эта ошибка проявляется в Astra»Наиболее частые ситуации, когда возникает эта ошибка:
- При первом запуске Astra и попытке сохранить начальную конфигурацию
- При сохранении изменений через веб-интерфейс
В журнале вы увидите ошибку такого вида:
failed to save config /etc/astra/astra.conf [Read-only file system]Файловая система специально смонтирована как только для чтения
Заголовок раздела «Файловая система специально смонтирована как только для чтения»В некоторых случаях файловая система может быть специально смонтирована в режиме только для чтения. Это бывает на live USB-системах, в режиме восстановления или на некоторых встраиваемых устройствах.
Как проверить
Заголовок раздела «Как проверить»Вы можете проверить, смонтирована ли файловая система как только для чтения, выполнив команду:
mount | grep ' / 'Ищите опцию ro (read-only) в выводе. Пример:
/dev/sda1 on / type ext4 (ro,relatime)Если вы видите ro в опциях, файловая система доступна только для чтения.
Также можно проверить так:
cat /proc/mounts | grep ' / 'Как исправить
Заголовок раздела «Как исправить»Чтобы перемонтировать корневую файловую систему в режим чтения-записи:
mount -o remount,rw /Это изменение может не сохраниться после перезагрузки. Чтобы сделать его постоянным, проверьте файл /etc/fstab и убедитесь, что корневая файловая система не указана для монтирования только для чтения. В четвёртом поле в /etc/fstab не должно быть ro.
Автоматический переход файловой системы в режим только для чтения
Заголовок раздела «Автоматический переход файловой системы в режим только для чтения»Файловые системы Linux могут автоматически переходить в режим только для чтения при обнаружении критических ошибок. Это механизм защиты от повреждения данных.
Причины автоматического перехода
Заголовок раздела «Причины автоматического перехода»Наиболее частые причины:
- Ошибки диска: Физические проблемы с диском, например, битые сектора или сбои оборудования
- Повреждение файловой системы: Ошибки в структуре файловой системы, обнаруженные во время работы
- Ошибки ввода-вывода: Проблемы с доступом к устройству хранения данных
- Деградация RAID: Когда RAID-массив переходит в деградированное состояние
Как проверить
Заголовок раздела «Как проверить»Проверьте системные журналы на наличие ошибок диска или файловой системы:
dmesg | grep -i "read-only"Или:
journalctl -xe | grep -i "read-only"Ищите сообщения об ошибках ввода-вывода, ошибках файловой системы или перемонтировании:
EXT4-fs error: remounting filesystem read-onlyI/O error, dev sda, sector 12345Также можно проверить SMART-статус диска:
smartctl -a /dev/sdaОбратите внимание на переназначенные сектора, ожидающие сектора и другие признаки неисправности диска.
Изоляция через mount namespace
Заголовок раздела «Изоляция через mount namespace»Процесс может работать в среде, где файловая система специально ограничена с помощью пространств монтирования (mount namespaces). Это часто встречается в контейнерах или при использовании некоторых средств безопасности. Если вы столкнулись с такой ситуацией и знаете, что такое mount namespaces, вы уже знаете, как с этим справиться.
Параметр systemd ProtectSystem
Заголовок раздела «Параметр systemd ProtectSystem»Параметр ProtectSystem в файлах сервисов systemd может ограничивать права на запись в определённые каталоги.
О ProtectSystem
Заголовок раздела «О ProtectSystem»Опция ProtectSystem делает части файловой системы доступными только для чтения для сервиса:
ProtectSystem=strict— делает всю файловую систему только для чтения, кроме/proc,/devи/sysProtectSystem=full— делает/usr,/bootи/efiтолько для чтенияProtectSystem=yes— делает/usrи/bootтолько для чтения
Сама Astra (при инициализации через astra init) не использует этот параметр в своём сервисном файле. Однако если Astra запускается через другой сервис-монитор, например, monit, в сервисном файле этого инструмента может быть указан ProtectSystem.
Как исправить
Заголовок раздела «Как исправить»Проверьте systemd-сервисный файл, который запускает Astra или сервис мониторинга:
systemctl cat astraИли если Astra запускается через другой сервис, например monit:
systemctl cat monitИщите параметр ProtectSystem в секции [Service]. Если он есть, удалите его или установите в false:
[Service]ProtectSystem=falseПосле редактирования сервисного файла перезагрузите systemd и перезапустите сервис:
systemctl daemon-reloadsystemctl restart astra