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?

misterben
fonte

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.

Stefano Palazzo
fonte
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

karthick87
fonte
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.

binW
fonte
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.

cheryljosie
fonte