Existe um limite de hardlinks para um arquivo?

23

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

    
por Maciej Piechotka 10.01.2011 / 17:38

3 respostas

15

Posix exige que o sistema operacional entenda o conceito de hard links, mas não que hard links possam ser usados em qualquer circunstância particular. Você pode descobrir quantos hard links 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 é bastante sem sentido como 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 desse campo fornece um limite superior no seu sistema. Mas há uma boa chance de que você nunca consiga 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 links de 16 bits nas estruturas de dados do kernel).

    
por 10.01.2011 / 20:23
10

Olhando para o formato de disco da estrutura in3 do 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 */

}

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

Eu não verifiquei os valores de outros sistemas de arquivos.

    
por 10.01.2011 / 18:55
10

Isto depende do sistema de arquivos.

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

ext4 source linha 643, struct ext4_inode - > __le16 i_links_count

    
por 10.01.2011 / 18:46