Хорошо известно, что пустые текстовые файлы имеют нулевые байты:
Тем не менее, каждый из них содержит метаданные , которые, согласно моим исследованиям, хранятся в inode и используют пространство .
Учитывая это, мне кажется логичным, что можно заполнить диск, просто создав пустые текстовые файлы. Это верно? Если да, сколько пустых текстовых файлов мне нужно будет заполнить, скажем, 1 ГБ?
Чтобы выполнить некоторые проверки, я запускаю, df -i
но это, по-видимому, показывает% используемых инодов (?), А не их вес.
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 947470 556 946914 1% /dev
tmpfs 952593 805 951788 1% /run
/dev/sda2 28786688 667980 28118708 3% /
tmpfs 952593 25 952568 1% /dev/shm
tmpfs 952593 5 952588 1% /run/lock
tmpfs 952593 16 952577 1% /sys/fs/cgroup
/dev/sda1 0 0 0 - /boot/efi
tmpfs 952593 25 952568 1% /run/user/1000
/home/lucho/.Private 28786688 667980 28118708 3% /home/lucho
disk-usage
inode
file-metadata
luchonacho
источник
источник
Ответы:
Эти выходные данные предлагают в
28786688
целом inode, после чего/dev/sda2
будет возвращена следующая попытка создать файл в корневой файловой системе (устройстве )ENOSPC
(«На устройстве не осталось места»).Объяснение: в исходном проекте файловой системы * nix максимальное число inode устанавливается во время создания файловой системы. Выделенное пространство выделено для них. Вы можете исчерпать inode прежде, чем вы исчерпаете пространство для данных, или наоборот. Наиболее распространенная файловая система Linux по умолчанию
ext4
все еще имеет это ограничение. Информацию о размерах inode в ext4 смотрите на странице man для mkfs.ext4.Linux поддерживает другие файловые системы без этого ограничения. На
btrfs
, пространство распределяется динамически. «Структура inode относительно мала и не будет содержать данных встроенного файла или данных расширенного атрибута». (ext3 / 4 выделяет некоторое пространство внутри inode для расширенных атрибутов ). Конечно, вы все еще можете исчерпать место на диске, создав слишком много метаданных / каталогов.Размышляя об этом, tmpfs является еще одним примером, когда inode распределяются динамически. Трудно понять, какое максимальное число inode, о которых сообщается,
df -i
будет фактически означать на практике для этих файловых систем. Я бы не придавал никакого значения показанному значению.«XFS также динамически распределяет inode. Так же, как и JFS. То же самое делал / делает reiserfs. Как и F2FS. Традиционные файловые системы Unix распределяют inode статически во время mkfs, как и современные FS, такие как ext4, которые отслеживают свое наследие, но в наши дни это так. исключение, а не правило.
«Кстати, XFS позволяет вам установить ограничение на максимальный процент пространства, используемого inode, поэтому вы можете исчерпать inode до того, как вы не сможете добавить к существующим файлам. (По умолчанию 25% для FS до 1 ТБ, 5% для файловых систем до 50 ТБ, 1% для более крупных.) В любом случае, это использование пространства для метаданных (иноды и карты экстентов) будет отражаться в регулярной форме
df -h
"- Питер Кордес в комментарии к этому ответуисточник
28786688-667980=28118708
пустые файлы, у меня фактически закончатся inode и "сломается моя система"?df -h
экстентов ) будет отражаться в регулярном @luchonacho.Создание пустых файлов включает в себя следующее:
Количество доступных inode часто определяется при создании файловой системы и не может быть изменено (некоторые файловые системы, такие как Btrfs или XFS, выделяют inode динамически). Вот что измеряется
df -i
. Когда у вас заканчиваются inode, вы не можете создавать новые файлы или каталоги, даже если у вас есть свободное место на диске.Записи каталога также занимают место из доступного дискового пространства. Это можно увидеть, посмотрев на размер каталога: он всегда кратен размеру блока, а когда в каталоге содержится много файлов, его размер увеличивается. Если у вас заканчивается свободное место на диске, вы не сможете создавать новые файлы или каталоги в каталоге, который «заполнен» ( т. Е. Когда добавление нового файла будет связано с выделением нового блока), даже если у вас есть доступные inode.
Так что да, можно использовать свободное место на диске, используя только пустые файлы.
источник
Аргумент чистой логики:
Имя файла состоит из ненулевого количества байтов. Даже при теоретическом максимальном сжатии в гипотетической файловой системе, разработанной для обеспечения абсолютного максимального количества имен файлов, каждое имя файла все равно будет занимать как минимум один бит где-то на вашем физическом диске. Возможно, больше, но «1 бит на файл» - это тривиальный минимум.
Подсчитайте количество битов, которое может уместиться на ваших пластинах, и это теоретическое максимальное количество (пустых или непустых) файлов, которые вы можете сохранить на нем.
Итак, ответ - да. В конце концов, вам не хватит места, независимо от того, какое хранилище вы используете, если вы продолжите добавлять пустые файлы. Очевидно, что у вас закончится намного раньше, чем рассчитанный таким образом максимум, но у вас все закончится.
источник
Просто нет, но вы можете исчерпать иноды на linux, которые будут такими же, как и нехватка места.
вы можете попробовать что-то вроде этого в вашей оболочке
n=0; while :; do touch $n; let n=n+1; done
Просто запустите его на виртуальной машине, иначе у вас не будет inode.
источник
rm -fr inodetest
чтобы избавиться от всех этих пустых файлов и снова нормально работать. :)Вы не можете заполнить диск, создав пустые файлы - на диске все равно будет достаточно места для новых файлов. Но да, вы можете исчерпать ограниченный запас бесплатных inode файловой системы - и в этот момент вы не можете создавать новые файлы (даже если ваш диск - по мере использования используемого пространства - практически пуст). Это всего лишь список инодов файловой системы, который использовался, а не диск ... поэтому файловая система заполнена, а диск практически пуст. Таблица inode использует пространство на диске, но таблица не увеличивается при добавлении файлов - точно так же, как лист бумаги не увеличивается, когда вы пишете по строкам.
(ответ в комментарии Баарда Копперуда)
источник