Иногда на сервере возникает странная ситуация. Проверяем диск:
df -h
Свободное место есть. Например, десятки гигабайт. Но приложение всё равно пишет:
No space left on device▪️ Первая частая причина - закончились inodes. inode - это запись о файле в файловой системе. Если маленьких файлов очень много, можно упереться не в объем, а в количество файлов. Проверить:
df -i
Если
IUse% близко к 100%, новые файлы создаваться не будут, даже если свободные гигабайты еще есть. Типичные виновники: миллионы мелких cache-файлов, сессии приложения, временные файлы, мелкие логи и т.д. Найти каталоги с большим количеством файлов:
find /var -xdev -type f | cut -d/ -f1-3 | sort | uniq -c | sort -nr | head
▪️ Вторая причина - квоты. Для пользователя или группы может быть ограничение, хотя на файловой системе место есть. Проверить:
quota -s
или для XFS:
xfs_quota -x -c 'report -h' /mountpoint
▪️ Третья причина - приложение пишет не туда, куда вы смотрите. Например, вы проверяете
/data, а сервис пишет в /var/lib/app, /tmp или внутрь контейнера. Полезно посмотреть mount point:
df -h /path/to/file
И понять, какая файловая система реально используется.
▪️ Четвертая причина - лимиты systemd. У сервиса могут быть ограничения через unit:
systemctl cat myapp.service
systemctl show myapp.service | grep -i limit
▪️ Пятая причина - read-only файловая система. Например, после ошибок диска система могла перемонтировать раздел в ro. Проверить:
findmnt -o TARGET,OPTIONS
или:
mount | grep ' ro,'
#linux #filesystem #storage
🧑💻 NetworkAdmin