Ответ
Помимо нехватки места на диске, есть несколько менее очевидных причин, которые DevOps-инженер должен проверить:
-
Исчерпаны inodes (
df -i). Файловая система может иметь свободное место, но лимит на количество файлов и папок (inodes) исчерпан. Это часто случается с системами, генерирующими множество мелких файлов (логи, кэш).df -i /path/to/directory -
Отсутствуют права на запись (
ls -ld). У текущего пользователя нет правw(write) на целевую или родительскую директорию.# Проверить права и владельца текущей директории ls -ld . # Проверить права на родительскую директорию ls -ld .. -
Файловая система смонтирована в режиме "только для чтения" (
mount). Это могло произойти из-за ошибок файловой системы.mount | grep "on /path/to/mountpoint" # Для исправления (если причина не критическая) можно перемонтировать: sudo mount -o remount,rw /path/to/mountpoint -
Сработали квоты дискового пространства (
quota). На сервере могут быть настроены квоты для пользователей или групп.quota -vs <username> -
Блокировка со стороны SELinux/AppArmor (
getenforce,audit.log). Мандатные системы контроля доступа могут запрещать операции.# Проверить режим SELinux getenforce # Просмотреть соответствующие записи в логах аудита sudo grep "AVC.*denied" /var/log/audit/audit.log | tail -20 # Временно для диагностики можно перевести SELinux в permissive режим sudo setenforce 0 -
Директория помечена как неизменяемая (
lsattr). Установлен атрибутi(immutable), который даже для root запрещает создание и удаление.lsattr /path/to/parent/directory # Снять атрибут (только root) sudo chattr -i /path/to/parent/directory