O POSIX limita o número de diretórios na raiz do sistema operacional?

12

Estou tentando aprender o padrão POSIX. Ao usar Unix, eu /bin, /etc, /dev, /media, e, geralmente /opt, mas é que padronizado ou até sua implementação especificação? Poderia haver muitos diretórios na raiz ou é limitado pelo padrão?

Niklas
fonte
3
O POSIX não toca nessa área.
Thomas Dickey

Respostas:

17

De acordo com o padrão publicado do The Open Group , os únicos diretórios necessários são:

  • /
  • /dev, Que contém console, nulletty
  • /tmp, gravável garantido, mas não necessariamente preservado.

A Linux Foundation mantém um FHS (File System Hierarchy Standard ) que o estende para incluir os diretórios que você normalmente verá em um sistema Linux:

  • /bin: Binários essenciais de comando do usuário
  • /boot: Arquivos estáticos do gerenciador de inicialização
  • /dev: Arquivos de dispositivo
  • /etc: Configuração do sistema específica do host
  • /home: Diretórios pessoais do usuário (opcional)
  • /lib: Bibliotecas compartilhadas essenciais e módulos do kernel
  • /lib<qual>: Bibliotecas compartilhadas essenciais de formato alternativo (opcional)
  • /media: Ponto de montagem para mídia removível
  • /mnt: Ponto de montagem para um sistema de arquivos montado temporariamente
  • /opt: Pacotes de aplicativos complementares
  • /root: Diretório inicial para o usuário root (opcional)
  • /run: Dados variáveis ​​em tempo de execução
  • /sbin: Binários do sistema
  • /srv: Dados para serviços fornecidos por este sistema
  • /tmp: Arquivos temporários
  • Bem como a /usrhierarquia e a /varhierarquia

O ESF foi projetado para ser o mais genérico possível, para permitir a incorporação em qualquer sistema UNIX. É provável que os diretórios adicionais existam em qualquer sistema razoável, mas isso não é obrigatório pelo POSIX.

No entanto, observe que o The Open Group também afirma que

Aplicativos estritamente conformes não devem assumir a capacidade de criar arquivos em nenhum desses diretórios, a menos que especificado abaixo.

Como os diretórios são realmente apenas arquivos, isso implica que um aplicativo estritamente conforme não criará nenhum arquivo ou diretório no nível raiz. Portanto, o POSIX não limita necessariamente o que uma distribuição pode colocar no nível raiz, mas parece afirmar que um aplicativo em conformidade com sua especificação não pode assumir que será capaz.

Raposa
fonte
5
A questão não era quais diretórios são padrão , mas perguntou se havia um limite . O POSIX não responde a essa pergunta.
Thomas Dickey
Ele adiciona uma opinião sem apontar para uma cotação do POSIX.
Thomas Dickey
O último parágrafo é o que me referi: "parece afirmar". O POSIX evita mencionar um limite nessa área, concentrando-se no que é comum, e não nas diferenças.
Thomas Dickey
1
Obrigado Fox. Sua resposta foi a informação que eu estava procurando.
Niklas
13

Na 10.1 Estrutura e arquivos de diretórios, o POSIX lista os diretórios que devem existir. Mas não especifica limite para o número de outros diretórios que podem existir no nível raiz de um sistema de arquivos.

Por esse motivo, não parece colocar limites no tamanho de outros diretórios.

A atenção do POSIX nesta área está focada na comunalidade e não nas diferenças.

Thomas Dickey
fonte
Como em um sistema * nix potencialmente, todos os diretórios (inclusive /) podem ser um diretório raiz, seria muito tolo impor um limite superior ao número de entradas em um diretório raiz. /não é particularmente especial nesse sentido, portanto, seria igualmente tolo impor um limite superior ao número de entradas /especificamente.
a CVn
8

Não há limitação para o número de entradas em um diretório, nas implementações POSIX ou Unix típicas. Pode haver um limite indireto para o número de subdiretórios, que é a contagem máxima de links físicos (a ..entrada de cada subdiretório é um link físico para o diretório); são 2 16 para muitos sistemas de arquivos comuns, o que limita um diretório a 65533 subdiretórios (pelo menos para os sistemas de arquivos que armazenam ..entradas explicitamente). Você começará a ter um desempenho ruim antes disso. De acordo com o POSIX, uma implementação é permitida para suportar apenas 8 links físicos em um arquivo ( _POSIX_LINK_MAX), mas nenhuma implementação real é limitada a 6 subdiretórios. De qualquer forma, em muitos sistemas de arquivos, incluindo ext4, a contagem de links físicos não é mantida por.. entradas, portanto, o único limite é quanto espaço ou quantos inodes estão disponíveis no sistema de arquivos.

O POSIX não fala muito sobre a organização dos arquivos no sistema. Ele apenas exige a existência de alguns arquivos . As únicas entradas obrigatórias no diretório raiz são /deve /tmp. Outras entradas Unix habituais, tais como /usr, /var, /bin, /etc, /lib, /home, etc, são Unix convenções que não são codificados pelo POSIX.

No Linux, o FHS codifica os clássicos e mais alguns. A maioria das distribuições Linux se atém às entradas do FHS. Outros sistemas Unix geralmente têm as mesmas entradas, talvez com algumas diferenças, mas o número é aproximadamente o mesmo.

Os administradores de sistema podem criar mais, embora isso seja desencorajado: há lugares bem definidos para a maioria das coisas (software fica abaixo /usrou abaixo /opt, dados do sistema ficam abaixo , /vardados do usuário /netficam abaixo , dados do usuário ficam abaixo , pontos de montagem ficam abaixo /mediaou /mntetc.), então raramente há qualquer bom motivo para criar novos diretórios no nível superior.

Gilles 'SO- parar de ser mau'
fonte
Isso não está correto. A maioria dos sistemas de arquivos "razoáveis" possui um número máximo de subdiretórios por diretório ou um número máximo de inodes por dispositivo. No entanto, geralmente é obscenamente grande em relação ao número de diretórios que você provavelmente verá na raiz da unidade.
Kevin
@ Kevin Oh, bom ponto, em sistemas de arquivos comuns, você alcançaria primeiro a contagem máxima de links físicos, e isso poderia ser tão baixo quanto 16 bits.
Gilles 'SO- stop be evil'
@ Kevin Embora esse não seja o caso no ext4, não parece haver um limite no número de subdiretórios que não sejam o espaço disponível (blocos ou inodes). Você estava pensando em algum outro limite no número de subdiretórios por diretório?
Gilles 'SO- stop be evil'
Um sistema de arquivos projetado adequadamente não cria links físicos para as entradas do diretório ... Em um sistema de arquivos projetado adequadamente, a contagem de links de um diretório é 1, a menos que haja links físicos criados manualmente.
schily
1
Não, não existe esse limite em um sistema de arquivos 100% compatível com POSIX. Como já mencionado, o POSIX não requer. e .. ser hardlinks para outros diretórios. Se estiverem, esse é um detalhe de implementação resultante dos hacks introduzidos no sistema de arquivos V7. Existem outros sistemas de arquivos compatíveis com POSIX que funcionam completamente diferentes.
schily
2

ao contrário do FAT, os sistemas de arquivos usados ​​pelo UNIX não têm um limite de tamanho especial no diretório raiz, mas quando a partição estiver cheia, você não poderá adicionar mais.

Jasen
fonte