Проблема с местом на диске в Linux

1 minute read

Бывает, что на диске есть достаточно много свободного места, но файлы упорно не создаются. В некоторых случаях выскакивает ошбка о том, что на диске закончилось свободное место.

Вы упорно вводите:

df -ha

И не понимаете, что же не так: на диске еще сотня гиг свободно, а файл создать нельзя.

Ключ -i выведет информацию о доступных инодах:

df -i

У каждого файла и папки на диске есть свой напарник, в котором содержится дополнительная информация о файле. В linux такие напарники называются инодами (inodes)

Каждый файл и папка имеют права доступа, владельцев, время создания и изменения. Вот эта информация и содержится в инодах.

Как правило, большинство пользователей не знают о том, что количество инодов ограничено до тех пор пока не сталкиваются с проблемами.
Чем больше файлов создано на диске, тем больше используется инодов для хранения информации о них.

Посчитать количество всех инодов используемых в текущем каталоге можно с помощью следующего скрипта:

echo "Inode Usage BreakDown: $(pwd)";
for d in $(find -maxdepth 1 -type d |cut -d\/ -f2 |grep -xv . |sort); do
	c=$(find $d |wc -l) ;
	printf "$c\t\t- $d\n";
done;
printf "Total: \t\t$(find $(pwd) | wc -l)\n"

К сожалению количество инод нельзя увеличить без пересоздания файловой системы, так что у Вас проблема, если сервер имеет только один раздел. Указать количество инод можно с помощью ключа -N в аргументах утилиты mke2fs.