
Unix не является моим родным языком, и меня сбивает с толку их концепция файловых систем.
Когда я смотрю на свое свободное пространство, я вижу:
/$ df -kh
Filesystem Size Used Avail Use% Mounted on
/dev/xvda1 7.9G 7.1G 397M 95% /
none 3.7G 120K 3.7G 1% /dev
none 3.7G 4.0K 3.7G 1% /dev/shm
none 3.7G 48K 3.7G 1% /var/run
none 3.7G 0 3.7G 0% /var/lock
/dev/xvdf 100G 19G 82G 19% /db
/dev/xvdg 100G 15G 86G 15% /images
/dev/xvdb 414G 199M 393G 1% /mnt
Для меня это означает, что все файлы и каталоги в /db находятся в файловой системе xvdf, все в /images находится в xvdg, а все в /mnt находится в xvdb. Все остальное находится в xvda1.
Однако xvda1 имеет только 7,9G пространства. Так почему же
/$ sudo du -sh var
25G var
покажите мне, что /var занимает 25G? Сначала я подумал, что, возможно, он считает содержимое в местах назначения символических ссылок, но я знаю, что в нескольких каталогах ниже есть символическая ссылка на каталог /images, и в нем 86G содержимого, поэтому var должен быть >86G, если переходить по символическим ссылкам.
Так как же /var может занимать 25 ГБ на диске, на котором всего 7,9 ГБ?
Кстати, это экземпляр Ubuntu, работающий в EC2 Amazon, если это имеет значение.
решение1
Это даст вам правильный ответ на вашу проблему.
du -ch --max-depth=1 -x /var
-x
покажет только использование данных одной файловой системы, пропуская содержимое других файловых систем из каталога /var
--max-depth=1
выдаст данные об использовании только первого уровня, например /var/a /var/b и т. д.
решение2
Из вывода df,
/dev/xvdg 100G 15G 86G 15% /images
В /images использовалось только 15G.
решение3
Убедитесь, что var
это не символическая ссылка на какую-либо другую файловую систему.
/$ ls -ld var
drwxr-xr-x 14 root root 4096 Jun 22 02:13 var
решение4
Также возможно, что вам придется бежать, fsck
чтобы устранить несоответствие.
Я упоминаю это только для полноты картины, но я все еще подозреваю, что что-то другое более вероятно. Если через некоторое время вы все еще ничего не нашли, то вам стоит попробовать это.