Файл - это (примерно) три отдельные вещи:
Когда вы создаете пустой файл, вы создаете только inode и запись каталога, указывающую на этот inode. То же самое для разреженных файлов (dd if=/dev/null of=sparse_file bs=10M seek=1
).
Когда вы создаете жесткие ссылки на существующий файл, вы просто создаете дополнительные записи в каталоге, которые указывают на тот же inode.
Здесь я все упростил, но вы поняли идею.