
Я хотел бы посчитать или оценить, сколько места на диске могут занять, скажем, 1000 пустых папок или 1000 пустых файлов на Linux. Можете ли вы дать мне оценку, сколько места на диске это займет?
решение1
Каждая папка будет занимать 1 блок изначально, плюс любые данные, содержащиеся в записи каталога внутри Linux. Размер блока будет варьироваться от файловой системы к файловой системе. Чтобы проверить размер блока, вы можете запуститькоманда blockdev.
Согласно документации GNU, запись каталога содержит следующее:
char d_name[] Это компонент имени файла с нулевым окончанием. Это единственное поле, на которое вы можете рассчитывать во всех системах POSIX.
ino_t d_fileno Это серийный номер файла. Для совместимости с BSD вы также можете ссылаться на этот элемент как на d_ino. В системах GNU/Linux и GNU/Hurd, а также в большинстве систем POSIX для большинства файлов это то же самое, что и элемент st_ino, который stat вернет для файла. См. Атрибуты файлов.
unsigned char d_namlen Это длина имени файла, не включая завершающий нулевой символ. Его тип — unsigned char, поскольку это целочисленный тип соответствующего размера. Этот член является расширением BSD. Символ _DIRENT_HAVE_D_NAMLEN определяется, если этот член доступен.
unsigned char d_type Это тип файла, возможно неизвестный. Для его значения определены следующие константы:
DT_UNKNOWN Тип неизвестен. Только некоторые файловые системы имеют полную поддержку для возврата типа файла, другие могут всегда возвращать это значение.
DT_REG Обычный файл.
DT_DIR Каталог.
DT_FIFO Именованный канал, или FIFO. См. Специальные файлы FIFO.
DT_SOCK Сокет локального домена.
DT_CHR Символьное устройство.
DT_BLK Блочное устройство.
DT_LNK Символическая ссылка.
Всего это 3 строки символов. Их размер будет зависеть от длины имени.
Кроме того, необходимо учитывать код разрешений, который займет еще около байта.
Добавьте размер блока (обычно по умолчанию 4 КБ) и сложите итог.
Если мы создадим SWAG, в котором общий объем данных составит 5 КБ, то общий объем занятого пространства составит примерно 5000 КБ.
Я попробовал это на своем сервере RHEL, и пустая папка увеличила использование диска на 4 килобайта. Это представляет собой пространство, зарезервированное папкой, и напрямую выводится из размера блока, используемого в файловой системе. Поскольку я использую блоки по 4 Кб, 4 Кб было зарезервировано файловой системой.
Для тестирования на вашем собственном сервере:
из командной строки выполните: df -hk
Обратите внимание на числовое значение в столбце «ДОСТУПНО».
mkdir "что угодно"
Запустите df -hk еще раз и обратите внимание на разницу.