При запуске df
показывает, что корневое устройство заполнено.
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 9.9G 9.4G 0 100% /
Я посмотрел на inode
использование и есть довольно много места для корневого устройства
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 640K 103K 538K 16% /
Но когда я запускаю du
команду, это показывает, что я использовал только 2G
из 9.9G
.
ip-XXX-XXX-XXX-XXX:/$ du -xh --max-depth=1
14M ./etc
4.0K ./mnt
96K ./tmp
3.5M ./bin
0 ./sys
964K ./boot
4.0K ./srv
0 ./dev
55M ./lib
25M ./root
1.1G ./usr
4.0K ./opt
846M ./var
4.3M ./sbin
23M ./home
16K ./lost+found
0 ./proc
2.0G .
Это просто сводит меня с ума и интересно тоже. Это большая проблема для нас, так как корневой диск /
заполнен и некоторые функции на нашем сайте не работают.
Пожалуйста, помогите мне решить (также понять) эту проблему.
Спасибо.
linux
debian
filesystems
disk-space
Ракеш Санкар
источник
источник
+df +du
на Linux и другие вопросы в Unix & Linux .du -x /
и я вижу, что используется только 2G, и я рассчитал размер инода, который есть160M
. Это помогло мне понять вещи, но я просто хочу решить эту проблему.du
с правами root? В противном случае он может сообщать только о тех файлах, к которым у вас есть доступ.root
ncdu
программы, которая помогает визуализировать использование диска.Ответы:
Когда файлы удаляются в * nix, они продолжают жить на диске (и занимают место на диске) до тех пор, пока процесс открывает их. Довольно часто это можно использовать для «защиты» временных файлов, создавая их с небольшим размером, удаляя их, а затем используя удаленный файл для хранения данных, не беспокоясь о том, что другие процессы (легко) могут получить к ним доступ, поэтому объем пространства в удаленных файлах может вырасти довольно большим, если, скажем, таким образом обрабатывается временная база данных или сеанс редактирования мультимедиа. Другая возможность того, как вы могли бы получить так много «потерянного» пространства, была бы, если бы система была обновлена (несколько раз) без перезагрузки или перезапуска программ, в результате чего все ваши старые библиотеки .so были открыты программами, которые были запущены до обновить и все еще работает.
df
видит пространство, используемое этими файлами, потому что просто смотрит, сколько места выделено на устройстве, ноdu
не видит их, потому что нет соответствующих записей каталога.«Скрытое» используемое пространство, подобное этому, может быть освобождено только тогда, когда процессы, которые удалили файлы, открывают их. Вы можете найти эти процессы с помощью
fuser
команды и завершить их (или, для многих демонов, отправить сигнал, говорящий им о том, чтобы закрыть и заново открыть все открытые файлы).источник
hidden
используемое пространство, я пытаюсь запуститьfuser
команду, чтобы увидеть все файлы, которые используются процессом, но не связаны - я не смог найти ни одного. У вас есть какая-либо команда или направление, которое побуждает меня найти его? Это команда, которую я используюfuser -v -a /
Бывали случаи, когда диск заполнялся, его можно перепутать до перезагрузки / перемонтирования, что диск все еще заполнен, даже если вы удалили загрузку файлов.
источник
Со своей стороны, я просто перезапустил syslogd, чтобы вернуть дисковое пространство. Мне не хватило 3ГБ! Мой сервер был запущен в течение 250 дней.
источник
Существует способ очистки пространства без перезапуска приложения. Вот подробности:
Допустим, у вас
foo
запущен процесс и создается файл размером 2 ГБ с именем abc.log. Теперь скажите, что этот abc.log удален кем-то другим.Получить
foo
PID (скажем, 123). Так/proc/123/fd
покажет список файловых дескрипторов, открытыхfoo
. Один с abc.log покажет как удаленный. Скажем,fd
abs.log равен 111. Если вы запуститеless /proc/123/fd/111
, он все равно покажет вам все эти 2 ГБ данных.Беги
echo " " > /proc/123/fd/111
. Это перезапишет содержимое пустой строкой. После этой команды, если вы попробуете,df
она покажет дополнительные 2 ГБ, восстановленные очисткой abc.log.Вот и все. Я попробовал это на CentOS, и это работает.
источник