Onde no sistema de arquivos devo armazenar dados compartilhados?


44

Onde, no sistema de arquivos unix, é o local convencional para salvar dados não específicos do usuário, por exemplo, dados compartilhados via nfs ou ftp ou backups?

Obviamente, eu poderia criar e usar qualquer pasta arbitrária (como / home / shared, / data ou / var / data), mas estou realmente me perguntando se existem diretrizes de práticas "melhores" ou "comuns". O padrão de hierarquia do sistema de arquivos não especifica um local para dados compartilhados.

Para backups, eu costumo usar / var / backups, mas como vários cronjobs escrevem, ele deve ser deixado para seu uso?

Respostas:


29

Esta questão não parecem ter uma resposta clara no Filesystem Hierarchy Standard , que especifica /srvcomo "conter [ndo] dados específicos do local que é servido por este sistema" . (3.16.1)

O objetivo principal de especificar isso é para que os usuários encontrem o local dos arquivos de dados para um serviço específico e para que serviços que exijam uma única árvore para dados somente leitura, dados graváveis ​​e scripts

(minha ênfase)

Nota: 'Servido pelo sistema' não se refere necessariamente à Internet. Nem precisa significar uma rede. É aplicável até mesmo a um sistema compartilhado. Além disso, as palavras site e serviço devem ser entendidas em seus significados pré-internet. Seu site pode ser "o departamento de física" ou "o escritório de finanças".

Continua dizendo:

Em sistemas grandes, pode ser útil estruturar / srv por contexto administrativo, como / srv / physics / www, / srv / compsci / cvs, etc. Essa configuração será diferente de host para host. Portanto, nenhum programa deve confiar em uma estrutura de subdiretório específica de / srv existente ou em dados necessariamente sendo armazenados em / srv. No entanto, / srv sempre deve existir em sistemas compatíveis com FHS e deve ser usado como o local padrão para esses dados.

Portanto, você deve estruturar ainda mais seus dados em diretórios como /srv/nfs, /srv/backupetc.

Também devo mencionar que poucas pessoas fazem mais isso. Mas não há uma boa razão para que eles não o façam. O padrão não está desatualizado.

/varé tradicionalmente usado para coisas como spools de impressão e arquivos de log, mas também é usado pelo servidor web Apache (de qualquer maneira nos sistemas Debian - SUSE use / srv); Parece não haver consenso sobre se /varé um diretório adequado para dados compartilhados. Mas se você decidir usá-lo, não terá arrependimentos, tenho certeza.

Observe também: a resposta de Karthick não está de maneira alguma errada. A ESF diz que / srv "deve ser usado como o local padrão para esses dados", mas o padrão deixa espaço para sua preferência, dependendo de como você interpreta os termos.


4
Note que o Debian (e Red Hat) começaram a colocar os arquivos do Apache /var/www, antes /srv/fazia parte da ESF.
— precisa saber é o seguinte

Uma boa explicação, obrigado, embora pareça que a resposta para a pergunta seja "não existe realmente um padrão que seja realmente seguido". Talvez devesse haver, talvez isso realmente não importe.
— misterben

Bem, você sempre deve quebrar as regras quando tiver um bom motivo para fazê-lo. Mas estimo que esse padrão seja seguido meticulosamente em muitas implantações em larga escala.
— Stefano Palazzo

As pessoas que desejam mudar para um padrão comum devem achar essa resposta inequivocamente correta com base na ESF.
— Jeremy

13
  • Dados não específicos do usuário podem ser armazenados em / usr / local / var, para que não acabem em um novo compartilhamento de trabalho.
  • Qualquer coisa que não esteja em ../local/ .. pode terminar em um compartilhamento nfs; portanto, se você deseja baixar dados de um compartilhamento nfs, verifique se eles estão armazenados localmente no disco rígido da máquina.
  • Então você deve escolher um caminho com ... / local / .. nele .... o resto depende da natureza dos dados, do tipo dos dados. Pode ser / local / var ou / local / tmp etc .

Hierarquia do sistema de arquivos:
texto alternativo

Também dê uma olhada neste


1
Embora essa seja uma representação útil da ESF, ainda não sugere um local padrão para um armazenamento de dados compartilhado.
— misterben

O FSH afirma que: / usr é compartilhável, dados somente leitura. Isso significa que / usr deve ser compartilhável entre vários hosts compatíveis com FHS e não deve ser gravado . Hmmm, parece depender do objetivo da sua parte.
— Htc #

@htorque Estou inclinado a pensar que em algum lugar em / var é mais apropriado para um compartilhamento de arquivos, como você sugeriu na sua resposta (agora excluída).
— misterben

1
Excluí minha resposta, porque o ESF também declara que: Geralmente, os aplicativos não devem adicionar diretórios ao nível superior de / var. Esses diretórios devem ser adicionados apenas se tiverem alguma implicação em todo o sistema e em consulta com a lista de discussão da ESF. - a ESF simplesmente não quer que você compartilhe dados (graváveis)! : P
— htorque

Obrigado, uma visão geral útil e, como a outra resposta, realmente serve para documentar que não há uma resposta definitiva, que é útil por si só.
— misterben

5

Eu não acho que o FHS define qualquer lugar para dados compartilhados do usuário. Cabe aos usuários onde eles desejam armazenar os dados compartilhados. Eu costumo usar /usr/local/sharedou /home/shared.


1

Eu já vi /exportusado para servir com nfs e /mntmontar um compartilhamento nfs localmente, em um ambiente corporativo, conforme sugerido na documentação do NFS, um padrão que eu suspeito originalmente ter vindo do Sun OS, depois renomeado para Solaris.

O /etc/exportsarquivo nomeia os volumes exportados e o /exportsdiretório os serve para usuários remotos, que os montam /mnt. O host do servidor também pode montar esses mesmos compartilhamentos /mntusando o mesmo daemon nfs para o uso de quaisquer clientes ou processos em execução localmente no servidor, para manter a compatibilidade com quaisquer hosts remotos e talvez manter a funcionalidade de nivelamento de carga, cotas etc.

Isso é o mais próximo possível de um "padrão". Observe que , portanto, /exportnão está na ESF, /exportfoi adicionado de forma independente; portanto, presumivelmente, ninguém está satisfeito /srv. Provavelmente por causa de uma potencial confusão com 'serviços' sendo executados como daemons, em vez de volumes 'servidos'. /exporté nomeado sem ambiguidade, com poucas chances de confusão. Eu nunca vejo nada /srv.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.