it-swarm-pt.tech

Existe um limite de hardlinks para um arquivo?

Existe um limite de número de hardlinks para um arquivo? Está especificado em algum lugar? Quais são os limites de segurança para Linux? E o que acontece com outros sistemas POSIX?

25
Maciej Piechotka

Posix requer que o sistema operacional entenda o conceito de hard links, mas não que os hard links possam realmente ser usados ​​em qualquer circunstância particular. Você pode descobrir quantos links físicos são permitidos em um determinado local (isso pode variar de acordo com o tipo de sistema de arquivos) chamando pathconf(filename, _PC_LINK_MAX). O limite mínimo (_POSIX_LINK_MAX) É 8, mas isso não faz sentido, pois link() pode relatar muitos outros erros de qualquer maneira (permissão negada , disco cheio, …).

A estrutura stat armazena a contagem de links em um campo do tipo nlink_t , portanto, o tipo deste campo fornece um limite superior para o seu sistema. Mas há uma boa chance de você nunca conseguir chegar tão longe: é comum ter um nlink_t De 32 bits, mas apenas 16 bits em muitos sistemas de arquivos (um grep rápido na fonte do Linux mostra que ext [234 ], NTFS, UFS e XFS usam contagens de link de 16 bits nas estruturas de dados do kernel).

17

Depende do sistema de arquivos.

o limite ext2/3/4 é de 65k links

fonte ext4 linha 643, struct ext4_inode -> __le16 i_links_count

11
shellholic

Olhando para o formato de disco da estrutura do inode ext3 nas fontes do kernel do Linux (* include/linux/ext3_fs.h *) que lista a contagem de links como sendo um número de 16 bits

struct ext3_inode {
    ... snip ...
    __le16  i_links_count;  /* Links count */

}

Acho que isso significa que um sistema de arquivos ext3 pode ter até 65535 links.

Não verifiquei os valores de outros sistemas de arquivos.

10
Richm