Linux Labs

Хранилище / Ступень 1 из 11

Место закончилось — какое именно?

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 3 из 8 · на машине · 5 мин

Размер, блоки и inode одного файла

Размер одного файла описывают три разных числа, и занятое место показывает только одно из них.

stat печатает все три рядом. Так выглядит пустой файл из кэша, который съел inode в начале урока:

text
  Size: 0       Blocks: 0     IO Block: 4096  regular empty file
Device: 7,0     Inode: 16     Links: 1
Поле stat Что значит Где ещё видно
Size размер: сколько байт прочитает программа ls -l
Blocks место под содержимое, в единицах по 512 байт du
Inode номер записи о файле ls -i

Size — логический размер файла. У пустого файла размер и блоки нулевые, а inode есть. Сотни таких файлов почти не видны в df -h и du -h и при этом расходуют все inode.

Бывает и обратное расхождение: у разреженного файла размер большой, а блоков мало. Участки, куда ничего не записывали, места не занимают и при чтении дают нули. Создай такой файл сам:

bash
truncate -s 1G /tmp/sparse.img
ls -lh /tmp/sparse.img
du -h /tmp/sparse.img

ls -lh покажет размер 1.0G, du -h — 0: truncate задал размер, а данных в файл никто не писал. Так же устроен образ учебного тома.

Проверь себя 1 вопрос

На корне / кончается место. ls -lhS /var/lib/images первым в списке показывает образ vm.img размером 40G. Что сделаешь первым?

  • Архиву самому нужно место, а освободится не больше, чем образ занимает по du. Сначала узнай это число: du -h vm.img.

  • У файла один inode при любом размере. df -i поможет, когда кончились записи о файлах, а здесь вопрос в блоках.

  • Размер учитывает и участки, куда ничего не записывали. Сколько места образ занимает на самом деле, покажет du -h vm.img — у разреженного образа это может быть пара гигабайт.

Размер из ls -l учитывает и незаписанные участки разреженного файла, занятое место показывает du. Сравни du -h vm.img и du -h --apparent-size vm.img: вторая команда вернёт логический размер.

Главное в шаге

  • Размер файла, выделенные ему блоки и его inode — три разные величины, stat показывает все три.
  • Пустой файл расходует inode почти без блоков; у разреженного размер больше выделенного места.
Ubuntu 24.04
Загрузка…