Это меня уже давно сбивает с толку. Я работаю на Ubuntu 11.04. Мой корневой раздел заполняется, и я не могу понять, что является причиной. Еще более странно, когда я запускаю df -h
, вот что выводится:
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 9.2G 8.8G 0 100% /
Как видите, должно быть около 400 МБ свободного места, но Avail
показывает 0. Что может быть причиной этого? Я даже удалил несколько программ, чтобы освободить место, и оно снова заполняется. Предложения о том, как узнать, какие файлы, если таковые имеются, заполняют место, также приветствуются.
решение1
Первый выстрел: Высокий трафик в журнале ошибок. Думаю, если бы вы скачивали видео, вы бы это знали. :)
sudo du -sh /var/log
- -s — это резюме
- -h — суффикс, читаемый человеком (k, M, G, T)
У меня это 20М, и кроме каталога логов есть кэш для установок. Использовать
apt-get clean
Если это ваша проблема.
Конечно, вам следует проверить, находится ли /home в вашем корневом разделе.
Если вам приходится выполнять поиск в больших файлах итеративно, я могу предложить ряд команд, которые можно повторять и которые выполняются довольно быстро после первого начального шага:
- Вы начинаете с подозрительного каталога на верхнем уровне
- Затем вы ищете все подкаталоги и файлы по их размеру и сортируете по числовому значению:
sudo du -s /var/* | sort -n
0 /var/crash
4 /var/www
44 /var/games
124 /var/run
2306 /var/tmp
18538 /var/log
251876 /var/cache
1053231 /var/lib
- Я сократил пример, чтобы он был короче. Итак, мы видим, что самый большой подкаталог — /var/lib, и повторяем шаг для /var/lib. Теперь поиск намного быстрее, потому что вычисленные результаты каким-то образом кэшируются:
sudo du -s /var/lib/* | sort -n
78116 /var/lib/apt-xapian-index
104580 /var/lib/dpkg
680503 /var/lib/postgresql
и так далее. Проследите за самыми большими каталогами, чтобы найти самые большие файлы. Здесь нельзя использовать -sh, потому что сортировка по числам не работает с k/M/G/T для килобайт и так далее.
решение2
При форматировании файловая система ext2/3/4 резервирует определенный процент дискового пространства для исключительного использования пользователем root. По умолчанию это 5%. Цель этого заключается в том, чтобы система могла продолжать работать и могла загружаться, даже если непривилегированные пользователи заполнят все доступное им дисковое пространство.
В общем, заполнениелюбойЗаполнение файловой системы более чем на 95% ее емкости не является хорошей идеей, поскольку это приводит к чрезмерной фрагментации, что приводит к снижению производительности — даже после освобождения дискового пространства.
От man mke2fs
:
-m reserved-blocks-percentage
Specify the percentage of the filesystem blocks
reserved for the super-user. This avoids fragmenta‐
tion, and allows root-owned daemons, such as
syslogd(8), to continue to function correctly after
non-privileged processes are prevented from writing
to the filesystem. The default percentage is 5%.
Если вы совсем отчаялись, вы можете использовать tune2fs
для изменения этого значения. Смотрите man tune2fs
для получения дополнительной информации