Qual processo está acessando um sistema de arquivos montado esporadicamente?

5

Eu tenho um servidor Solaris 10 com diretórios iniciais montados no autofs. Em um servidor, eles não são desmontados após o período de tempo limite de 10 minutos. Temos AUTOMOUNT_TIMEOUT=600 em /etc/default/autofs , corri automount -t 600 , desativei e reativei svc:/system/filesystem/autofs:default service e nada parece funcionar.

Minha suspeita é que algo no sistema está acessando periodicamente todos os sistemas de arquivos montados, talvez verificando se eles estão acessíveis, e assim redefinindo o tempo limite do automounter que nunca expira. Isto é suportado por um teste que acabei de fazer - se eu definir o tempo limite para 10 segundos, os pontos de montagem são desmontados, parece que 10 segundos é menor que o período em que isso algo está fazendo as verificações e o temporizador tem a chance de expirar.

A questão é como posso encontrar o processo que está fazendo isso? O servidor é um sistema de produção muito usado e não posso fazer experimentos perigosos.

Note que os sistemas de arquivos não são mantidos abertos e podem ser manualmente desmontados. Esse algo provavelmente está indo para o ponto de montagem por ponto de montagem, cd in, cd out, continue, muitas vezes o suficiente para evitar que automount o desmonte. Mas não o mantém aberto e, portanto, não é visível com lsof ou fuser -c . Eu quero pegá-lo ou gravá-lo assim que ele acessar os pontos de montagem para saber o que está acontecendo.

FWIW é uma zona do Solaris 10 em um host do Solaris 10 bastante robusto (Sparc / M5000).

    
por MLu 11.07.2013 / 02:52

3 respostas

4

Você pode tentar o rwsnoop ( link ) para monitorar o acesso de E / S usando o dtrace:

# rwsnoop - snoop read/write events.
#           Written using DTrace (Solaris 10 3/05).
#
# This is measuring reads and writes at the application level. This matches
# the syscalls read, write, pread and pwrite.

boa sorte!

    
por 11.07.2013 / 08:57
2

Você pode usar a ferramenta lsof para determinar qual processo está acessando um determinado arquivo no sistema de arquivos. Nesse caso, você pode usá-lo para detectar qual processo está acessando o ponto de montagem do automount.

Exemplo

Eu tenho o seguinte automount para meu diretório /vz_backups :

$ showmount -e krycek
Export list for krycek:
/export/raid1/vz_backups 192.168.1.0/24

Agora crie um cd para uma monta automática no ponto de montagem:

$ cd /vz_backups/images

Veja que montamos:

$ mount | grep /vz
krycek:/export/raid1/vz_backups/images on /vz_backups/images type nfs (rw,intr,tcp,rsize=16384,wsize=16384,addr=192.168.1.4)

Você pode então interrogar os acessos a arquivos usando lsof :

$ lsof -l | grep /vz
automount  3359        0   16r      DIR       0,24           0      11960 /vz_backups
bash      28635        0  cwd       DIR       0,30        4096    2981890 /vz_backups/images (krycek:/export/raid1/vz_backups/images)
lsof      31040        0  cwd       DIR       0,30        4096    2981890 /vz_backups/images (krycek:/export/raid1/vz_backups/images)
grep      31041        0  cwd       DIR       0,30        4096    2981890 /vz_backups/images (krycek:/export/raid1/vz_backups/images)
lsof      31042        0  cwd       DIR       0,30        4096    2981890 /vz_backups/images (krycek:/export/raid1/vz_backups/images)

Agora cd fora desse diretório para que nada esteja acessando e espere o tempo limite do automount, ou manualmente umount e, em seguida, verifique novamente:

$ cd ~
$ umount /vz_backups/images

$ lsof -l | grep /vz
automount  3359        0   16r      DIR       0,24           0      11960 /vz_backups

Referências

por 11.07.2013 / 05:30
0

Você provavelmente tem um software de monitoramento em execução que executa o comando 'df' em um intervalo menor que o tempo limite do automounter. No Solaris, a chamada do sistema statvfs marca um sistema de arquivos como em uso. Solução: use df -l .

    
por 03.11.2014 / 16:19