У меня есть диск, где использование inode составляет 100% (с помощью df -i
команды). Однако после существенного удаления файлов использование остается на 100%.
Какой правильный способ сделать это тогда?
Как это возможно, что дисковод с меньшим использованием дискового пространства может иметь более высокое использование Inode, чем дисковод с более высоким использованием дискового пространства?
Возможно ли, если я заархивирую много файлов, это уменьшит количество используемых инодов?
linux
unix
memory-management
inode
neversaint
источник
источник
Ответы:
Для диска довольно легко использовать большое количество inode, даже если диск не очень заполнен.
Inode выделяется для файла, поэтому, если у вас есть несколько миллиардов файлов, каждый по 1 байту, у вас закончатся inode задолго до того, как закончится диск.
Также возможно, что удаление файлов не уменьшит количество инодов, если файлы имеют несколько жестких ссылок. Как я уже сказал, inode принадлежит файлу, а не записи каталога. Если с файлом связаны две записи каталога, удаление одной из них не освобождает индекс.
Кроме того, вы можете удалить запись каталога, но, если запущенный процесс все еще имеет открытый файл, индекс не будет освобожден.
Моим первоначальным советом было бы удалить все файлы, которые вы можете, затем перезагрузить окно, чтобы убедиться, что не осталось процессов, удерживающих файлы открытыми.
Если вы делаете это, и у вас все еще есть проблема, дайте нам знать.
Кстати, если вы ищете каталоги, которые содержат много файлов, этот скрипт может помочь:
источник
>/tmp/count_em_$$
будет работать, только если у вас есть место для этого ... если это так, см. Ответ @ simon./tmp
не повлияет на другие ваши файловые системы.ls -A
вместоls -a
. Почему вы хотите считать. и ..?Если вам не повезло, вы использовали около 100% всех инодов и не можете создать скипет. Вы можете проверить это с
df -ih
.Тогда эта команда bash может помочь вам:
И да, это займет время, но вы можете найти каталог с наибольшим количеством файлов.
источник
awk
может хранить хэш каталога и количество файлов, не разбирая и не сортируя строки из миллиарда строк. Тем не менее, возможно, вот улучшение:find . -maxdepth 1 -type d | grep -v '^\.$' | xargs -n 1 -i{} find {} -xdev -type f | cut -d "/" -f 2 | uniq -c | sort -n
- это только сортирует последний список.sort
может не сохранить все в памяти и попытаться автоматически вернуться к записи временного файла. Процесс, который, очевидно, потерпит неудачу ...sort
не удалось для меня, но я смог дать,--buffer-size=10G
который работал.Моя ситуация состояла в том, что у меня не было inode, и я уже удалил все, что мог.
Я на Ubuntu 12.04LTS и не могу удалить старые ядра Linux, которые занимали около 400 000 Inode, потому что apt был сломан из-за отсутствующего пакета. И я не смог установить новый пакет, потому что у меня не было inode, поэтому я застрял.
В итоге я удалил несколько старых ядер linux вручную, чтобы освободить около 10 000 inode
Этого было достаточно, чтобы затем позволить мне установить недостающий пакет и исправить мои ошибки.
а затем удалите остальные старые ядра Linux с помощью apt
сейчас все намного лучше
источник
sudo rm -rf /usr/src/linux-headers-3.2.0-2*
если я уверен, что не использую это ядро?$ sudo apt-get autoremove
одному, сделал свое дело для меня.Мое решение:
Попробуйте найти, если это проблема с inode:
Попробуйте найти корневые папки с большим количеством инодов:
Попробуйте найти конкретные папки:
Если это заголовки Linux, попробуйте удалить самый старый с помощью:
Лично я переместил их в смонтированную папку (потому что для меня последняя команда не удалась) и установил последнюю с:
Это решило мою проблему.
источник
SpamAssasin-Temp
.find /var/spool/MailScanner/incoming/SpamAssassin-Temp -mtime +1 -print | xargs rm -f
сделал работу :) Спасибо!for i in /usr/src/*; do echo -en "$i\t"; find $i 2>/dev/null |wc -l; done
for i in /src/*; do echo "$i, `find $i |wc -l`"; done|sort -nrk 2|head -10
показать топ-10 крупнейших каталогаУ меня была такая же проблема, исправили, удалив каталог сессий php
Это может быть под,
/var/lib/php5
если вы используете старую версию PHP.Воссоздайте его со следующим разрешением
Разрешение по умолчанию для каталога в Debian показывало
drwx-wx-wt
(1733)источник
rm -rf /var/lib/php/sessions/*
вероятно, будет лучшей командой - она не удалит каталог сеанса, только его содержимое ... Тогда вам не нужно беспокоиться о его воссозданииМы испытали это на учетной записи HostGator (которая устанавливает ограничения на иноды на всех своих хостингах) после спам-атаки. Он оставил огромное количество записей очереди в /root/.cpanel/comet. Если это произойдет, и вы обнаружите, что у вас нет свободных инодов, вы можете запустить эту утилиту cpanel через shell:
источник
Вы можете использовать RSYNC, чтобы УДАЛИТЬ большое количество файлов
Создайте пустую папку с 0 файлами в ней, и команда синхронизирует ваши тестовые папки с большим количеством файлов (я удалил почти 5 миллионов файлов, используя этот метод).
Благодаря http://www.slashroot.in/which-is-the-fastest-method-to-delete-files-in-linux
источник
rm *
для большого количества файлов, из-за расширения подстановочного знака и передачи / обработки каждого аргумента, ноrm test/
хорошо для удаленияtest/
папки, содержащей много файлов.eaccelerator может быть причиной проблемы, поскольку он компилирует PHP в блоки ... У меня была эта проблема с сервером Amazon AWS на сайте с большой нагрузкой. Освободите Inode, удалив кэш eaccelerator в / var / cache / eaccelerator, если у вас по-прежнему возникают проблемы.
(или какой-либо другой каталог кеша)
источник
Недавно мы столкнулись с подобной проблемой. В случае, если процесс ссылается на удаленный файл, Inode не должен освобождаться, поэтому вам нужно проверить lsof /, и kill / restart процесса освободит inode.
Поправь меня, если я здесь не прав.
источник
Как уже говорилось ранее, файловая система может исчерпать inode, если есть много маленьких файлов. Я предоставил некоторые средства для поиска каталогов, которые содержат большинство файлов здесь .
источник
Поздний ответ: в моем случае это были мои файлы сессий под
которые использовали Inodes.
Я даже не смог открыть свой crontab или создать новый каталог, не говоря уже о запуске операции удаления. Поскольку я использую PHP, у нас есть это руководство, где я скопировал код из примера 1 и настроил cronjob для выполнения этой части кода.
Если вам интересно, как мне удалось открыть мой crontab, тогда я удалил некоторые сессии вручную через CLI.
Надеюсь это поможет!
источник
Вы могли видеть эту информацию
источник
Многие ответы на этот вопрос до сих пор, и все вышеперечисленное кажется конкретным. Я думаю, что вы будете в безопасности, используя по
stat
мере продвижения, но в зависимости от ОС, вы можете получить некоторые ошибки inode. Таким образом, реализация ваших собственныхstat
функций вызова с использованием,64bit
чтобы избежать любых проблем переполнения, кажется довольно совместимой.источник
Если вы используете докер, удалите все изображения. Они использовали много места ....
Остановить все контейнеры
Удалить все контейнеры
Удалить все изображения
Работает для меня
источник