Диск медленно заполняется, но нет видимых изменений размера файла

df
 Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/vda1       30830588 22454332   6787120  77% /
none                   4        0         4   0% /sys/fs/cgroup
udev             1014124        4   1014120   1% /dev
tmpfs             204996      336    204660   1% /run
none                5120        0      5120   0% /run/lock
none             1024976        0   1024976   0% /run/shm
none              102400        0    102400   0% /run/user

Что 77% вчера было всего 60%, и через несколько дней оно заполнится до 100%.

Я некоторое время наблюдаю за фильтрами:

sudo du -sch /*


9.6M    /bin
65M     /boot
224K    /build
4.0K    /dev
6.5M    /etc
111M    /home
0       /initrd.img
0       /initrd.img.old
483M    /lib
4.0K    /lib64
16K     /lost+found
8.0K    /media
4.0K    /mnt
4.0K    /opt
du: cannot access ‘/proc/21705/task/21705/fd/4’: No such file or directory
du: cannot access ‘/proc/21705/task/21705/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/21705/fd/4’: No such file or directory
du: cannot access ‘/proc/21705/fdinfo/4’: No such file or directory
0       /proc
21M     /root
336K    /run
12M     /sbin
8.0K    /srv
4.1G    /swapfile
0       /sys
4.0K    /tmp
1.1G    /usr
7.4G    /var
0       /vmlinuz
0       /vmlinuz.old
14G     total

Это давало мне (более или менее) одинаковые числа каждый день. Общее количество 14G меньше половины размера диска. Где остальные?

Мои знания в Linux не намного глубже.

Возможно ли, что файлы не отображаются здесь? Возможно ли выделение пространства каким-либо другим способом?

1
задан 23 October 2015 в 11:33

1 ответ

Чтобы добавить отличный ответ от muru:

df показывает размер на диске, а du показывает общий размер содержимого файлов.

Возможно, то, что вы не видите с помощью du, - это появление многих мелких файлов ... (посмотрите на последний столбец df -i и посмотрите, будет ли количество inodes (т. е. файлов ) увеличивает слишком много сверхурочных)

Если у вас, скажем, 1'000'000 (1 миллион) крошечных 1-байтных файлов, du будет считать это как 1'000'000 байт всего, допустим, 1Mb (... пуристы, пожалуйста, не сжимайте)

Но на диске каждый файл состоит из двух вещей:

df показывает размер на диске, И данные каждого файла (= содержимое файла) помещаются на блоки диска, и эти блоки не могут содержать несколько данных файла (обычно ...), поэтому ваш 1 байт данных будет занимать менее 1 блок

Таким образом, миллион файлов 1-байтных файлов будет занимать 1'000'000'000 * size_of_a_block общее пространство для данных, плюс 1'000'000'000 * size_of_an_inode размера inode ... Это может составлять несколько ГБ дискового пространства для 1 миллион «1-байтных» файлов.

Если у вас есть 1024-байтовые блоки и еще 256 байтов размера inode, ваши 1'000'000 файлов будут сообщены как примерно 1Mb на du, но w хуже, чем 1,25 ГБ на диске (как видно из df)! (или даже 2Gb, если каждый индексный дескриптор также должен быть на одном выделенном блоке диска ... Я не знаю, так ли это)

2
ответ дан 23 May 2018 в 17:13
  • 1
    Если вы явно не используете опцию (-b или --apparent-size), которая сообщает du, чтобы показать видимый размер файла, du на самом деле всегда будет показывать размер на диске файла (общее количество используемых блоков раз блок размер). На самом деле это может быть либо больше (нормальный случай), либо меньше (в случае разреженных файлов), чем кажущийся размер файла. – Jonathan Callen 25 September 2015 в 06:46

Другие вопросы по тегам:

Похожие вопросы: