3

Я запускал процесс Python, который создает огромное количество файлов в одном каталоге (я должен был быть умнее и объединять их в несколько каталогов, но это уже другая история).

Через некоторое время я заметил, что не могу идти дальше, и скрипт начал выдавать ошибку:

IOError: [Errno 28] No space left on device: /scr1/data/somefile_00023532.txt

После исследования я обнаружил, что наиболее распространенными причинами являются (1) раздел действительно не имеет свободного места и (2) все inode израсходованы. Тем не менее, df показывает

$ df -h
...
/dev/sdb1       2.7T  1.2T  1.4T  46% /scr1
...

(/dev/sdb1 - рассматриваемый раздел) и

$ df -i 
...
/dev/sdb1      183148544 17725595 165422949   10% /scr1
...

так что и космос, и иноды действительно доступны.

Там может быть слишком много файлов:

$ ls /scr1/data | wc
6468500 6468500 349747747

но ext4 должен справиться с этим.

Что может заставить Linux думать, что это место израсходовано?

ОБНОВЛЕНИЕ 1

Похоже, проблема возникает с конкретным именем файла. Например,

$ touch /scr1/data/somefilewithproblem.txt
touch: cannot touch ‘/scr1/data/somefilewithproblem.txt‘: No space left on device

но другие файлы с таким же шаблоном имени файла (я использую что-то мягкое, например, хэш в шестнадцатеричном формате, числовой идентификационный номер и т. д.) не имеют такой же проблемы.

ОБНОВЛЕНИЕ 2

ДУХ !! Похоже, файловая система как-то повреждена, и после запуска fsck.ext4 на соответствующем разделе проблема исчезла.

Большое спасибо тем, кто предложил мне помощь!

1 ответ1

3

"Нет свободного места на устройстве" может быть очень ошибочной ошибкой. Он может появиться во всех видах условий записи, кроме наличия свободного места на диске.

Этот файл уже существует и принадлежит кому-то другому?

У вас включены квоты в этой файловой системе?

Если вы попытаетесь создать другой файл в этой файловой системе вручную (например, touch /src1/data/testfile), вы получите ту же ошибку или он создаст файл?

Вы можете попробовать создать файл с правами root?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .