du/dh показывает, что место в файловой системе еще есть, а записать ничего не возможно, т.к. нет места.
Места полно, а записать нельзя
Симптом:
df -h показывает, что место есть, а при записи: "No space left on device".
Почему так бывает
Когда удаляешь файл, его данные не исчезают мгновенно. Если какой-то процесс всё ещё держит открытый дескриптор на этот файл, ядро не освобождает место, пока процесс не закроет его. Получается: файла вроде нет, а гигабайты всё ещё заняты.
Как проверить
Посмотреть, кто держит удалённые файлы:
lsof | grep deleted
или покороче:
lsof +L1
В списке найдёшь процессы и пути к призрачным файлам.
Как починить
Заверши процесс, который держит файл:
kill -9 <pid>
или перезапусти службу, если это, например, nginx, postgres или docker. После этого место действительно освободится.
Вывод
Удалённый файл жив, пока его кто-то держит. df/du не всегда дают полную реальную картину происходящего.
LinuxCamp | #storage
