Почему возникает ошибка «нет места» при создании файла в Linux, хотя место на диске есть?

«Почему возникает ошибка «нет места» при создании файла в Linux, хотя место на диске есть?» — вопрос из категории Linux, который задают на 24% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Linux ошибка No space left on device (ENOSPC) может возникать даже при наличии свободного места на диске. Основные причины, с которыми я сталкивался:

1. Исчерпание inodes Файловая система хранит метаданные о каждом файле и каталоге в структурах, называемых inodes. Если свободные inodes закончились, новые файлы создать нельзя, даже если есть свободные блоки данных.

# Проверка использования inodes
df -i /path/to/filesystem
# Решение: найти и удалить множество мелких файлов (часто в /tmp, кэшах или логах).
find /path -xdev -type f | wc -l  # Оценка количества файлов

2. Дисковые квоты пользователя или группы Система может ограничивать объем дискового пространства или число inodes для конкретного пользователя.

# Проверка квот (если включены)
quota -vs <username>
repquota -a

3. Ограничения на уровне каталога

  • Атрибут immutable: Файл или каталог защищен от любых изменений.
    lsattr /path/to/directory
    # Если стоит флаг 'i', снять его можно так (требует прав root):
    chattr -i /path/to/directory
  • Недостаточные права на запись: Убедитесь, что у пользователя есть право w на целевой каталог.

4. Файловая система смонтирована в режиме "только для чтения" (read-only) Это может произойти из-за ошибок файловой системы, которые ядро автоматически обрабатывает, перемонтируя раздел в ro для предотвращения повреждения данных.

mount | grep "on /path"
# Решение: проверить журналы ядра (`dmesg | tail`) на наличие ошибок FS и, если возможно, перемонтировать в rw.
mount -o remount,rw /path

Для DevOps: Эта проблема часто возникает на серверах с высоким оборотом мелких файлов (логи приложений, кэши, временные файлы CI/CD). Решением является мониторинг не только свободного места, но и использования inodes, а также настройка log rotation и очистки кэшей.