links simbólicos no armazenamento compartilhado

links simbólicos no armazenamento compartilhado

Digamos que eu tenha uma montagem glusterfs compartilhada entre vários servidores, que é acessada por um aplicativo, e os logs são gravados em um diretório que normalmente estaria na árvore de diretórios desse ponto de montagem. (digamos que /foo é nosso armazenamento compartilhado montado e /foo/bar é o diretório onde os logs são gravados) Para evitar que todos os servidores tentem gravar no mesmo arquivo de log, quero fazer de /foo/bar um link simbólico para outro diretório local, /var/bar. É possível criar links simbólicos locais em uma montagem de armazenamento compartilhado? E esses links simbólicos poderiam ser mapeados em outros servidores que acessam esse armazenamento? Ou, se não, existe outra maneira de contornar isso, como dispositivos de loop? Suponha que não seja possível alterar o diretório no qual os logs são gravados.

Responder1

Se o sistema de arquivos suportar links simbólicos, então os links simbólicos (de acordo com o padrão POSIX) serão interpretados no cliente, não no servidor. Portanto, você deve ser capaz de criar links simbólicos para outros sistemas de arquivos de forma confiável em qualquer sistema Unix ou semelhante ao Unix, como o Linux.

Por exemplo:

/foo        A gluster remote file system
/var        A local file system

Se /foo/barfor um link simbólico para /var/log/myhostcada máquina que grava em /foo/bar gravará no /var/log/myhost local nessa máquina.

Porém se /var/lognão existir, a gravação falhará com uma mensagem de erro que irá surpreendê-lo. (tente) Então, certifique-se de /var/logque existe. Isso não é um problema, pois /var/logé criado no momento da instalação na maioria dos sistemas. No entanto, e se o link fosse para /var/log/dirname/filename.txtlá, há uma boa chance de que /var/log/dirnameainda não exista. Já me deparei com esse problema antes.

(Acho que há exemplos disso no Capítulo 28 de The Practice of System and Network Administration, onde há recomendações para vincular a /etc/ a partir de sistemas de arquivos em rede.)

Então, sim, você pode fazer isso com links simbólicos. No entanto, você pode confundir colegas de trabalho. É possível dizer ao software para apenas escrever /var/log/foo? Será menos confuso e mais sustentável. Vocês, colegas de trabalho, vão agradecer.

Responder2

Depende do sistema de arquivos compartilhado. Mas, em geral, se o FS remoto suportar links simbólicos, funcionará. Posso fazer um link simbólico no volume do gluster e está ok (testado).

Responder3

Talvez você queira configurar links simbólicos como este?

/foo      - Gluster mountpoint
/var/log  - local filesystem mountpoint

Um serviço no servidor local está configurado para fazer login /foo/log/app.log. E esse /foo/logdiretório deve ser por servidor, mas também localizado no volume Gluster para que outros possam inspecionar o log quando necessário.

Para isso, sugiro criar dois links simbólicos. Em cada servidor:

# mkdir /foo/logs/$(hostname)
# ln -s /foo/logs/$(hostname) /var/log/app

E no volume Gluster (necessário apenas uma vez):

# ln -s /var/log/app /foo/log

Quando um aplicativo grava em /foo/log/app.log, o link simbólico /foo/logé resolvido em /var/log/app. Agora, /var/log/appé um link simbólico no sistema de arquivos local de cada servidor, e cada servidor aponta para um diretório diferente no volume Gluster. Portanto, /var/log/appaponta para /foo/logs/server1.example.comum servidor e para /foo/logs/server2.example.comoutro.

/foo/log/app.log -> /var/log/app/app.log -> /foo/logs/server1.example.com/app.log

informação relacionada