Обе опции требуют добавления записи файла в индекс каталога, структура каталога может увеличиваться за счет выделения новых блоков.
Но символьная ссылка требует выделения inode, а файловая система имеет ограничение для inode. Ваши символические ссылки сотни тысяч могут достичь этого предела, и вы можете получить сообщение об ошибке "Недостаточно места для файла" даже при отсутствии гигабайт.
По умолчанию инструмент создания файловой системы выбирает максимальное число inode в соответствии с размером физического раздела. Например, для Linux ext2 / 3/4, mkfs.ext3
использует соотношение bytes-per-inode
, которое вы можете найти в вашем /etc/mke2fs.conf
.
Для существующей файловой системы, вот команда для получения информации об inode:
# dumpe2fs /dev/sda1 | grep -i inode | less
Inode count: 979200
Free inodes: 742304
Inodes per group: 16320
Inode blocks per group: 510
First inode: 11
Inode size: 128
Journal inode: 8
First orphan inode: 441066
Journal backup: inode blocks
В заключение следует предпочесть жесткие ссылки в основном для потребления ресурсов на диске и в памяти (структуры VFS в кешах).
Еще один совет: не создавайте слишком много файлов в одном и том же каталоге, 2 000 файлов - разумный предел, чтобы избежать проблем с производительностью.